我想知道是否在您指定有线程支持的 MPI 程序中,所有线程都进行 MPI::Bcast 调用(确保在调用中,发送方进程仅拥有一个线程),这是否被所有其他线程还是每个进程的一个线程(最快)?
问问题
367 次
3 回答
3
常见的 MPI 实现处理进程之间的通信。支持线程的实现只允许多个线程进行部分或全部 MPI 调用,而不仅仅是一个。一个进程调用中的每一个T
线程都MPI_Bcast
意味着该进程已经调用了MPI_Bcast
T 次,并且期望通信器上的所有其他 rank 都会这样做。
于 2011-07-14T19:08:16.410 回答
1
根据 MPI 实现中的线程支持级别(请检查,MPI 中的线程支持非常粗略),每个进程只进行一次 MPI 调用。
于 2011-07-14T17:04:35.997 回答
1
添加到Novelocrat给出的答案:
MPI 中的基本计算单位是“等级”。在 MPI 的大多数(全部?)有趣的实现中,等级是一个过程。一个进程中的所有线程共享相同的 Rank ID。
MPI 标准支持多级线程并行:MPI_THREAD_SINGLE、MPI_THREAD_FUNNELED、MPI_THREAD_SERIALIZED 和 MPI_THREAD_MULTIPLE。
其中,只有 MPI_THREAD_MULTILE 实际上有多个线程对 MPI 库进行重叠调用。其他三种情况是来自应用程序的断言,即 Rank 可以被视为“单线程”。有关更多信息,请参阅MPI_INIT_THREAD 上的 MPI 标准条目。
于 2011-11-28T16:39:09.070 回答