【问题标题】:mpirun doesnt work and ask to change TMPDIR variable to /tmpmpirun 不起作用并要求将 TMPDIR 变量更改为 /tmp
【发布时间】:2017-11-18 07:20:05
【问题描述】:

我编译了下一段代码:

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


int main(int argc, char* argv[]) {
    int rank, size, len;
    char host[MPI_MAX_PROCESSOR_NAME];
    MPI_Init(&argc, &argv);
    MPI_Finalize();
    return 0;
}

我是这样做的:

mpic++ -o test test.cpp

然后我尝试运行该文件:

mpirun -np 2 test

但是发生了错误:

PMIx 检测到一个临时目录名称,导致 在对 Unix 域套接字来说太长的路径中:

临时目录:/var/folders/12/k2b2579s1yz2cfl8ppb1c6m80000gn/T/openmpi-sessions-501@MacBook-Air-Alexander-2_0/22793

尝试将您的 TMPDIR 环境变量设置为指向 长度更短的东西

所以我这样做了:

export TMPDIR=/tmp

再次尝试运行:mpirun -np 2 test

但是又出现了一个错误:

主作业正常终止,但有 1 个进程返回

非零退出代码根据用户方向,作业已中止

----------------------------------------------- --------

mpirun 检测到一个或多个进程以非零状态退出,从而导致 要终止的工作。这样做的第一个过程是:

进程名称:[[22798,1],0]

退出代码:1

请告诉我,我应该怎么做才能运行这段代码?

【问题讨论】:

  • 您的 MPI 安装已损坏。你是怎么安装的?你用什么版本?另请参阅stackoverflow.com/questions/31330511/… 另请阅读How to Ask - 您的问题标题应该改进。
  • @Zulan:我已经通过 brew install open-mpi 安装了 open-mpi。我当前的版本 打开 MPI v2.1.1。

标签: c++ mpi openmpi


【解决方案1】:

初始错误已被报告,这被视为一项功能。 像您一样使用短路的TMPDIR 是正确的。

您可能想尝试添加 orte_tmpdir_base = /tmp 在您的openmpi-mca-params.conf 中查看它是否解决了您的问题 (因此您不必在每个终端中设置TMPDIR

关于第二个问题,你很可能运行/usr/bin/test 而不是你的测试程序,所以你可以简单地 mpirun -np 2 ./test 或将您的测试程序重命名为不在您的PATH中的名称

【讨论】:

  • 感谢您的回答,我已经编译并运行了我的代码!
  • 请问在哪里可以找到“openmpi-mca-params.conf”文件?
  • 它在你的安装目录的etc子目录中
猜你喜欢
  • 2021-11-18
  • 2021-11-14
  • 1970-01-01
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多