最新网址:www.00shu.la
燕大,信息科学技术学院。理科教学楼的一间大型多媒体阶梯教室里,此刻已经是座无虚席。
不仅是过道上加了塞,连後排的空地和窗台上都挤满了慕名而来的旁听生。
高稳作为燕大计算机体系结构与底层算法领域的真神,华夏工程院院士。
平时也很少给本科生上基础课。
今天这堂《底层算法与高性能计算架构》,其实是面向大一新生的开学第一课,也是他这学期为数不多亲自登台的专业导论课。
正因如此,不仅信科本院的学生们都来了,就连外院的学霸们也闻风而动,只为了一睹真神的风采。
高院士站在讲台上,手里的粉笔,在黑板上画着底层系统架构的逻辑图。
「在NUMA架构下,多核心并发并不是简单的线程叠加。」
「当两个线程同时修改同一个缓存行内的不同独立变量时,就会触发伪共享陷阱。」
「这个时候,MESI缓存一致性协议就会在底层的物理总线上,引发一场纳秒级的无效数据冲刷风暴,直接把你们引以为傲的并发算力拖成龟速!」
高院主在讲台上侃侃而谈,台下的夫=新生们都听懵逼了。
虽然高院士讲的逻辑很清楚,一环扣一环的,他们能听懂这其中的因果关系O
可是这些底层硬体、缓存一致性协议的专业概念,他们现在还没有接触过啊,这特麽是一堂面向大一新生的导论课该讲的东西?
事实上,到了院士这个级别,他们站在讲台上,从来就不是为了教学生某个具体的知识点。
他们传授的,是一条路,一种全新的思维逻辑,一个能打破常规的破局方向一至於教那些具体的知识?
比如怎麽去写C++的基础语法?
怎麽去声明一个变量?
怎麽去调用那些现成的API接口?
别说高院士这位工程院院士了,就是燕大信科里随便拉出来一个教授,都不会去讲!
因为在这些燕大顶尖学者的眼中,那些像查字典一样的编程工具和语言规范,难道不是你们这群能考进燕大的天之骄子们,自己在寝室里熬两个通宵就能自学学会的东西吗?
这种基础的玩意儿,哪里用得着大学教授站在讲台上浪费时间去教?
这就是华夏最高学府的门槛与调性!
台下的学生们虽然懵,但依然疯狂的记录着,指望回去慢慢消化。
高院士这时停了下来,严肃的说道。
「把笔都放下,不用记笔记。」
「你们要是边听边记,是跟不上我的节奏的。」
此话一出,台下那些正疯狂做笔记的新生们,脸瞬间就红了。
就在他们为自己无知行为感到羞耻的时候,高院士突然笑道。
「但是你们可以用手机录,那玩意儿能跟上————」
台下发出了一阵哄笑声。
他们这群天之骄子此时才真正意识到,大学和高中真的不同。
知识也好,老师也好。
而坐在阶梯教室最後一排的李东,也是越听越兴奋!
别人听不懂,他可以呀!
「原来多线程并发时的缓存一致性问题,本质上就是物理层面上的数据竞争映射————」
「叮铃铃。」
下课铃声响起。
高院士直接说道。
「这节课就到这里,下课。」
李东猛的起身,抓起自己的背包就准备冲下讲台去问问题。
然而,他以前在江城七中养成的习惯让他吃了大亏。
他坐的是最後一排,等他好不容易跑到讲台边上的时候。
他人都傻了。
「七中误我!」
此时的高院士身边早就围满了热情的学霸。
「高老师,关於那个缓存行对齐的问题————」
「高老师,多线程锁的开销在实际工程中怎麽量化————」
李东只能无奈的站在最外围,等着前面的同学先问完。
十几分钟过去了,眼看着快到了下一节课的上课时间。
高院士才对着周围的学生摆了摆手。
「好了,同学们,你们先去上下一节课吧,剩下的问题,你们可以问你们的任课教授。」
大家虽然挺失望的,但也不能不上下一节课呀,只能无奈散开。
高院士走出了阶梯教室。
李东见状也跟了上去。
走廊上,高院士察觉到後面有人跟着,回过头看了看李东。
「同学,」高院士笑着问道。
「你不上课吗?」
李东说道。
「我不是这个班的。」
高院士愣了一下,随即反应了过来。
「元培的?」
李东点了点头。
「哈。」高院士一下子就笑了出来。
他在元培学院那边其实也是有挂课的,但像这种大一刚开学,就不去上自己院系的通识课,直接跑来信科学院的学生,有是有,但确实比较少见。
「走吧。」高院士招了招手,带着李东穿过理科楼的连廊,来到了他在信科学院的独立办公室。
推门进去,高院士在办公桌前坐下,示意李东也坐,随口问道。
「怎麽?课上有什麽没听懂的地方吗?」
李东摇了摇头。
「都听懂了,您讲得深入浅出,把底层硬体和软体算法的关系剖析得特别透彻。」
高院士听完,忍不住笑了。
这学生挺有趣的啊。
大一新生能听懂多少底层并发?
这小马屁拍得不显山不露水的,情商蛮高的嘛。
而坐在对面的李东,完全不知道自己说了大实话,反而被人当成了高情商。
「那你跟着我来办公室,是想问什麽?」
高院士饶有兴趣的看着他。
李东直接问道。
「高老师,我最近在研究关於计算黎曼Zeta函数非平凡零点的底层算法优化。」
「我想在这个多点求值(multipleevaluations)的基础上,进一步优化它的内存分配,尝试把计算规模推到万亿级甚至更高的极高阶区间。」
「但在利用FFT对Zeta函数进行大规模网格展开时,底层内存的调用逻辑我总是处理不好。」
「当网格规模放大到千万级、亿级时,算力冗余太大,经常引起严重的内存碎片化或者缓存未命中。」
李东将自己对《黎曼手稿》嵌套进程式语言的一些遇到的问题说了出来。
「所以怎麽才可以在不改变整体数学时间复杂度的情况下,重构C++底层的内存排布方式呢?然後最大限度地迎合CPU的缓存预取机制?」
高院士在听到李东这番话後,放下保温杯。
他特别喜欢这种会自己深度思考的学生。
他仔细想了想刚才李东说的内存分配逻辑,虽然他不能仅仅通过几个问题就完全看透李东那套降维算法。
毕竟他也不是专攻数学的。
但他还是发现了这套框架在硬体调度上的一些弱点。
「你的思路和正常学生很不一样,切入点很偏,但非常有意思。」
高院士拿起一支笔,在纸上画了一个简单的内存分块图。
「既然用了FFT做多点求值,你不能用常规的连续内存分配去想。」
「位反转置换会彻底打断CPU缓存的空间局部性。」
「你得手动做分块处理,把庞大的网格矩阵切分成能完全塞进L2缓存的小块,在小块内部完成运算後再写回主存。」
高院士耐心的给李东讲解着内存对齐的精髓,句句都是乾货。
李东听着高院士的话,【代码直觉】瞬间将这些概念具象化。
「我明白了!谢谢高老师!」
李东是真心的感谢,这就是有名师的好处,他们可能不像李东一样有外挂,但是也没见牛顿他们有外挂呀,可是依然不影响他们的牛逼。
问完核心的学术问题後,李东突然想起了一个很现实的问题。
他的联想电脑到现在都还开不了机,也还没去买新的。
所以他有些不好意思的问道。
「那个————高老师,咱们学校能申请用机房吗?」
高院士正喝着茶,听到这个问题,差点没呛到。
「我们学校的机房都是公用资源,」
高院士有些哭笑不得的解释道。
「你直接拿着你的校园卡去刷卡就能进去用。」
「当然,如果你需要跑超大规模的算力,可以在校园网上用学号申请超算中心的节点。」
李东这才恍然大悟。
高院士看着眼前这个有些迷糊的少年,越发觉得有意思了。
「同学,你叫什麽名字?」高院士微笑着问道。
「我叫李东。」
「李东————」高院士点了点头,把这个名字记在了心里。
最新网址:www.00shu.la