如何解决MPI Scatter and Gather无法用于一维阵列
我正在尝试在群集上运行混合MPI / OpenMP作业,在该群集上,每个节点都启动MPI任务,而OpenMP使用该节点的所有cpu核心。该代码在我的计算机上工作正常,但是在群集上运行时却显示此类错误:
select.c:434 UCX错误,没有活动消息传输到:posix /内存-目标不可达,sysv /内存-目标不可达,自身/内存-目标不可达,sockcm / sockaddr-否,rdmacm / sockaddr-否是bcopy,cma /内存-不是bcopy
这是我的代码:
int main(int argc,char *argv[]){
int size;
int rank;
double *global_var = NULL;
double local_var[5];
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&size);
MPI_Comm_rank(MPI_COMM_WORLD,&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,&local_var,MPI_COMM_WORLD);
execute_function_here();
MPI_Gather(&local_var,global_var,MPI_COMM_WORLD);
MPI_Finalize();
if(rank == 0){
//do something with gathered array
delete [] global_var;
}
return 0;
}
我正在使用intel编译器和intel mpi。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。