我编译了下一个代码:

#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

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

最佳答案

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

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

关于第二个问题,您很有可能正在运行/usr/bin/test而不是测试程序,因此您只需mpirun -np 2 ./test或将测试程序重命名为PATH中没有的内容

10-07 23:30