mpirun не работает и просит изменить переменную TMPDIR на /tmp


Я скомпилировал следующий код:

#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

Скажите мне, пожалуйста, что я должен сделать, чтобы запустить этот код?

1 4
c++

1 ответ:

Начальная ошибка уже была зарегистрирована, и это рассматривается как особенность. использование короткого замыкания TMPDIR, как вы это сделали, правильно.

Возможно, вы захотите попробовать добавить orte_tmpdir_base = /tmp в вашем openmpi-mca-params.conf и посмотреть, исправляет ли он вашу проблему (так что вам не придется устанавливать TMPDIR в каждом терминале)

Что касается второй проблемы, то вы, скорее всего, используете /usr/bin/test вместо своей тестовой программы, поэтому вы можете просто mpirun -np 2 ./test или переименуйте вашу тестовую программу во что-то, чего нет в вашем PATH