草庐IT

狂飙的计算机:百万CPU集群作战!强悍的超级计算机……

栾春阳 2023-03-28 原文
每当新款的智能手机或者家用电脑发布时,人们讨论最多的话题总是离不开中央处理器(CPU)的运算性能以及散热问题。可能我们并不清楚电子设备的CPU内部具体的计算架构,但却可以真切地感受到CPU运算能力的提升给我们生活、工作带来的巨大改变。

实际上,小到我们中学时期经常使用的科学计算器,大到现在日常办公必备的笔记本电脑,这些具备数据处理能力的电子设备都可以统称为电子计算机。

那么,在经典计算机的基础上,有没有更快、更强的计算机呢?

“0”与“1”组成的奇妙世界

当我们每次按下手机按键或者电脑键盘的时候,这些字符或者信息首先需要被转化为电子计算机能够处理的编码:0或者1的排列组合。

例如,根据ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)的字符编码,英文字母K被编码为“01001011”。而当经过电子计算机CPU的运算处理后,一串0或1编码的信息又可以转化成我们认识的字母或者图片呈现在眼前。

在电子计算机的CPU中,电子晶体管可以作为0或者1进行数值运算的基本单元,此时电子晶体管的通路可以代表数值1,断路就代表数值0,而当数以百万计的电子晶体管及其他电子元件通过超大规模集成电路工艺被封装在一小块半导体晶片上时,这种具备数据处理能力并且被微型封装的集成电路一般简称为“芯片”。

16核不够用?那就再多“亿”点!

然而,随着生活和工作中数据处理任务的不断增加,电子设备上CPU单一核心的运算能力往往很难达到需求,这时候我们可以在CPU上集成多个运算核心,从而保证多个核心可以同时独立地处理数据任务。

现在常见的商用计算机一般是采用8核CPU,甚至某些用以处理大型计算任务的工作站会拥有16核CPU。

但即使这样高性能的计算机也难以满足越来越复杂的计算需求,以我们常见的天气预报为例,计算机需要将特定区域的大气层离散成网格进行数值模拟,而如果要达到对未来3天的准确度达到90%以上的气象预测,则需要高达百亿量级的浮点运算,如果普通商用计算机来计算的话,需要耗时至少半个月。

此外,大数据中心支持下的城市智能交通和在线云端计算都需要指数量级的数据处理能力,于是,人们开始着手将高达数百万的CPU互联起来协同工作,从而建造能够并行计算的“超级计算机”。

实际上,“超级计算机”并非单独一台拥有超级算力的计算机,而是超级计算机集群的简称。

也就是说,超级计算机集群的每个节点都是一台独立的计算机,它的“超级”之处在于自己内部存在独特的节点互联的结构,这样就可以同时调度所有节点上的成千上万颗CPU,并且每颗CPU内一般有几十个物理核心,从而拥有指数量级的数据处理能力。

但是,“超级计算机”并非全能型选手,它只对可并行运算的算法问题有强大的处理能力,却无法加速处理串行计算的数据任务,此外,“超级计算机”操作系统的任务调度策略和编译器的优化也极大影响了自身的性能表现。

这里的串行/并行运算任务可以这样通俗地理解:一堆土方原本需要1个人用10小时搬运完,同时也可以安排10个人用1小时搬完。

但是,如果遇到需要1个人花10小时挖一口只能容纳一人进行作业的井情况,就无法安排10个人在1小时内完成,这就是“超级计算机”也难以高效处理的串行运算任务。

因此,“超级计算机”并不是简单的CPU和运算核心的堆叠,其加速运算能力不仅仅依靠CPU核心之间的高度协同互联,还要优化数据处理任务的算法次序来充分调用每一颗CPU的运算潜能。

我们熟知的“神威·太湖之光”超级计算机共有40960颗CPU,并且其峰值的运算速度达到了12.54亿亿次/秒,并且持续计算的速度达到了9.3亿亿次/秒。

“神威·太湖之光”超级计算机助力清华大学、北师大以及中科院团队完成“全球大气非静力云分辨模拟”,并实现了全球10公里高分辨率的地球系统数值模拟,这一研究成果进一步增强了我国应对复杂气象条件下的自然灾害监测能力。

目前,“超级计算机”广泛运用于医药研发中的分子动力学模拟,电动汽车中的燃料电池设计,飞行器设计中的气动外形优化,核聚变领域中的约束装置边界稳定性计算,以及原子物理学中的量子力学技术等。

超级计算机,亦有局限

但是,“超级计算机”的建造不仅仅需要数十亿元的投入成本,还需要每日高达数十万元的电费支出。

