summaryrefslogtreecommitdiffstats
path: root/src/H5Dmpio.c
diff options
context:
space:
mode:
authorMuQun Yang <ymuqun@hdfgroup.org>2006-02-23 21:47:51 (GMT)
committerMuQun Yang <ymuqun@hdfgroup.org>2006-02-23 21:47:51 (GMT)
commit89629922985edbd558ddf036fbfbbaf29876668a (patch)
tree20523d0a390b2b9b0be2cf36f638e20460ef0438 /src/H5Dmpio.c
parent19476ba364051841add6712995709a87d64597e7 (diff)
downloadhdf5-89629922985edbd558ddf036fbfbbaf29876668a.zip
hdf5-89629922985edbd558ddf036fbfbbaf29876668a.tar.gz
hdf5-89629922985edbd558ddf036fbfbbaf29876668a.tar.bz2
[svn-r11964] Purpose:
bug fix Description: ret_value is not set to SUCCEED in H5D_mpio_select_write That causes the 64-bit intel compiler unhappy. It will give a non-zero number and cause the testing fake failure. Another one is picked up by cmpi again. For one optimization case, another variable is not initialized properly and compiler set an unhappy number, cause the test failed. Solution: Properly initialize those variables. Platforms tested: teragrid:parallel mir:parallel heping: parallel and sequential tungsten:parallel Misc. update: h5committest doesn't finish due to no space left on device. parallel tests still failed at tungsten with cmpi. It looks like it was a bug from cmpi.
Diffstat (limited to 'src/H5Dmpio.c')
-rw-r--r--src/H5Dmpio.c43
1 files changed, 37 insertions, 6 deletions
diff --git a/src/H5Dmpio.c b/src/H5Dmpio.c
index 142986e..3e95d37 100644
--- a/src/H5Dmpio.c
+++ b/src/H5Dmpio.c
@@ -377,13 +377,17 @@ H5D_mpio_select_write(H5D_io_info_t *io_info,
haddr_t addr,
const void *buf)
{
- herr_t ret_value;
+ herr_t ret_value = SUCCEED;
FUNC_ENTER_NOAPI(H5D_mpio_select_write,FAIL);
+#ifdef KENT
+ printf("coming into mpio_select_write\n");
+#endif
/*OKAY: CAST DISCARDS CONST QUALIFIER*/
if(H5F_block_write (io_info->dset->oloc.file, H5FD_MEM_DRAW, addr, mpi_buf_count, io_info->dxpl_id, buf)<0)
HGOTO_ERROR(H5E_IO,H5E_WRITEERROR,FAIL,"can't finish collective parallel write");
+
done:
FUNC_LEAVE_NOAPI(ret_value);
} /* end H5D_mpio_select_write() */
@@ -589,6 +593,9 @@ H5D_contig_collective_io(H5D_io_info_t *io_info,
if(io_info->dset->shared->layout.type == H5D_CONTIGUOUS)
addr = H5D_contig_get_addr(io_info->dset);
+#ifdef KENT
+ printf("before inter_collective_io\n");
+#endif
if(H5D_inter_collective_io(io_info,file_space,mem_space,addr,buf,do_write)<0)
HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL,"couldn't finish shared collective MPI-IO");
@@ -943,9 +950,15 @@ printf("before inter_collective_io for total chunk = 1 \n");
HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL,"couldn't finish MPI-IO");
done:
- if(num_chunk == 0) HDfree(total_chunk_addr_array);
- else {
- if (fm->total_chunks != 1) {
+#ifdef KENT
+printf("before freeing memory inside H5D_link_collective_io ret_value = %d\n",ret_value);
+#endif
+
+
+
+ if (fm->total_chunks != 1) {
+ if(num_chunk == 0) HDfree(total_chunk_addr_array);
+ else {
HDfree(chunk_addr_info_array);
HDfree(chunk_mtype);
HDfree(chunk_ftype);
@@ -955,6 +968,10 @@ printf("before inter_collective_io for total chunk = 1 \n");
}
}
+#ifdef KENT
+printf("before leaving H5D_link_collective_io ret_value = %d\n",ret_value);
+#endif
+
FUNC_LEAVE_NOAPI(ret_value)
}
/* end H5D_link_chunk_collective_io */
@@ -993,6 +1010,9 @@ H5D_multi_chunk_collective_io(H5D_io_info_t *io_info,fm_map *fm,const void *buf,
hbool_t select_chunk;
hbool_t last_io_mode_coll = TRUE;
herr_t ret_value = SUCCEED;
+#ifdef KENT
+ int mpi_rank;
+#endif
FUNC_ENTER_NOAPI_NOINIT(H5D_multi_chunk_collective_io)
@@ -1189,6 +1209,9 @@ printf("before final collective IO\n");
if(H5D_final_collective_io(io_info,&mpi_file_type,&mpi_buf_type,&coll_info,buf,do_write)<0)
HGOTO_ERROR(H5E_IO, H5E_CANTGET, FAIL,"couldn't finish collective MPI-IO");
done:
+#ifdef KENT
+printf("before leaving inter_collective_io ret_value = %d\n",ret_value);
+#endif
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5D_inter_collective_io */
@@ -1227,13 +1250,18 @@ H5D_final_collective_io(H5D_io_info_t *io_info,MPI_Datatype*mpi_file_type,MPI_Da
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set MPI-I/O properties");
plist_is_setup=1;
- /*HDfprintf(stdout,"chunk addr %Hu\n",coll_info->chunk_addr);
- printf("mpi_buf_count %d\n",coll_info->mpi_buf_count); */
+#ifdef KENT
+ HDfprintf(stdout,"chunk addr %Hu\n",coll_info->chunk_addr);
+ printf("mpi_buf_count %d\n",coll_info->mpi_buf_count);
+#endif
if(do_write) {
ret_value = (io_info->ops.write)(io_info,
coll_info->mpi_buf_count,0,NULL,NULL,coll_info->chunk_addr,
buf);
/* Check return value from optimized write */
+#ifdef KENT
+ printf("ret_value after final collective IO= %d\n",ret_value);
+#endif
if (ret_value<0)
HGOTO_ERROR(H5E_DATASET, H5E_WRITEERROR, FAIL, "optimized write failed")
}
@@ -1263,6 +1291,9 @@ H5D_final_collective_io(H5D_io_info_t *io_info,MPI_Datatype*mpi_file_type,MPI_Da
if (MPI_SUCCESS != (mpi_code= MPI_Type_free( mpi_file_type )))
HMPI_DONE_ERROR(FAIL, "MPI_Type_free failed", mpi_code);
}
+#ifdef KENT
+ printf("ret_value before leaving final_collective_io=%d\n",ret_value);
+#endif
FUNC_LEAVE_NOAPI(ret_value)
}/* end H5D_final_collective_io */