办公室里只剩他一个人。林子轩两个小时前走了,走之前把棒棒糖的塑料棒扔进垃圾桶,说了一句“别太晚”。许知意走的时候给他留了一块面包,放在显示器旁边。面包用保鲜膜包着,旁边贴了一张便利贴,写着“沈哥记得吃”。
他没吃。他在跑一个测试。引擎2.0的渲染管线,他花了两周时间把一部分计算从CPU迁到了GPU。不是全部,只是一个模块。光照计算的积分部分,以前是CPU在做,一万个光源就要算一万次。他把这个模块用CUDA重写了,让GPU的几千个流处理器同时干活。
测试场景是一个开放世界地图,树林、草地、河流、动态天气。光照数量从一百个增加到一千个。CPU版本的帧率从六十二帧降到了十八帧,掉得厉害。GPU版本跑完之后,他盯着监控面板上的数字,以为自己看错了。
六十八帧。
不是比CPU版本的六十二帧略高。是在一千个光源下,跑出了比CPU版本在光源少的时候还高的帧率。他揉了揉眼睛,把测试再跑了一遍。六十八帧。换了另一个场景,城市夜景,光源更多。GPU版本跑出了七十一帧。
他把两个结果并列写在笔记本上,在旁边画了一个大大的问号。然后在问号下面写了一行字。
“为什么快这么多。”
不是炫耀,是真的不理解。他知道GPU适合并行计算,但没想到差距这么大。他把代码拆开,一行一行看。看了快一个小时,找到了原因。不是他的CUDA写得有多好,是原来的CPU代码写得太保守了。为了兼容老显卡,用了很多妥协方案。这些妥协在CPU上没问题,但在GPU上成了瓶颈。他绕过这些妥协之后,性能一下子就释放了。
他在笔记本上又写了一行字。
“不是我们变强了。是以前的自己太弱了。”
写完这行字,他把测试结果整理成报告。标题写了“引擎2.0 GPU并行计算性能测试报告”。正文写了三页,数据、图表、分析。最后一段他写得很慢。
“引擎2.0的渲染管线迁到GPU后,理论性能提升最高可达四倍。但达到这个性能需要一张足够好的显卡。目前市面上主流显卡中,极光GTX 960可以跑出三倍左右的提升。更高级的显卡我们没有测试环境,无法验证。”
他在这段下面画了一条横线,在横线下面写了一行很小的字。
“我们有造汽车的技术,但没有能让汽车跑起来的路。”
写完之后,他把报告发到了群里。凌晨一点十二分。群里没有人回复,都在睡觉。
第二天早上,孟缘是第一个看到报告的。他七点到办公室,打开群,看到沈连河发的文件。他下载下来,从头到尾看了一遍。看到那行小字的时候,他停了一下。
“我们有造汽车的技术,但没有能让汽车跑起来的路。”
他把这句话读了三遍。
八点多,其他人陆续到了。苏景辰看到报告,摘下眼镜擦了擦。林子轩看完之后把棒棒糖从左边挪到右边,沉默了几秒。
“四倍。这个数字如果是真的,引擎3.0可以做的事情就太多了。”
沈连河从笔记本上抬起头。
“是真的。但需要好显卡。”
“多好。”
“至少GTX 960以上。最好是下一代。”
林子轩哼了一声。
“下一代还没发布。”
“所以没有路。”
办公室里安静了一下。孟缘站起来,走到白板前。他把沈连河那行小字抄在白板上,然后在下面画了一条路。路的一端写着“引擎2.0 GPU版”,另一端写着“好显卡”。
“路还没修好。但有人可以修。”
他拿起手机,翻到顾林的聊天记录。上一次对话是两周前,顾林问他引擎2.0的GPU优化进展如何,他回了一句“沈连河在做”。顾林回了一个“好”。
他打了几个字。
“顾老师,沈连河跑出了一个数据。引擎2.0在GPU上最高能提升四倍。但需要好显卡才能跑出来。”
发送。放下手机。
不到两分钟,顾林回了。
“数据发我看看。”
孟缘把沈连河的报告转给他。顾林没有马上回复。过了大概十分钟,他发来一条消息。
“徐震想见你。这次来极光研发中心。他给你看一样东西。”
孟缘看着这行字。
“什么时候。”
“今天下午。”
孟缘看了一眼沈连河。
“沈连河,下午去极光。你跟我。”
沈连河点头。
下午两点,孟缘和沈连河到了极光深海研发中心。还是那栋灰色