gpt4 book ai didi

c - 使用 MPI_COMM_SELF

转载 作者:太空狗 更新时间:2023-10-29 17:22:03 25 4
gpt4 key购买 nike

我发现了一个名为 MPI_COMM_SELF 的 MPI 通信器。问题是,我不知道,什么时候有用。在我看来,只是每个进程都“认为”自己是 root。

你能解释一下 MPI_COMM_SELF 是如何工作的吗?它在什么情况下有用?

我找到了 this幻灯片放映,但那里只简要提到了通信器。


我试过这个“Hello, world”示例,所有进程都返回 0 作为它们的 PID。

#include <mpi.h>
#include <stdio.h>

int main() {
MPI_Init(NULL, NULL);

int world_rank;
MPI_Comm_rank(MPI_COMM_SELF, &world_rank);

printf("Hello, my PID is %d!\n",
world_rank);

MPI_Finalize();
return 0;
}

最佳答案

MPI 通信器包含两条信息:进程集合和该集合的上下文。默认的通信器是 MPI_COMM_WORLD——每个进程——和 MPI_COMM_SELF——只有一个进程。

你可以让更多的沟通者与所有、一个或一些进程。

为什么上下文很重要?想想图书馆。使用 MPI 的库可能会与该库的客户端发生冲突,除非库会复制通信器,从而创建一个库可以通信的上下文,而无需担心客户端在做什么。

MPI_COMM_SELF 是一个单独的进程。如果调用集体例程,通信器中的所有进程都必须参与。

MPI_COMM_SELF 对 MPI-IO 例程特别有用,但前提是您需要“每个进程的文件”。如果您正在与多个 MPI 进程共享文件(您可能应该这样做),请使用包含这些 MPI 进程的通信器。

关于c - 使用 MPI_COMM_SELF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30511268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com