多线程数值代码中可调参数的暴露与LU分解优化
在多线程数值计算领域,如何优化代码性能一直是研究的重点。本文将探讨多线程数值代码中可调参数的暴露,以及在Cell Broadband Engine上进行LU分解优化的相关内容。
多线程数值代码的并行化与搜索空间
在多线程数值代码中,并行化和分块是提高性能的重要手段。对于mgrid和swim这两个程序,并行化搜索空间的维度明显少于分块搜索空间。
-
mgrid的并行化 :考虑对resid和psinv子程序中三维循环嵌套的每一层循环进行并行化,并且针对每个变体,探索了使用2、4和8个线程的实现。从图6(a)可以看出,在Conroe、Kentsfield和Nehalem平台上,不同并行变体的性能有所不同。一般来说,并行化最外层循环通常是最有利的,但也有例外,例如在Conroe平台上,并行化中间循环的变体性能最佳。在线程数量方面,将线程数设置为可用核心数通常效果最好,但同样存在例外,如在Kentsfield平台上,使用2个线程的P1T2变体性能最佳。
| 平台 | 最佳并行变体 | 线程数 |
| ---- | ---- | ---- |
| Conroe | 并行化中间循环 | - |
| Kentsfield | P1T2 | 2 |
| Nehalem | - | - | -
swim的并行化 :考虑并行化initial、calc1、calc2和calc3例程的内外层循环。但由于并行化内层维度的运行速度总是比顺序版本慢几个数量级,所以在图6(b)中未展示相关
超级会员免费看
订阅专栏 解锁全文
1559

被折叠的 条评论
为什么被折叠?



