高性能编程的创新技术:LuNA - ICLU编译器与Set@l语言探索
1. LuNA - ICLU编译器的自动化生成与性能评估
在并行编程领域,为了提高碎片化程序的性能,LuNA - ICLU编译器应运而生。该编译器所涉及的算法包含以下几个关键步骤:
1. 每个进程与所有相邻进程交换所选数据帧(DFs)及其邻居的信息。
2. 每个进程与相邻进程交换所选DFs的值。
3. 每个进程更新存储的DFs及其邻居的信息。
不过,这个算法存在一些缺点。例如,局部通信的限制可能导致相邻进程之间在负载阈值内出现负载梯度,但远距离进程之间存在较大的负载不平衡。此外,相邻进程的数量可能会大幅增加,从而增加负载平衡的开销。尽管如此,该算法仍可用于解决碎片化程序执行时出现的负载不平衡问题。
为了评估LuNA - ICLU编译器生成程序的性能,研究人员采用了引力尘埃云模拟的测试问题。模拟算法基于粒子 - 单元法,测试运行的参数如下:
|参数|详情|
| ---- | ---- |
|网格大小|160×160×100|
|粒子数量|5亿|
|时间步数|800|
初始粒子分布为位于模拟域中心的均匀密度球体,模拟域在两个方向上被分解为16×16个片段,只有中心的几个片段包含粒子,这导致了负载不平衡。
研究人员开发了该算法的三种实现方式,分别使用MPI、LuNA和LuNA - ICLU。此外,还比较了LuNA - ICLU编译器生成的程序的两个版本:有负载平衡和无负载平衡。负载平衡器的参数设置为:每五步调用一次平衡模块,最小不平衡阈值设置为10%。
所有测试均在MVS -