- 简介MPI+Threads是一种并行编程模型,采用MPI/OpenMP混合编程模型,其中线程用于节点内共享内存并行化,MPI用于多节点分布式内存并行化。OpenMP提供逐步并行化代码的方法,而MPI则通过其隔离地址空间和显式消息API,提供了获得良好并行性能的简单路径。然而,MPI+Threads并不是一个理想的解决方案。由于MPI不知道线程上下文,因此无法用于线程间通信。这导致为类似的并行任务创建单独甚至嵌套的解决方案需要重复努力。此外,由于MPI库需要遵守消息排序语义,因此通过MPI_THREAD_MULTIPLE混合使用线程和MPI可能会因意外串行化而导致性能极差。 我们提出了一种新的MPI扩展,MPIX Thread Communicator(threadcomm),允许在线程并行区域内将线程分配给不同的MPI排名。threadcomm扩展将MPI进程和OpenMP线程结合起来形成一个统一的并行环境。我们展示了这种MPIxThreads(MPI Multiply Threads)范式允许OpenMP和MPI以互补的方式协同工作,以实现更清晰的代码和更好的性能。
- 图表
- 解决问题提出MPIxThreads解决MPI+Threads模型中线程间通信困难的问题,实现更好的并行性能。
- 关键思路MPIxThreads使用MPIX Thread Communicator (threadcomm)扩展,允许线程在并行区域内被分配不同的MPI排名,从而实现线程间通信。
- 其它亮点论文提出的MPIxThreads模型可以更好地结合MPI和OpenMP,实现更干净的代码和更好的性能。实验结果表明,MPIxThreads比MPI+Threads模型具有更好的可扩展性和更高的性能。
- 近期相关研究包括基于MPI和OpenMP的混合并行模型的研究,如MPI+X模型,以及其他解决MPI+Threads模型中线程间通信问题的研究,如MPI+Shared Memory模型。
沙发等你来抢
去评论
评论
沙发等你来抢