gpt4 book ai didi

c - OpenMPI - 不同进程上的相同排名

转载 作者:行者123 更新时间:2023-11-30 16:34:37 25 4
gpt4 key购买 nike

我一直在使用 OpenMPI,但在需要从我的过程中获得排名时,我没有得到预期的行为。

我有一个简单的 C 程序,应该打印每个进程的排名:

minimal.c:

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

int
main (int argc, char *argv[])
{
unsigned int procs;
unsigned int self;
MPI_Comm com;

/* MPI ini */
MPI_Init (&argc, &argv);
com = MPI_COMM_WORLD;
MPI_Comm_size (com, &procs);
MPI_Comm_rank (com, &self);

printf("My rank is %d\n", self);

/* MPI Finalize */
MPI_Finalize();
return 0;
}

我用它编译:

mpicc minimal.c -o minimal
<小时/>

现在,如果我在自己的计算机上运行以下命令:

mpirun -np 2 minimal

我得到以下跟踪:

$ mpirun -np 2 minimal
My rank is 0
My rank is 0

我觉得这很令人不安。

<小时/>

所以,我继续挖掘 mpirun 手册,并最终使用 -display-devel-map-report-bindings 打印附加信息,这就是跟踪我得到:

$ mpirun -np 2 -display-devel-map -report-bindings minimal
Data for JOB [53858,1] offset 0

Mapper requested: NULL Last mapper: round_robin Mapping policy: BYCORE Ranking policy: SLOT
Binding policy: CORE:IF-SUPPORTED Cpu set: NULL PPR: NULL Cpus-per-rank: 1
Num new daemons: 0 New daemon starting vpid INVALID
Num nodes: 1

Data for node: UX31A Launch id: -1 State: 2
Daemon: [[53858,0],0] Daemon launched: True
Num slots: 2 Slots in use: 2 Oversubscribed: FALSE
Num slots allocated: 2 Max slots: 0
Username on node: NULL
Num procs: 2 Next node_rank: 2
Data for proc: [[53858,1],0]
Pid: 0 Local rank: 0 Node rank: 0 App rank: 0
State: INITIALIZED App_context: 0
Locale: [BB/..]
Binding: [BB/..]
Data for proc: [[53858,1],1]
Pid: 0 Local rank: 1 Node rank: 1 App rank: 1
State: INITIALIZED App_context: 0
Locale: [../BB]
Binding: [../BB]
[UX31A:04861] MCW rank 1 bound to socket 0[core 1[hwt 0-1]]: [../BB]
[UX31A:04861] MCW rank 0 bound to socket 0[core 0[hwt 0-1]]: [BB/..]
My rank is 0
My rank is 0

这让我很困惑。

我正在使用 Ubuntu 16.04 和 apt 存储库中的 OpenMPI 软件包。我的电脑是华硕 UX31a。

如果有人能给我一些关于这里发生的事情的见解,我将非常感激。

谢谢!

最佳答案

感谢 Gilles Gouaillardet,我终于找到了发生的事情!

结果我安装了 mpich 库和 openmpi bins!

<小时/>

这就是我所做的:

  1. 检查我的二进制文件中使用了哪个库:

    $ ldd 最小
    ...
    libmpich.so.12 =>/usr/lib/x86_64-linux-gnu/libmpich.so.12
    ...

    $ dpkg -S/usr/lib/x86_64-linux-gnu/libmpich.so.12
    libmpich12:amd64:/usr/lib/x86_64-linux-gnu/libmpich.so.12.1.0

  2. 检查哪个软件包提供了我的 mpiccmpirun 二进制文件:

    $ 哪个 mpirun
    /usr/bin/mpirun

    $ dpkg -S mpirun
    openmpi-bin:/usr/bin/mpirun.openmpi
    ...

  3. 我删除了已安装的 mpich 软件包

    sudo apt-get 删除 libmpich12 libmpich-dev

  4. 我安装了所需的 openmpi

    sudo apt-get install libopenmpi-dev

<小时/>

完成后我再次编译:

$ mpicc minimal.c -o minimal
$ mpirun -np 2 minimal
My rank is 0
My rank is 1

万岁!

关于c - OpenMPI - 不同进程上的相同排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49261093/

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