[svn-r2935] Purpose:

Bug fix
Description:
    The optimized MPIO code was not working with the TFLOPS machine.
    It kept reporting "can't convert from size to size_i" errors in
    H5FD_mpio_write() and H5FD_mpio_read().
Solution:
    The error was actually in H5S_mpio_spaces_xfer() in H5Smpio.c
    in which the variable mpi_count was declared as size_t (only
    4 bytes big in TFLOPS) when it should be hsize_t (8 bytes big in TFLOPS).
    Corrected and also changed to use the (hsize_t) to case size_i in
    H5FD_mpio_write() and H5FD_mpio_read() since that is what it should
    be.
Platforms tested:
    TFLOPS and modi4 (-64, parallel)
This commit is contained in:
Albert Cheng 2000-11-15 14:59:44 -05:00
parent 5939bcff41
commit e1cd6bcb61
2 changed files with 3 additions and 3 deletions

View File

@ -1088,7 +1088,7 @@ H5FD_mpio_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id, haddr_t add
if (haddr_to_MPIOff(addr, &mpi_off/*out*/)<0)
HRETURN_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "can't convert from haddr to MPI off");
size_i = (int)size;
if ((size_t)size_i != size)
if ((hsize_t)size_i != size)
HRETURN_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "can't convert from size to size_i");
#ifdef H5FDmpio_DEBUG
@ -1330,7 +1330,7 @@ H5FD_mpio_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id/*unused*/,
if (haddr_to_MPIOff(file->disp, &mpi_disp)<0)
HRETURN_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "can't convert from haddr to MPI off");
size_i = (int)size;
if ((size_t)size_i != size)
if ((hsize_t)size_i != size)
HRETURN_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "can't convert from size to size_i");
#ifdef H5FDmpio_DEBUG

View File

@ -549,7 +549,7 @@ H5S_mpio_spaces_xfer(H5F_t *f, const struct H5O_layout_t *layout,
herr_t ret_value = SUCCEED;
int err;
haddr_t disp, addr;
size_t mpi_count;
hsize_t mpi_count;
hsize_t mpi_buf_count, mpi_unused_count;
MPI_Datatype mpi_buf_type, mpi_file_type;
hbool_t mbt_is_derived, mft_is_derived;