此外,占据上千立方米的庞大体积以及复杂的水冷散热系统也限制了“超级计算机”的进一步发展。于是,人们开始重新思考如何让计算机在更小的体积和更低的功耗下实现更强的数据运算能力。

一个自然的想法是在同一块芯片上集成更多的晶体管,曾经作为英特尔创始人之一的戈登·摩尔就提出“摩尔定律”,即集成电路上的晶体管数目每经过18~24个月便会增加一倍,这样CPU的数据处理能力就会翻一番。

这就是为什么,即使我们现在千元价位的手机CPU也比十年前的商用电脑拥有更强的运算能力——因为晶体管密度增加了呀。

但是,“摩尔定律”并不能永远维持下去,原因之一是用于芯片微电路加工的光刻工艺已经逼近2~3nm的光学衍射极限,已经很难在保证芯片良品率的条件下进一步提高晶体管密度。

此外,随着晶体管尺寸的不断减小,电极间的漏电现象以及巨大的散热问题,也会导致芯片的性能失效。

面对这样的困境,难道说,我们的计算机技术发展到此就进入瓶颈了吗?别着急,在下篇文章中笔者自然会为大家揭晓答案。

有关狂飙的计算机:百万CPU集群作战!强悍的超级计算机……的更多相关文章

  1. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  2. 报告回顾丨模型进化狂飙,DetectGPT能否识别最新模型生成结果? - 2

    导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri

  3. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  4. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  5. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  6. arrays - 计算数组中的匹配元素 - 2

    给定两个大小相等的数组,如何找到不考虑位置的匹配元素的数量?例如:[0,0,5]和[0,5,5]将返回2的匹配项,因为有一个0和一个5共同;[1,0,0,3]和[0,0,1,4]将返回3的匹配项,因为0有两场,1有一场;[1,2,2,3]和[1,2,3,4]将返回3的匹配项。我尝试了很多想法,但它们都变得相当粗糙和令人费解。我猜想有一些不错的Ruby习惯用法,或者可能是一个正则表达式,可以很好地回答这个解决方案。 最佳答案 您可以使用count完成它:a.count{|e|index=b.index(e)andb.delete_at

  7. ruby-on-rails - 如何计算 Ruby/Rails 中 JSON 对象的数量 - 2

    Ruby中如何“一般地”计算以下格式(有根、无根)的JSON对象的数量?一般来说,我的意思是元素可能不同(例如“标题”被称为其他东西)。没有根:{[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]}根包裹:{"posts":[{"title":"Post1","body":"Hello!"},{"title":"Post2","body":"Goodbye!"}]} 最佳答案 首先,withoutroot代码不是有效的json格式。它将没有包

  8. ruby - 如何计算自 Ruby 中给定日期以来的周数? - 2

    目标我正在尝试计算自给定日期以来周的距离,而无需跳过任何步骤。我更喜欢用普通的Ruby来做,但ActiveSupport无疑是一个可以接受的选择。我的代码我写了以下内容,这似乎可行,但对我来说似乎还有很长的路要走。require'date'DAYS_IN_WEEK=7.0defweeks_sincedate_stringdate=Date.parsedate_stringdays=Date.today-dateweeks=days/DAYS_IN_WEEKweeks.round2endweeks_since'2015-06-15'#=>32.57ActiveSupport的#weeks

  9. 最新版人脸识别小程序 图片识别 生成二维码签到 地图上选点进行位置签到 计算签到距离 课程会议活动打卡日常考勤 上课签到打卡考勤口令签到 - 2

    技术选型1,前端小程序原生MINA框架cssJavaScriptWxml2,管理后台云开发Cms内容管理系统web网页3,数据后台小程序云开发云函数云开发数据库(基于MongoDB)云存储4,人脸识别算法基于百度智能云实现人脸识别一,用户端效果图预览老规矩我们先来看效果图,如果效果图符合你的需求,就继续往下看,如果不符合你的需求,可以跳过。1-1,登录注册页可以看到登录页有注册入口,注册页如下我们的注册,需要管理员审核,审核通过后才可以正常登录使用小程序1-2,个人中心页登录成功以后,我们会进入个人中心页我们在个人中心页可以注册人脸,因为我们做人脸识别签到,需要先注册人脸才可以进行人脸比对,进

  10. ruby - 如何计算两个字符串共有的字符数? - 2

    如何计算两个字符串之间的字符交集?例如(假设我们有一个名为String.intersection的方法):"abc".intersection("ab")=2"hello".intersection("hallo")=4好的,男孩女孩们,感谢你们的大量反馈。更多示例:"aaa".intersection("a")=1"foo".intersection("bar")=0"abc".intersection("bc")=2"abc".intersection("ac")=2"abba".intersection("aa")=2一些补充说明:维基百科定义intersection如下:Int

随机推荐