“嗯?”严渊正沉浸在烧脑中,被这突如其来的触碰吓了一跳,猛地抬起头。
两个人四目相对。
严渊的脸“唰”地一下红了。
今天的林见微,穿着一件米白色的高领羊绒衫,外搭一件剪裁利落的深灰色长款风衣,长发柔顺地披在肩头,脸上化了淡妆,整个人散发着一种知性、典雅又带着一丝距离感的美。
在图书馆柔和的光线下,她的眉眼显得格外清秀动人。
“额…学…学姐?”严渊有些结巴,也有些紧张。
林见微看着严渊瞬间涨红的脸和有些慌乱的眼神,嘴角不易察觉地弯了一下,但很快恢复了平静。
她压低声音,指了指他的电脑屏幕:
“是不是卡在蒙特卡洛路径生成的并行优化这里了?特别是低差异序列在分布式内存模型下的通信开销问题?”
严渊眼睛瞬间瞪大了!
她怎么知道?
还说得这么精准???
他连忙点头,像抓住了救命稻草,小声说。
“对对对,学姐,就是这里,我试了好几种方法,要么精度不够,要么速度提升不明显,甚至更慢了……”
林见微点点头,示意他往旁边挪一点。
严渊赶紧让开位置。
林见微放下手中的资料,俯下身,靠近严渊的电脑屏幕。
一股淡淡的、清雅的香气飘入严渊的鼻腔。
她的指尖在键盘上轻盈地跳跃,点开严渊的代码文件,快速浏览着。
她的目光锐利而专注,似乎能穿透代码的表象,直指核心。
“你看这里,”林见微指着屏幕上的一段循环嵌套代码,
“你的并行策略是粗粒度的,把整个路径生成任务按路径数量平均分给各个进程。
这在任务量均匀时没问题,但低差异序列的特性决定了路径生成的难度并不是均匀的,序列点分布不均匀会导致某些进程负载过重。
而其他进程空闲,造成严重的负载不平衡,这就是你效率瓶颈的关键。”
严渊恍然大悟!
他之前只关注了算法本身和通信量,完全忽略了负载均衡的问题。
“那怎么办?”严渊小声地问。
“可以尝试动态任务分配。”林见微语速不快,但条理极其清晰,
“比如,采用主从模式。主进程负责生成低差异序列点,并将这些点放入一个任务池。工作进程空闲时就从池中请求一个点进行计算,这样能自动实现负载均衡,避免忙闲不均。”
林见微一边说,一边在严渊的草稿纸上快速画了一个简单的架构图。
“另外,”她继续深入,“低差异序列的生成本身也可以优化。你用的是sobol序列吧?它的生成有递归依赖,不适合直接并行。