返回目录
关灯 护眼
加入书架

第435章 终究是钱的问题(1 / 2)

宋颜教授汇报完,其他单位依次汇报自己负责的技术方案,同时接受大家的质询。

硬件、存储、人机交互、电源、分离元器件……

不知不觉就到了中午,众人吃了点简餐,继续开会。

陈教授站起来,走到台上:“同志们,今天听了大家的方案,非常具有可行性,特别是宋教授的方案,非常好,但是我有一个问题,不是问宋教授,是问我们在座的每一个人。”

他转过身,重新挂上宋教授的那张系统框图。

“宋教授,这个方案,五十六个运算单元,是一个计算核心。对不对?”

宋颜点点头。

陈教授继续说:“那如果我们将来需要更大的算力呢?比如,魏知远教授的数字孪生,从现在的1024×1024网格,升级到2048×2048,甚至4096×4096。一个核心够不够?”

宋颜沉默了几秒:“不够。”

陈教授点点头:“那怎么办?重新设计一个更大的核心?112个单元?224个单元?”

他转过身,面对全场。

“同志们,我今天要提一个思路。不是否定宋教授的方案,是在这个方案的基础上,往前走一步。”

他拿起粉笔,在黑板上画了一个图。

一个圆圈,周围围着几个圆圈,都用线连到中心。

“这是宋教授的方案,星型拓扑,一个中心控制,七个运算芯片,这是一个计算节点。”

他又画了一个更大的图,中心一个大圆圈,周围围着几个小一点的圆圈,每个小圆圈周围又围着几个更小的圆圈。

“如果我们把宋教授的这个节点,看作一个单元。那么,我们能不能把多个这样的单元连接起来,构成一个更大的系统?”

他用教鞭指着那些圆圈。

“这是多核心并行系统。不是用一个核心算,而是用多个核心一起算。一个大的计算任务,切分成小块,分给不同的核心同时算。算完之后,把结果拼起来。”

他放下教鞭:“这个思路,在数学上,叫分而治之。在计算机领域,叫并行计算。”

台下安静下来。

陈教授继续说:“我刚才听宋教授讲的时候,一直在想一个问题。我们这个昆仑工程,目标是什么?是造一台机器,解决当前的问题?还是造一个平台,让后人能在这个平台上继续往前走?”

他看着全场:“我认为,应该是后者。”

“如果只是造一台机器,那宋教授的方案就够了。56个单元,够魏教授用几年。但几年之后呢?再从头开始,重新设计一个新核心?”

“如果我们要造的是一个平台,那就必须在今天的方案里,留下生长的余地。让后人可以通过连接多个核心,获得更大的算力。”

他指着黑板上的那个大图。

“这叫多核心并行。在这个架构里,宋教授的那个核心,只是一个子核心。上面还有一个全局管理核心,负责把任务切分、分发、协调、合并。”

“全局管理核心的功能是什么?第一,任务分发。把一个大的计算任务,比如1024×1024的矩阵乘法,切分成子任务,分配给各个子核心。第二,数据协调。确保所有子核心需要的数已经到位,算完之后的结果能正确合并。第三,状态监控。盯着所有子核心,谁出问题了,马上处理。”

他顿了顿:“这是第一层。当子核心的数量增加到几十个的时候,单一的全局管理核心会变成瓶颈。那时候,就需要层次化管理。子核心上面有机柜管理器,机柜管理器上面有系统总控。”

他放下教鞭:“同志们,这不是天方夜谭。这是国际计算机界正在探索的前沿方向。我今天提这个思路,不是要大家现在就做几十个核心的机器,是希望大家在设计今天这个核心的时候,给未来留一扇门。”

首长坐在第一排,一直没有说话。

听到这里,他转过头,看着旁边的刘星海:“老刘,陈教授说的这个,你能不能用大白话给我解释一下?”

刘星海点点头,站起来。

“首长,我打个比方。”他说,“宋教授设计的这个核心,好比一个能独立作战的步兵班。有班长,有战士,能自己解决一个小战斗。”

“陈教授的意思是什么呢?是说,将来我们要打大仗了,一个班不够,要把几个班编成一个排。那怎么办?得有个排长,得有个通信兵,得有个统一的指挥体系。”

他指着黑板上的图:“这就是陈教授说的全局管理核心。它不亲自打仗,它负责告诉每个班,你打哪个方向,什么时候进攻,什么时候撤退。几个班打完之后,它把战果汇总起来,报告给上级。”

