3

我正在尝试使用混合 MPI-OpenMP 并行化运行代码。据我所知,只要 OpenMP 线程的数量小于物理处理器的数量,每个处理器就运行一个线程。假设这是真的,假设我有一个由两张计算卡组成的假设计算节点。每张计算卡都有4个处理器+内存的芯片。我的问题是:MPI 和 OpenMP 参数的最佳选择是什么。我会说 2 个 MPI 作业和每个 4 个线程,这是正确的吗?

OMP_NUM_THREADS = 4 mpirun -np 2 code

我从一些同事那里听说,应该仔细选择这些参数,以获得最佳性能(取决于硬件布局)。我将不胜感激有关运行混合作业的一些建议。

谢谢

4

1 回答 1

3

为实际应用程序代码选择正确的并行化配置绝非易事。MPI 进程和 OpenMP 线程到多处理器节点的最佳映射取决于算法的具体实现、OpenMP 运行时、高速缓存存储器层次结构的内部组织以及与处理器架构相关的其他因素。

因此,建议用户在其特定硬件上运行不同的配置以找到最佳分配。您可以在研究计算设施和 HPC 咨询公司的技术报告中找到许多关于此类研究的报告。

在一个m x n节点上,其中m是处理器插槽n的数量并且是 CPU 内核的数量,这样的实验将涉及针对 MPI 进程p和 OpenMP 线程数量的所有可能整数值运行代码q,以便p x q = m x n为每个可用的编译器运行代码。

以下是4 x 12 AMD Opteron 节点的不同组合p和获得的并行加速图。q数据取自George Delic 的 HiPERiSM Consulting LLC技术报告 HCTR-不同数量的 MPI 进程和 OpenMP 线程的并行加速。 数据取自 HiPERiSM Consulting LLC 技术报告 HCTR-2011-2,George Delic,2010 2011-2,2010 年。 您可以看到,对于此特定代码,处理器架构的每个 MPI 进程的最佳 OpenMP 线程数是 1。但是,4 线程和 12 线程的情况MPI 流程紧随其后。

于 2013-08-25T04:44:12.283 回答