#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, и работа прошла просто отлично.