/****if* H5Pf/h5pget_mpio_actual_io_mode_c * NAME * h5pget_mpio_actual_io_mode_c * PURPOSE * Calls H5Pget_mpio_actual_io_mode * * INPUTS * dxpl_id - Dataset transfer property list identifier. * OUTPUTS * actual_io_mode - The type of I/O performed by this process. * * RETURNS * 0 on success, -1 on failure * AUTHOR * M. Scot Breitenfeld * July 27, 2012 * SOURCE */ int_f nh5pget_mpio_actual_io_mode_c(hid_t_f *dxpl_id, int_f *actual_io_mode) /******/ { int ret_value = -1; H5D_mpio_actual_io_mode_t c_actual_io_mode; /* * Call H5Pget_mpio_actual_io_mode_f function. */ if( (H5Pget_mpio_actual_io_mode((hid_t)*dxpl_id, &c_actual_io_mode)) <0 ) return ret_value; /* error occurred */ *actual_io_mode =(int_f)c_actual_io_mode; ret_value = 0; return ret_value; }
void H5output::WriteFields(double ***field, std::string fname, int nx, int ny, int nz, int rank){ h5_float64_t* buffer; buffer = new h5_float64_t[nz*ny*nx]; std::ofstream myfile; if (rank!=-1) { std::stringstream ss; ss << "proc-" << rank << ".txt"; std::string filename = ss.str(); myfile.open(filename.c_str()); } int n = 0; for (int k=1; k<nz-1; k++) { for (int j=1; j<ny-1; j++) { for (int i=1; i<nx-1; i++) { buffer[n++] = field[i][j][k]; if (rank!=-1) myfile << i << " " << j << " " << k << " : " << field[i][j][k] << std::endl; } } } if (rank!=-1) myfile.close(); H5Block3dWriteScalarFieldFloat64(fldsfile, fname.c_str(), buffer); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if(!rank) { // show the output mode that is actually being used H5D_mpio_actual_io_mode_t actual_io_mode; H5Pget_mpio_actual_io_mode(fldsfile->xfer_prop, &actual_io_mode); if(actual_io_mode == H5D_MPIO_NO_COLLECTIVE) printf("H5D_MPIO_NO_COLLECTIVE\n"); else if(actual_io_mode == H5D_MPIO_CHUNK_INDEPENDENT) printf("H5D_MPIO_CHUNK_INDEPENDENT\n"); else if(actual_io_mode == H5D_MPIO_CHUNK_COLLECTIVE) printf("H5D_MPIO_CHUNK_COLLECTIVE\n"); else if(actual_io_mode == H5D_MPIO_CONTIGUOUS_COLLECTIVE) printf("H5D_MPIO_CONTIGUOUS_COLLECTIVE\n"); else printf("unrecognized output method\n"); // show the chunking that is actually used H5D_mpio_actual_chunk_opt_mode_t actual_chunk_opt_mode; H5Pget_mpio_actual_chunk_opt_mode(fldsfile->xfer_prop, &actual_chunk_opt_mode); if(actual_chunk_opt_mode == H5D_MPIO_NO_CHUNK_OPTIMIZATION) printf("H5D_MPIO_NO_CHUNK_OPTIMIZATION\n"); else if(actual_chunk_opt_mode == H5D_MPIO_MULTI_CHUNK) printf("H5D_MPIO_MULTI_CHUNK\n"); //else if(actual_chunk_opt_mode == H5D_MPIO_MULTI_CHUNK_NO_OPT) // printf("H5D_MPIO_MULTI_CHUNK_NO_OPT\n"); else if(actual_chunk_opt_mode == H5D_MPIO_LINK_CHUNK) printf("H5D_MPIO_LINK_CHUNK\n"); else printf("unrecognized chunking method\n"); } delete [] buffer; }