【问题标题】:How OpenMP can be run through mpi?如何通过 mpi 运行 OpenMP?
【发布时间】:2022-01-24 22:18:33
【问题描述】:

我有一个代码,其中一部分代码使用 MPI,另一部分使用 OpenMP。我关注了 (MPI OpenMp hybrid) 链接和其他几个链接,但无法完成我需要的操作。当 MPI 部分执行计算时,OpenMP 不做任何事情,反之亦然。

我可以成功编译代码。

现在假设我运行代码

mpirun -np 4 ./program

如何运行代码,以便当代码遇到 OpenMP 部分时,它会在与 np 相同数量的线程中运行?

【问题讨论】:

  • 您使用的是哪个 MPI 库?
  • 基本上这种方式是行不通的。如果您有 8 个内核,例如,您将启动 4 个 MPI 任务,每个任务有 2 个 OpenMP 线程(并确保 MPI 进行进程绑定,它为每个 MPI 任务提供至少两个内核)。
  • OpenMP @DmitriChubarov

标签: mpi openmp hybrid


【解决方案1】:

您想要的可能与否取决于您的机器。如果您在单个节点上运行 MPI,请继续阅读。但是,MPI 通常用于分布式内存,因此无法跨越 OpenMP 线程来处理分布式数据。

现在,如果您在单个节点上运行,您可以使用 MPI 共享内存,这样一个进程就可以访问所有内存,然后使用 OpenMP 线程来处理这块内存。见https://pages.tacc.utexas.edu/~eijkhout/pcse/html/mpi-shared.html

【讨论】:

    猜你喜欢
    • 2019-11-14
    • 1970-01-01
    • 2011-01-10
    • 2015-03-26
    • 2013-08-27
    • 1970-01-01
    • 2021-10-24
    • 2018-09-29
    • 2018-05-29
    相关资源
    最近更新 更多