我编译了下一个代码:
#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域套接字太长的路径中:
Temp dir:/ 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
请告诉我,我该怎么做才能运行此代码?
答案 0 :(得分:4)
已经报告了初始错误,这被视为一项功能。
如你所做的那样使用短路TMPDIR
是正确的。
你可能想尝试添加
orte_tmpdir_base = /tmp
在openmpi-mca-params.conf
中查看是否可以解决您的问题
(因此您不必在每个终端设置TMPDIR
)
关于第二个问题,你很可能正在运行/usr/bin/test
而不是你的测试程序,所以你可以简单地
mpirun -np 2 ./test
或者将测试程序重命名为不在PATH