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 (将#修改为@)