MPI output write 2d block cyclic distribution in C using some of MPI_File_write -
MPI output write 2d block cyclic distribution in C using some of MPI_File_write -
i have problems writing 2d block cyclic distributed array in file.
i've tried things:
rc=mpi_file_open(mpi_comm_world, rez, mpi_mode_wronly, mpi_info_null, &cfile); if(rc){printf("failed open file! error: %d \n", rc);mpi_finalize(); fflush(stdout);} else { mpi_file_write_all(cfile, matc, loccc*locrc, compa, &status); }
...
rc=mpi_file_open(mpi_comm_world, rez, mpi_mode_wronly, mpi_info_null, &cfile); if(rc){printf("failed open file! error: %d \n", rc);mpi_finalize(); fflush(stdout);} else { mpi_file_write_ordered(cfile, matc, loccc*locrc, compa, &status); }
...
rc=mpi_file_open(mpi_comm_world, rez, mpi_mode_wronly, mpi_info_null, &cfile); if(rc){printf("failed open file! error: %d \n", rc);mpi_finalize(); fflush(stdout);} else { mpi_file_write_shared(cfile, matc, loccc*locrc, compa, &status); }
i couldn't find nil in post (but how read file , format 2d block cyclic distributed array (which i've succeeded using post)): mpi io reading , writing block cyclic matrix
sorry terrible english language :(
you told have used post: mpi io reading , writing block cyclic matrix. must assume things - such dimensions of matrix matc: let's assume ther m rows , n columns. dimensions of block in matc, let's assume m_b , n_b. let's assume number of processors nproc, , rank of proc saved in variable node. also, must know dimensions of 2d-torus (processor grid), our illustration p , q. here's how that:
int dims[]={m, n}, dargs[]={m_b, n_b}, distribs[]={mpi_distribute_cyclic, mpi_distribute_cyclic}, nproc, dim[]={p, q}; char nat[]="native"; mpi_datatype dcarray, compa; //don't know type compa ... mpi_type_create_darray(nproc, node, 2, dims, distribs, dargs, dim, mpi_order_c, compa, &dcarray); mpi_type_commit(&dcarray); rc=mpi_file_open(comm, rez, mpi_mode_create | mpi_mode_wronly, mpi_info_null, &cfile); if(rc){printf("failed open file! error: %d \n", rc);mpi_finalize(); fflush(stdout);} else { mpi_file_set_view(cfile, 0, compa, dcarray, nat, mpi_info_null); mpi_file_write_all(cfile, matc, locrc*loccc, compa, &status); } mpi_file_close(&cfile);
c 2d mpi block cyclic
Comments
Post a Comment