2013-08-24 93 views
3

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

OMP_NUM_THREADS = 4 mpirun -np 2 code

我一些同事说,这些参数应慎重选择听到,以获得最佳的性能(取决于硬件布局)。我希望在运行混合作业方面提供一些建议。

感谢

回答

3

正确的并行配置的一个真正的应用程序代码的选择从来不是一件小事。 MPI进程和OpenMP线程在多处理器节点上的最佳映射取决于算法的具体实现,OpenMP运行时,高速缓存存储器层次结构的内部组织以及与处理器体系结构相关的其他因素。

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

在一个m x n节点,其中m是处理器插槽和n的数量是这样的实验将涉及运行代码为MPI的数目的所有可能的积分值CPU内核的数量处理p和OpenMP边线q使得每个可用编译器都有p x q = m x n

下面是针对4个12 AMD Opteron节点的pq的不同组合获得的并行加速图。由乔治德利奇从HiPERiSM咨询LLC technical report HCTR-2011-2取数据,2010. Parallel speedup for different numbers of MPI processes and OpenMP threads. Data taken from HiPERiSM Consulting LLC technical report HCTR-2011-2 by George Delic, 2010 可以看到,对于该特定代码的处理器体系结构每MPI过程OpenMP的线程的最佳数量是1。然而的4个线程和12个MPI进程的情况下就紧随其后。