Process mpi进程ID

Process mpi进程ID,process,mpi,pid,Process,Mpi,Pid,我想获取一个mpi应用程序的进程ID,我从mpirun/mpiexec工具开始 例如,我使用8个进程运行代码,并希望在执行开始时获得所有这8个进程的进程ID,以作为输入提供给另一个工具 正确的方法是什么?我不相信有任何MPI库例程会返回运行MPI进程的o/s进程的pid。确切地说,我不认为MPI标准要求在MPI进程和o/s进程之间存在一对一的映射,也不要求任何其他的映射基数,尽管我认为我从未使用过在不同进程视图之间没有一对一映射的MPI实现 除此之外,如果您在Linux机器上,为什么不简单地使用

我想获取一个mpi应用程序的进程ID,我从mpirun/mpiexec工具开始

例如,我使用8个进程运行代码,并希望在执行开始时获得所有这8个进程的进程ID,以作为输入提供给另一个工具


正确的方法是什么?

我不相信有任何MPI库例程会返回运行MPI进程的o/s进程的pid。确切地说,我不认为MPI标准要求在MPI进程和o/s进程之间存在一对一的映射,也不要求任何其他的映射基数,尽管我认为我从未使用过在不同进程视图之间没有一对一映射的MPI实现


除此之外,如果您在Linux机器上,为什么不简单地使用
getpid
?每个MPI进程都应该有自己的pid。我想有一个Windows系统调用也会做同样的事情,但我对Windows了解不多。

我不相信有任何MPI库例程会返回运行MPI进程的o/s进程的pid。确切地说,我不认为MPI标准要求在MPI进程和o/s进程之间存在一对一的映射,也不要求任何其他的映射基数,尽管我认为我从未使用过在不同进程视图之间没有一对一映射的MPI实现


除此之外,如果您在Linux机器上,为什么不简单地使用
getpid
?每个MPI进程都应该有自己的pid。我猜有一个Windows系统调用,它做同样的事情,但我对Windows不太了解。

为什么不使用排名?你也可以通过htop检查,但就像HPC mark建议的那样,它可以更改每一次跑步为什么不使用排名?你也可以通过htop检查,但就像HPC mark建议的那样,它可以更改每一次跑步有一个建议没有达到标准的MPI-3,称为端点。它允许一个OS进程承载多个MPI列组,并将它们分配给任意执行线程。根据该标准,每个级别在流程组中标识一个单独的流程,但“流程是依赖于实现的对象”,即,这并不意味着MPI流程是一个操作系统流程。有一个关于MPI-3的建议没有符合该标准,称为端点。它允许一个OS进程承载多个MPI列组,并将它们分配给任意执行线程。根据该标准,每个级别在流程组中标识一个单独的流程,但“流程是依赖于实现的对象”,即,并不一定意味着MPI流程是操作系统流程。