mpirun 不起作用并要求将 TMPDIR 变量更改为 /tmp

Ale*_*nov 4 c++ mpi openmpi

我编译了下一个代码:

#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;
}
Run Code Online (Sandbox Code Playgroud)

我是这样做的:

mpic++ -o test test.cpp
Run Code Online (Sandbox Code Playgroud)

然后我尝试运行该文件:

mpirun -np 2 test
Run Code Online (Sandbox Code Playgroud)

但发生了错误:

PMIx 检测到临时目录名称导致路径对于 Unix 域套接字来说太长:

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

尝试将 TMPDIR 环境变量设置为指向长度较短的内容

所以我这样做了:

export TMPDIR=/tmp
Run Code Online (Sandbox Code Playgroud)

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

但是出现了另一个错误:

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

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

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

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

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

退出代码:1

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

Gil*_*det 5

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

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

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