< "https:">提供的《学霸的模拟器系统》 第157章 几何分区的并行算法(求订阅求月票)(第1/2页)
内存溢出。
这行冰冷的红色字符,宣告了第一次尝试的彻底失败。
林允宁靠在椅背上,揉了揉干涩的眼睛。
这不是代码的bug。
这是物理世界的现实。
他构建的那个“信息流形”,其复杂程度远超预期。
哪怕只是一个最简单的“桌面黑洞”模型,所需要的计算资源,也已经超出了这台ibx40笔记本,甚至任何一台单机服务器所能承受的极限。
“怎么了?死机了?”
旁边的布兰登凑了过来,嘴里还叼着一块披萨。他现在已经习惯了林允宁这种废寝忘食的工作模式。
“内存溢出。
林允宁言简意赅。
“那换个大内存的电脑不就行了?”
布兰登凭着朴素的直觉提议。
“恐怕这世界上,现在还没有这么大的内存………………”
林允宁摇了摇头。
他知道,问题不在于总内存大小,而在于如何让多台计算机协同工作,去处理一个不可分割的整体。
他需要并行计算。
并行计算本身并不难,以前他和陈正平和顾念真也做过。
但拓扑信息流的建模是一个整体,如何将这个任务拆分成计算机能够理解的部分分别计算,才是真正的难点。
......
第二天。
在劳拉的撮合下,林允宁抱着自己的笔记本电脑,敲开了计算机科学系一位教授的办公室大门。
丹尼尔?华莱士教授。
芝加哥大学并行计算领域的专家,一个典型的技术派学者。
他的办公室里堆满了服务器和各种网络设备,风扇的嗡鸣声震耳欲聋。
“......所以,我的问题是,如何将一个高维的纤维丛结构,有效地分布到不同的计算节点上?”
林允宁开门见山,直接在白板上画出了那个复杂的几何模型。
华莱士教授是个典型的计算机科学家,穿着印有“there''snopcelike127.0.0.1”的t恤,听得一头雾水。
“等一下,林同学,”
他打断了林允宁,“你说的这个“纤维丛’,在数据结构上怎么表示?是邻接矩阵,还是邻接表?你的‘信息流,可以看作是一种图上的遍历算法吗?比如广度优先或者深度优先?”
林允宁愣住了。
他试图解释:“它不是一个静态的图,它的几何结构本身,会随着信息的流动而动态演化......”
“那就是一个动态图的实时计算问题,”
华莱士教授立刻接话,“那你节点之间的数据依赖关系是什么?通信开销怎么评估?有没有做过性能剖析,找到计算瓶颈?”
二十分钟后,林允宁走出了办公室。
他意识到,他和华莱士教授之间,隔着一堵无法逾越的墙。
他眼中的物理世界,在对方眼里,只是一堆数据结构和算法。
对方无法理解他的物理模型,自然也无法给出有效的解决方案。
他只能靠自己。
接下来的几天,林允宁游弋在戈登综合科学中心三楼的会议室和宿舍之间。
他没有再纠结于代码,而是回到了最原始的工具??白板和笔。
他需要解决一个根本性的矛盾:
他的物理理论,是建立在一个连续的,无限维的几何空间上;
而计算机的内存,是离散的,有限的,线性的地址空间。
他要把一个弯曲的宇宙,塞进一个方方正正的盒子里。
布兰登每天早上都会在宿舍门口,给他留一杯煮好的咖啡和一个硬面包圈。
他偶尔回来取东西时,会看到林允宁对着白板发呆,嘴里念叨着“切片”、“投影”、“边界条件”这些他听不懂的词。
他知道,自己的这位室友,又进入了那种“怪胎模式”。
这天晚上,林允宁看着白板上那张被自己画得乱七八糟的信息流形图,脑中灵光一闪。
他为什么要试图把整个宇宙一次性塞进盒子里?
他可以把它“切”开。
就像做ct扫描一样,把一个三维的物体,切成几千张二维的薄片,分别处理,最后再拼起来。
他拿起笔,在白板上飞快地写下了一行新的标题:
“几何分区并行算法”。
他的思路很简单:既然整个信息流形太大,无法一次性载入内存,那他就用数学方法,把它在虚拟空间中“切割”成数千个互不重叠的小区域。
然后,利用i这种并行计算框架,将这些小区域分发给不同的计算节点,就像把一项大工程分包给几千个施工队。
每个施工队只负责自己那一小块区域的计算,算完之后,再通过i的“规约”操作,把所有局部结果汇总起来,拼接成最终的全局解。
这个想法,将一个物理学的几何概念,和一个计算机科学的并行编程模型,完美地结合在了一起。
&n
\/阅|读|模|式|内|容|加|载|不|完|整|,退出可阅读完整内容|点|击|屏|幕|中|间可|退|出|阅-读|模|式|.
『加入书签,方便阅读』
-->> 本章未完,点击下一页继续阅读(第1页/共2页)