高性能计算的瓶颈
在实际的工作和科研中,许多人会遭遇一个令人费解的困境:
明明想要通过增加核心数来提高计算效率,但是随着并行计算核心数的不断增加,原本期待的加速效果并未如约而至,计算效率的曲线非但没什么变化,甚至开始不断下降。
而影响计算效率的因素除了“算法的优化”,像“数据相关性”、“负载平衡”等也涉及其中,下面我们就来讲讲各个因素为何会影响算例的“最佳并行规模”。
在并行计算中,不同处理单元之间需要进行数据通信和同步动作,而过多的核心数所产生的通信时间也是相当可观的,从而会影响到作业本身的计算效率和计算平台的整体性能,但是通信密集型任务需要更多的核心,最终的计算效率反而会下降,这个也需要在作业的配置中考虑到。
在并行计算中,各个节点的负载分配可能不均衡,导致部分处理单元负载过重,而部分处理单元空闲,从而影响到计算效率。
并行计算中的数据相关性可能导致处理单元之间的依赖关系,限制了并行度的提高,从而影响性能。
在并行计算中,可能存在共享资源的竞争和瓶颈,如内存带宽、I/O带宽等,这些因素可能限制并行计算的性能。
一些算法并不容易并行化,或者其并行化的复杂性较高,这可能导致并行计算的效率不高。
车辆模型包括数百个部件,如车身、座椅、安全带、气囊等。碰撞分析的模型需要考虑所有这些部件的相互作用。
图片来源:网络
在汽车碰撞分析中,采用并行计算可以显著缩短求解时间,但同时也需要注意优化计算性能。根据计算节点和核心数量合理分配任务,避免资源浪费,并通过调整网格划分,确保计算负载在所有节点间平衡分配,减少计算瓶颈。
配置更多算力核心后,计算效率下降原因分析如下:
当并行规模过大时,各个计算节点之间的负载分配可能变得不均衡,部分节点计算任务过重,而其他节点则处于空闲状态,导致整体计算效率下降。
过多的并行核心会导致通信频率和复杂度增加,通信开销增大,从而拖慢计算速度。
在大规模并行计算中,内存分配和管理变得更加复杂,可能出现内存不足或内存访问冲突等问题,影响计算效率。
在实际测试中,使用不同规模的计算资源对同一组LS-DYNA任务进行运算,结果如下:
本地计算资源:
使用32、48、64核计算资源,耗时分别为821、566、439分钟。
注:本地资源有限,无法提供更多资源测试,共进行了3次作业提交,总计耗时1826分钟。
云端计算优化型实例:
使用32、48、64、128、256核计算资源,耗时分别为662、458、375、299、321分钟。
注:云平台资源充足,可同时进行多个作业的提交和计算,即耗时662分钟得出所有结果(测试效率提升约64%),得出该作业最佳并行规模为128核。
不同的大规模作业需要不同的优化方式,其中包括优化数据读写策略、优化网格划分、找到合适的最佳并行规模。
SimForge高性能仿真云平台可以在线提供以下资源: