Как устранить ошибку MPI_Startall: MPI_Start (106): сбой MPI_Start (запрос = 0x557c63faa7b0) - PullRequest
0 голосов
/ 09 апреля 2020

Я написал некоторый код, чтобы изменить способ коммуникации mpi с блокировки на постоянную неблокировку , правильная компиляция。, но когда я выполняю код, возникает ошибка

Неустранимая ошибка в MPI_Start : Запрос в ожидании из-за сбоя, стек ошибок: MPI_Start (106): MPI_Start (request = 0x557c63faa7b0) не удалось MPI_Start (66) .: недопустимый MPI_Request Фатальная ошибка в MPI_Start: запрос в ожидании из-за сбоя, стек ошибок: MPI_Start (106): MPI_Start (запрос = 0x564d9aef5860) сбой MPI_Start (66) .: недопустимый запрос MPI_Request

код следующий:

/*initialize the persistent non-blocking communication*/
int nf1, nf2;
nf1=3*FDORDER/2 -1;
    nf2=nf1-1;

    MPI_Bsend_init(&bufferlef_to_rig[1][1][1],NY*NZ*nf1,MPI_FLOAT,INDEX[1],TAG1,MPI_COMM_WORLD,&req[0]);
    MPI_Bsend_init(&bufferrig_to_lef[1][1][1],NY*NZ*nf2,MPI_FLOAT,INDEX[2],TAG2,MPI_COMM_WORLD,&req[1]);
    MPI_Bsend_init(&bufferfro_to_bac[1][1][1],NX*NY*nf1,MPI_FLOAT,INDEX[5],TAG3,MPI_COMM_WORLD,&req[2]);
    MPI_Bsend_init(&bufferbac_to_fro[1][1][1],NX*NY*nf2,MPI_FLOAT,INDEX[6],TAG4,MPI_COMM_WORLD,&req[3]);
    MPI_Bsend_init(&buffertop_to_bot[1][1][1],NX*NZ*nf1,MPI_FLOAT,INDEX[3],TAG5,MPI_COMM_WORLD,&req[4]);
    MPI_Bsend_init(&bufferbot_to_top[1][1][1],NX*NZ*nf2,MPI_FLOAT,INDEX[4],TAG6,MPI_COMM_WORLD,&req[5]);
    MPI_Recv_init(&bufferlef_to_rig[1][1][1],NY*NZ*nf1,MPI_FLOAT,INDEX[2],TAG1,MPI_COMM_WORLD,&req[6]);
    MPI_Recv_init(&bufferrig_to_lef[1][1][1],NY*NZ*nf2,MPI_FLOAT,INDEX[1],TAG2,MPI_COMM_WORLD,&req[7]);
    MPI_Recv_init(&bufferfro_to_bac[1][1][1],NX*NY*nf1,MPI_FLOAT,INDEX[6],TAG3,MPI_COMM_WORLD,&req[8]);
    MPI_Recv_init(&bufferbac_to_fro[1][1][1],NX*NY*nf2,MPI_FLOAT,INDEX[5],TAG4,MPI_COMM_WORLD,&req[9]);
    MPI_Recv_init(&buffertop_to_bot[1][1][1],NX*NZ*nf1,MPI_FLOAT,INDEX[4],TAG5,MPI_COMM_WORLD,&req[10]);
    MPI_Recv_init(&bufferbot_to_top[1][1][1],NX*NZ*nf2,MPI_FLOAT,INDEX[3],TAG6,MPI_COMM_WORLD,&req[11]);
/*motivate the non-block object*/
            MPI_Startall(12,&req[0]);

            time_v_update[nt]+=update_v(xb[0],xb[1],yb[0],yb[1],zb[0],zb[1],nt,vx,vy,vz,sxx,syy,szz,sxy,syz,sxz,rho,rjp, rkp,rip,srcpos_loc,signals,signals,signals,nsrc_loc,absorb_coeff,0);

            if(ABS_TYPE==1){
                update_v_CPML(xb[0],xb[1],yb[0],yb[1],zb[0],zb[1],nt,vx,vy,vz,sxx,syy,szz,sxy,syz,sxz,rho,rjp,rkp,rip,srcpos_loc,signals,signals,signals,nsrc_loc,absorb_coeff,0,K_x,a_x,b_x,K_x_half,a_x_half,b_x_half, K_y,a_y,b_y,K_y_half,a_y_half,b_y_half,K_z,a_z,b_z,K_z_half,a_z_half,b_z_half,psi_sxx_x,psi_sxy_x,psi_sxz_x,psi_sxy_y,psi_syy_y,psi_syz_y,psi_sxz_z,psi_syz_z,psi_szz_z);
                }

            MPI_Waitall(12,&req[0],&status[0]);
...