summaryrefslogtreecommitdiffstats
path: root/fortran/testpar
diff options
context:
space:
mode:
Diffstat (limited to 'fortran/testpar')
-rw-r--r--fortran/testpar/hyper.F9070
1 files changed, 52 insertions, 18 deletions
diff --git a/fortran/testpar/hyper.F90 b/fortran/testpar/hyper.F90
index 8051b38..edd93cf 100644
--- a/fortran/testpar/hyper.F90
+++ b/fortran/testpar/hyper.F90
@@ -51,6 +51,11 @@ SUBROUTINE hyper(length,do_collective,do_chunk, mpi_size, mpi_rank, nerrors)
INTEGER :: actual_io_mode ! The type of I/O performed by this process
LOGICAL :: is_coll
LOGICAL :: is_coll_true = .TRUE.
+
+ INTEGER :: local_no_collective_cause
+ INTEGER :: global_no_collective_cause
+ INTEGER :: no_selection_io_cause
+
!
! initialize the array data between the processes (3)
! for the 12 size array we get
@@ -231,28 +236,57 @@ SUBROUTINE hyper(length,do_collective,do_chunk, mpi_size, mpi_rank, nerrors)
CALL h5dwrite_f(dset_id,H5T_NATIVE_INTEGER,wbuf,dims,hdferror,file_space_id=fspace_id,mem_space_id=mspace_id,xfer_prp=dxpl_id)
CALL check("h5dwrite_f", hdferror, nerrors)
-
! Check h5pget_mpio_actual_io_mode_f function
CALL h5pget_mpio_actual_io_mode_f(dxpl_id, actual_io_mode, hdferror)
CALL check("h5pget_mpio_actual_io_mode_f", hdferror, nerrors)
-! MSB -- TODO FIX: skipping for now since multi-dataset
-! has no specific path for contiguous collective
-!
-! IF(do_collective.AND.do_chunk)THEN
-! IF(actual_io_mode.NE.H5D_MPIO_CHUNK_COLLECTIVE_F)THEN
-! CALL check("h5pget_mpio_actual_io_mode_f", -1, nerrors)
-! ENDIF
-! ELSEIF(.NOT.do_collective)THEN
-! IF(actual_io_mode.NE.H5D_MPIO_NO_COLLECTIVE_F)THEN
-! CALL check("h5pget_mpio_actual_io_mode_f", -1, nerrors)
-! ENDIF
-! ELSEIF( do_collective.AND.(.NOT.do_chunk))THEN
-! IF(actual_io_mode.NE.H5D_MPIO_CONTIG_COLLECTIVE_F)THEN
-! CALL check("h5pget_mpio_actual_io_mode_f", -1, nerrors)
-! ENDIF
-! ENDIF
-! MSB
+ CALL h5pget_mpio_no_collective_cause_f(dxpl_id, local_no_collective_cause, global_no_collective_cause, hdferror)
+ CALL check("h5pget_mpio_no_collective_cause_f", hdferror, nerrors)
+
+ IF(do_collective) THEN
+ IF(local_no_collective_cause .NE. H5D_MPIO_COLLECTIVE_F) &
+ CALL check("h5pget_mpio_no_collective_cause_f", -1, nerrors)
+ IF(global_no_collective_cause .NE. H5D_MPIO_COLLECTIVE_F) &
+ CALL check("h5pget_mpio_no_collective_cause_f", -1, nerrors)
+ ELSE
+ IF(local_no_collective_cause .NE. H5D_MPIO_SET_INDEPENDENT_F) &
+ CALL check("h5pget_mpio_no_collective_cause_f", -1, nerrors)
+ IF(global_no_collective_cause .NE. H5D_MPIO_SET_INDEPENDENT_F) &
+ CALL check("h5pget_mpio_no_collective_cause_f", -1, nerrors)
+ ENDIF
+
+ IF(do_collective.AND.do_chunk)THEN
+ IF(actual_io_mode.NE.H5D_MPIO_CHUNK_COLLECTIVE_F)THEN
+ CALL check("h5pget_mpio_actual_io_mode_f", -1, nerrors)
+ ENDIF
+ ELSEIF(.NOT.do_collective)THEN
+ IF(actual_io_mode.NE.H5D_MPIO_NO_COLLECTIVE_F)THEN
+ CALL check("h5pget_mpio_actual_io_mode_f", -1, nerrors)
+ ENDIF
+ ELSEIF( do_collective.AND.(.NOT.do_chunk))THEN
+ IF(actual_io_mode.NE.H5D_MPIO_CONTIG_COLLECTIVE_F)THEN
+ CALL check("h5pget_mpio_actual_io_mode_f", -1, nerrors)
+ ENDIF
+ ENDIF
+
+ CALL h5pset_selection_io_f(dxpl_id, H5D_SELECTION_IO_MODE_OFF_F, hdferror)
+ CALL check("h5pset_selection_io_f", hdferror, nerrors)
+
+ CALL h5dwrite_f(dset_id,H5T_NATIVE_INTEGER,wbuf,dims,hdferror,file_space_id=fspace_id,mem_space_id=mspace_id,xfer_prp=dxpl_id)
+ CALL check("h5dwrite_f", hdferror, nerrors)
+
+ ! Verify bitwise operations are correct
+
+ IF( IOR(H5D_MPIO_DATATYPE_CONVERSION_F,H5D_MPIO_DATA_TRANSFORMS_F).NE.6)THEN
+ PRINT*, "Incorrect bitwise operations for Fortran defined constants"
+ nerrors = nerrors + 1
+ ENDIF
+
+ CALL h5pget_no_selection_io_cause_f(dxpl_id, no_selection_io_cause, hdferror)
+ CALL check("h5pget_no_selection_io_cause_f", hdferror, nerrors)
+
+ IF(no_selection_io_cause .NE. H5D_SEL_IO_DISABLE_BY_API_F) &
+ CALL check("h5pget_no_selection_io_cause_f", -1, nerrors)
!
! close HDF5 I/O