首长点点头:“明白了。那层次化管理呢?”

刘星海继续说:“打仗人多了,一个排不够,要编成一个连。连部不直接指挥士兵,他指挥连长;连长指挥排长;排长指挥班长。一层一层下去。”

首长笑了:“老刘,你这个比方打得好。我懂了。”

他看向陈教授:“陈教授,你这个思路,我支持。但问题来了,这个多核心的机器,现在能造吗?”

陈教授摇摇头:“造不了。技术上还有很多难题没解决。”

“那你说这个干什么?”首长问。

陈教授笑了笑:“首长,我说这个,不是要现在就造。我是希望,在宋教授设计这个核心的时候,给它留几个接口,留几条线,让它将来能跟别的核心连起来。就像盖房子,现在只盖一间,但地基要打好,将来想加盖的时候,直接往上接就行,不用把房子拆了重盖。”

首长点点头,看向宋颜:“宋教授,你能留这个接口吗?”

宋颜想了想:“能。但要多占几个引脚,多几条控制线。”

“占就占。”首长说,“现在多花点功夫,将来少走弯路。”

陈教授说完,台下沉默了。

但沉默只持续了几秒,就有人举手。

是秦世襄。

“陈教授,您这个思路,我支持。但我有几个技术问题,想问清楚。”

他站起来,走到台上,拿起粉笔。

“第一,通信瓶颈。”他在黑板上画了两个方块,中间画了一条线,“两个核心之间交换数据,这条路有多宽?能跑多快?如果这条路太窄,数据堵在路上,就算有100个核心,也只能干等着。”

他看着陈教授:“您那个全局管理核心,怎么保证数据通路不堵?”

陈教授想了想:“这个问题,我现在没有现成的答案。但方向是明确的。第一,数据通路要足够宽。不能只是一根线,要一组线。第二,交换方式要高效。不能一个核心发完数据另一个才能发,要能并行交换。第三,协议要简单。越复杂的协议越慢。”

秦世襄点点头,在黑板上写下“通信瓶颈”四个字。

包康建举手了。

他走到台上,拿起粉笔,在秦世襄写的“通信瓶颈”旁边,又写了四个字:“同步难题”。

“陈教授,秦教授说的是数据通路的问题。我说的是时间同步的问题。”

他指着黑板上的两个方块:“两个核心一起算一个任务,怎么保证它们步调一致?核心A算得快,核心B算得慢,A等不等B?如果不等,结果怎么拼?如果等,快的那个就闲着,效率上不去。”

他看向陈教授:“这个同步问题,比通信瓶颈更难。几十个核心要同步,需要非常复杂的时钟网络和控制逻辑。”

陈教授点点头:“包教授说得对。同步是并行计算的死穴。但也不是完全无解。”

他走到黑板前,在“同步难题”旁边又写了几个字:“松耦合”、“异步并行”。

“一种思路,是松耦合。让各个核心相对独立,不需要每步都同步。A算完自己的那块,结果先放着;B算完自己的那块,也先放着。等所有核心都算完了,再统一合并。这叫‘分而治之,异步执行’。”

“另一种思路,是异步并行。每个核心按自己的节奏跑,需要数据交换的时候,通过握手信号来协调。你给我发个信号,说你算完了;我收到信号,知道可以取你的结果了。这样不需要全局同步,只需要局部协调。”

他放下粉笔:“这两种思路,都比紧耦合、全局同步容易实现。但代价是,编程复杂。程序员要想清楚,什么时候该同步,什么时候可以异步。”

包康建点点头,在本子上记了几笔。

魏知远举手了。

他走到台上,拿起粉笔,在“同步难题”旁边,又写了四个字:“负载均衡”。

“陈教授,包教授说的是时间同步的问题。我说的是任务分配的问题。”

他指着黑板上的两个方块:“一个任务切分成两块,分给两个核心。如果这两块一样大,两个核心同时算完,完美。但如果一块大一块小,大的那个算半天,小的那个算完就闲着,浪费。”

“这叫负载不均衡。几十个核心的情况下,任务切分要做到完全均衡,几乎不可能。总有一些核心忙死,一些核心闲死。”

他看向陈教授:“这个问题怎么解?”

陈教授想了想:“魏教授,这个问题,没有完美解。只能靠动态调度。”