diff options
Diffstat (limited to 'fortran/testpar/async.F90')
-rw-r--r-- | fortran/testpar/async.F90 | 73 |
1 files changed, 45 insertions, 28 deletions
diff --git a/fortran/testpar/async.F90 b/fortran/testpar/async.F90 index 5d2ce38..2235ecf 100644 --- a/fortran/testpar/async.F90 +++ b/fortran/testpar/async.F90 @@ -1259,7 +1259,11 @@ PROGRAM async_test LOGICAL :: registered INTEGER :: sum INTEGER :: nerrors = 0 + INTEGER :: len, idx + CHARACTER(LEN=255) :: vol_connector_string, vol_connector_name + INTEGER(C_INT64_T) :: cap_flags + INTEGER(HID_T) :: plist_id LOGICAL :: cleanup INTEGER :: ret_total_error = 0 @@ -1301,47 +1305,60 @@ PROGRAM async_test ! CALL h5open_f(hdferror) - ! CHECK ASYNC VOLS AVAILABILITY ! - ! (1) Check if ASYNC VOL is available - CALL H5VLis_connector_registered_by_name_f("async", registered, hdferror) - CALL check("H5VLis_connector_registered_by_name_f", hdferror, total_error) - IF(.NOT.registered)THEN + IF(mpi_rank==0) WRITE(*,'(A)', ADVANCE="NO") "VOL CONNECTOR TESTED: " + + CALL get_environment_variable("HDF5_VOL_CONNECTOR", VALUE=vol_connector_string, LENGTH=len) + IF(len .EQ. 0)THEN + + ! No VOL connector set; using native VOL connector + async_enabled = .FALSE. + IF(mpi_rank==0) WRITE(*,'(A,/)') "NATIVE" + + ELSE + + idx = INDEX(vol_connector_string, " ") + vol_connector_name = vol_connector_string(1:idx-1) - ! (2) check if the DAOS VOL is available - CALL H5VLis_connector_registered_by_name_f("daos", registered, hdferror) + ! (1) Check if the VOL is available + CALL H5VLis_connector_registered_by_name_f(TRIM(vol_connector_name), registered, hdferror) CALL check("H5VLis_connector_registered_by_name_f", hdferror, total_error) IF(.NOT.registered)THEN - ! No async compatible VOL found + ! No VOL found registered async_enabled = .FALSE. + IF(mpi_rank==0) WRITE(*,'(A,/)') "NATIVE" ELSE - CALL H5Vlregister_connector_by_name_f("daos", vol_id, hdferror) - CALL check("H5Vlregister_connector_by_name_f", hdferror, total_error) + ! (2) Check if the VOL is async compatible + CALL h5pcreate_f(H5P_FILE_ACCESS_F, plist_id, hdferror) + CALL check("h5pcreate_f", hdferror, total_error) + CALL h5pget_vol_cap_flags_f(plist_id, cap_flags, hdferror) + CALL check("h5pget_vol_cap_flags_f", hdferror, total_error) + CALL h5pclose_f(plist_id, hdferror) + CALL check("h5pcreate_f", hdferror, total_error) + IF(H5VL_CAP_FLAG_ASYNC_F.EQ.1_C_INT64_T) async_enabled = .TRUE. + IF(async_enabled .EQV. .FALSE.)THEN + ! No async compatible VOL found + IF(mpi_rank==0) WRITE(*,'(A,/)') "NATIVE" + ELSE + IF(mpi_rank==0) WRITE(*,'(A,/)') TRIM(vol_connector_name) + CALL H5Vlregister_connector_by_name_f(TRIM(vol_connector_name), vol_id, hdferror) + CALL check("H5Vlregister_connector_by_name_f", hdferror, total_error) + ENDIF ENDIF - ELSE - CALL H5Vlregister_connector_by_name_f("async", vol_id, hdferror) - CALL check("H5Vlregister_connector_by_name_f", hdferror, total_error) - ENDIF - - IF ( (async_enabled .EQV. .TRUE.) .AND. (mpi_thread_mult .EQV. .FALSE.) ) THEN - total_error = -1 ! Skip test - IF(mpi_rank==0) CALL write_test_status(total_error, & - "No MPI_Init_thread support for MPI_THREAD_MULTIPLE", total_error) - CALL MPI_Barrier(MPI_COMM_WORLD, mpierror) - CALL MPI_Finalize(mpierror) - STOP + IF ( (async_enabled .EQV. .TRUE.) .AND. (mpi_thread_mult .EQV. .FALSE.) ) THEN + total_error = -1 ! Skip test + IF(mpi_rank==0) CALL write_test_status(total_error, & + "No MPI_Init_thread support for MPI_THREAD_MULTIPLE", total_error) + CALL MPI_Barrier(MPI_COMM_WORLD, mpierror) + CALL MPI_Finalize(mpierror) + STOP + ENDIF ENDIF -! IF(total_error.LT.0)THEN -! IF(mpi_rank==0) CALL write_test_status(total_error, & -! 'Testing async APIs', total_error) -! STOP -! ENDIF - ! H5ES API TESTING ret_total_error = 0 CALL H5ES_tests(cleanup, ret_total_error) |