【问题标题】:All processes have my_rank = 0, how to fix?所有进程的 my_rank = 0,如何解决?
【发布时间】:2018-10-18 22:00:51
【问题描述】:

我在运行 mpi 程序时遇到问题。所有进程都声称它们的等级为 0。

我搜索了很多,发现这是由openMP版本和其他东西之间的通信引起的,我必须检查我调用的是哪个mpi。但是没有人以一种有效的方式正确解释如何解决这个问题。

  1. 我必须卸载一些东西吗?在这种情况下,我应该卸载什么以及如何卸载?
  2. 我必须安装一些东西吗?什么以及如何?
  3. 如果前面的问题的答案是否定的,我该如何解决?
  4. 我想,我只是按照讲师告诉我的去做,怎么会出现这个问题?

【问题讨论】:

  • 有编程问题吗?
  • 欢迎来到 SO。许多用户可以在这里为您提供帮助,但您的问题必须是特定于编程问题的。请遵循这些准则,以使他们更轻松地完成任务。 stackoverflow.com/help/how-to-ask
  • 这是 openMP 还是 Open MPI ?
  • 我在这个程序中使用 Open MPI

标签: mpi openmpi


【解决方案1】:

这通常发生在您混合使用两个 MPI 库时。

例如,您正在使用来自MPICHmpirun,但您的应用正在使用来自Open MPI 的库。

您应该首先仔细检查,例如

$ which mpirun
$ mpirun -np 1 ldd a.out

两者都应该指向同一个目录(例如,相同的供应商版本)

【讨论】:

  • 第一个输出:/usr/bin/mpirun 第二个输出:linux-vdso.so.1 => (0x...) libmpich.so.12 => /usr/lib/x86_64-linux -gnu/libmpich.so.12 (0x...) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x...) libcr.so.0 => /usr /lib/libcr.so.0 (0x...) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x...) libpthread.so.0 => /lib /x86_64-linux-gnu/libpthread.so.0 (0x...) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x...) /lib64/ld- linux-x86-64.so.2 (0x...) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x...)
  • 我对最后一条评论感到抱歉,但我不会让我把它分成漂亮的段落。我发布它是为了听听是否有人从中读到任何东西。因为我知道的不够多,无法理解我应该寻找什么
  • 您的应用程序显然在使用MPICH 库,因此假设mpirun 是由Open MPI 提供的,则无法正常工作。您可以使用 Open MPI 重新构建您的应用,也可以使用 MPICH 的 mpirun。
  • 一般来说,您应该使用这种新信息编辑您的问题(以便您可以格式化)并删除评论以便发送通知。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2022-10-15
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
相关资源
最近更新 更多