不同平台程序性能损耗-以GROMACS为例

对基于不同平台GROMACS程序性能损耗测试,可以作为参考。

平台和软件

注意:由于在Windows平台,GCC编译器并不能正常编译出原生的支持CUDA加速版本的GROMACS,因此为了统一比较,我这里在两个平台均采用Intel Parallel Studio XE 2019的Intel编译器。分别编译出了FFTW3+CUDA版本的GROMACS,使用FFTW3CUDA10。但是对于GROMACS2019系列的最新版并不能通过Intel编译器在Ubuntu下编译出FFTW+CUDA版本。报错无法识别某些变量,最终没解决也就放弃了。但是GROMACS2018系列最新版本2018.7可以通过Intel编译器在Ubuntu下编译出FFTW+CUDA版本。

测试硬件

 由于手边没有什么高端的计算服务器,因此整个测试使用的是自己的笔记本,具体配置如下:
CPU: i5-6300HQ
GPU: NVIDIA GeForce GTX950M
Memory: 16GB
配置比较老了,但是单纯用于测试我觉得够了。

测试实例

 实例采用https://www.mpibpc.mpg.de/grubmueller/bench网站上的基准测试,包括8.2W原子的膜蛋白体系(全原子)和2百万原子的核糖体体系(粗粒化的)

测试结果

上标a表示使用的是FFTW库;b表示使用的是Intel的MKL库;
上标m表示使用的是GCC编译器;n表示使用的是Intel编译器。
纯CPU情况下:

平台 GROMACS版本 膜蛋白体系 核糖体体系
Windows10 $^{a,n}$ 2019.3 6.8 ns/day 0.34 ns/day
Windows10 $^{b,n}$ 2019.3 4.4 ns/day 0.2 ns/day
Ubuntu16.04 $^{a,n}$ 2018.7 7.5 ns/day 0.37 ns/day
Ubuntu16.04 $^{b,n}$ 2018.7 7.6 ns/day 0.37 ns/day
Ubuntu16.04 $^{a,m}$ 2019.3 7.1 ns/day 0.37 ns/day

CPU+GPU情况下:

平台 GROMACS版本 膜蛋白体系 核糖体体系
Windows10 $^{a,n}$ 2019.3 12.8 ns/day 0.77 ns/day
Windows10 $^{b,n}$ 2019.3 13.5 ns/day 0.8 ns/day
Ubuntu16.04 $^{a,n}$ 2018.7 12.8 ns/day 0.83 ns/day
Ubuntu16.04 $^{b,n}$ 2018.7 14.3 ns/day 0.8 ns/day
Ubuntu16.04 $^{a,m}$ 2019.3 12.7 ns/day 0.84 ns/day

结论

 看起来在不同平台之间,差别也不是很大。纯CPU模拟在Ubuntu平台还是好点,不过Intel编译器在Ubuntu平台貌似效率更高。至于GPU,两者之间的差距不大,可能是因为此时所有计算都转移到了GPU上面,而GPU版本的GROMCS编译都是依靠NVIDIA CUDA的NVCC,不同平台之间差距很小。

!!!不过对于大型计算集群,Linux系统是必备的,Windows平台对于单机还是有一定可取之处的。对于谁好谁坏,我保留我的观点。