高性能计算的瓶颈
在实际的工作和科研中,许多人会遭遇一个令人费解的困境:
明明想要通过增加核心数来提高计算效率,但是随着并行计算核心数的不断增加,原本期待的加速效果并未如约而至,计算效率的曲线非但没什么变化,甚至开始不断下降。
而影响计算效率的因素除了“算法的优化”,像“数据相关性”、“负载平衡”等也涉及其中,下面我们就来讲讲各个因素为何会影响算例的“最佳并行规模”。
01 影响因素分析
1. 数据通信和同步
在并行计算中,不同处理单元之间需要进行数据通信和同步动作,而过多的核心数所产生的通信时间也是相当可观的,从而会影响到作业本身的计算效率和计算平台的整体性能,但是通信密集型任务需要更多的核心,最终的计算效率反而会下降,这个也需要在作业的配置中考虑到。
2. 负载平衡
在并行计算中,各个节点的负载分配可能不均衡,导致部分处理单元负载过重,而部分处理单元空闲,从而影响到计算效率。
3. 数据相关性
并行计算中的数据相关性可能导致处理单元之间的依赖关系,限制了并行度的提高,从而影响性能。
4. 潜在的竞争和瓶颈
在并行计算中,可能存在共享资源的竞争和瓶颈,如内存带宽、I/O带宽等,这些因素可能限制并行计算的性能。
5. 算法设计和并行化的复杂性
一些算法并不容易并行化,或者其并行化的复杂性较高,这可能导致并行计算的效率不高。
02 最佳并行规模分析——以“汽车碰撞分析”为例
车辆模型包括数百个部件,如车身、座椅、安全带、气囊等。碰撞分析的模型需要考虑所有这些部件的相互作用。

在汽车碰撞分析中,采用并行计算可以显著缩短求解时间,但同时也需要注意优化计算性能。根据计算节点和核心数量合理分配任务,避免资源浪费,并通过调整网格划分,确保计算负载在所有节点间平衡分配,减少计算瓶颈。
配置更多算力核心后,计算效率下降原因分析如下:
1. 负载不均衡
当并行规模过大时,各个计算节点之间的负载分配可能变得不均衡,部分节点计算任务过重,而其他节点则处于空闲状态,导致整体计算效率下降。
2. 通信开销增加
过多的并行核心会导致通信频率和复杂度增加,通信开销增大,从而拖慢计算速度。
3. 内存管理问题
在大规模并行计算中,内存分配和管理变得更加复杂,可能出现内存不足或内存访问冲突等问题,影响计算效率。
在实际测试中,使用不同规模的计算资源对同一组LS-DYNA任务进行运算,结果如下:
本地计算资源:
使用32、48、64核计算资源,耗时分别为821、566、439分钟。
注:本地资源有限,无法提供更多资源测试,共进行了3次作业提交,总计耗时1826分钟。
云端计算优化型实例:
使用32、48、64、128、256核计算资源,耗时分别为662、458、375、299、321分钟。
注:云平台资源充足,可同时进行多个作业的提交和计算,即耗时662分钟得出所有结果(测试效率提升约64%),得出该作业最佳并行规模为128核。
03 计算效率瓶颈解决方案
方案一:多次作业并行运算,找出合适运算规模
不同的大规模作业需要不同的优化方式,其中包括优化数据读写策略、优化网格划分、找到合适的最佳并行规模。
方案二:在线云平台解决方案
SimForge高性能仿真云平台可以在线提供以下资源:
① 在线图形界面
② 海量软件提供计算支持
③ 多个大算力作业同步计算
④ 数据实时同步,快速展示传输
推荐阅读
SimForge HSF 案例分享|复杂仿真应用定制——UAVSim无人机仿真APP(技术篇)
仿真干货|贺新能源汽车首破千万,STAR-CCM+汽车外流场仿真教程奉上
仿真干货|追新还是守旧?一文概览STAR-CCM+各版本核心迭代