You might give it a try with 1.8.1 or the nightly snapshot from 1.8.2 - we updated ROMIO since the 1.6 series, and whatever fix is required may be in the newer version
On May 14, 2014, at 6:52 AM, CANELA-XANDRI Oriol <oriol.canela-xan...@roslin.ed.ac.uk> wrote: > Hello, > > I am using MPI IO for writing/reading a block cyclic distribution matrix > into a file. > > It works fine except when there is some MPI threads with no data (i.e. when > the matrix is small enough, or the block size is big enough that some > processes in the grid do not have any matrix block). In this case, I receive > an error when calling MPI_File_set_view saying that the data cannot be freed. > I tried with 1.3 and 1.6 versions. When I try with MPICH it works without > errors. Could this be a bug? > > My function is (where nBlockRows/nBlockCols define the size of the blocks, > nGlobRows/nGlobCols define the global size of the matrix, nProcRows/nProcCols > define the dimensions of the process grid, and fname is the name of the > file.): > > void Matrix::writeMatrixMPI(std::string fname) { > int dims[] = {this->nGlobRows, this->nGlobCols}; > int dargs[] = {this->nBlockRows, this->nBlockCols}; > int distribs[] = {MPI_DISTRIBUTE_CYCLIC, MPI_DISTRIBUTE_CYCLIC}; > int dim[] = {communicator->nProcRows, communicator->nProcCols}; > char nat[] = "native"; > int rc; > MPI_Datatype dcarray; > MPI_File cFile; > MPI_Status status; > > MPI_Type_create_darray(communicator->mpiNumTasks, communicator->mpiRank, 2, > dims, distribs, dargs, dim, MPI_ORDER_FORTRAN, MPI_DOUBLE, &dcarray); > MPI_Type_commit(&dcarray); > > std::vector<char> fn(fname.begin(), fname.end()); > fn.push_back('\0'); > rc = MPI_File_open(MPI_COMM_WORLD, &fn[0], MPI_MODE_CREATE | > MPI_MODE_WRONLY, MPI_INFO_NULL, &cFile); > if(rc){ > std::stringstream ss; > ss << "Error: Failed to open file: " << rc; > misc.error(ss.str(), 0); > } > else > { > MPI_File_set_view(cFile, 0, MPI_DOUBLE, dcarray, nat, MPI_INFO_NULL); > MPI_File_write_all(cFile, this->m, this->nRows*this->nCols, MPI_DOUBLE, > &status); > } > MPI_File_close(&cFile); > MPI_Type_free(&dcarray); > } > > Best regards, > > Oriol > > -- > The University of Edinburgh is a charitable body, registered in > Scotland, with registration number SC005336. > > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users