MPI Разброс и сбор не работает для одномерного массива

#c #mpi #cluster-computing

#c #mpi #кластерные вычисления

Вопрос:

Я пытаюсь запустить гибридное задание MPI / OpenMP в кластере, где каждый узел инициирует задачу MPI, а OpenMP использует все процессорные ядра этого узла. Код отлично работает на моем компьютере, но он показывает такую ошибку при запуске в кластере:

ошибка select.c: 434 UCX нет активных сообщений, передаваемых в: posix / memory — пункт назначения недоступен, sysv / memory — пункт назначения недоступен, self / memory — пункт назначения недоступен, sockcm / sockaddr — нет am bcopy, rdmacm / sockaddr — нет am bcopy, cma / memory — нет am bcopy

Вот мой код:

 int main(int argc, char *argv[]){

    int size;
    int rank;

    double *global_var = NULL;
    double local_var[5];

    MPI_Init(amp;argc, amp;argv); 
    MPI_Comm_size(MPI_COMM_WORLD, amp;size);
    MPI_Comm_rank(MPI_COMM_WORLD, amp;rank); 
      
    if(rank == 0){
        t_1 = std::time(0);
        cout << "number of MPI processes: " << size << endl;
        cout << "number of maximum possible threads: "<< omp_get_max_threads()<<endl;

        global_var = new double[5*size];              
    }

    MPI_Scatter(global_var, 5, MPI_DOUBLE, amp;local_var, 5, MPI_DOUBLE, 0, MPI_COMM_WORLD); 

    execute_function_here();

    MPI_Gather(amp;local_var, 5, MPI_DOUBLE, global_var, 5, MPI_DOUBLE, 0, MPI_COMM_WORLD);

    MPI_Finalize(); 

    if(rank == 0){
      //do something with gathered array
        delete [] global_var;
    } 
   return 0;
}
  

Я использую компилятор Intel и intel mpi.

Комментарии:

1. Похоже, проблема не в вашем коде, а в установке MPI в этом кластере. Вы уверены, что он установлен и настроен правильно в целевом кластере?

2. Привет, спасибо! Я только что запустил свою работу с mvapich2 вместо intel mpi, и работа прошла просто отлично.