@@ -897,6 +897,7 @@ contains
897897 integer (kind= MPI_OFFSET_kind) :: WP_MOK, var_MOK, MOK
898898 integer :: ifile, ierr, data_size
899899 integer , dimension (MPI_STATUS_SIZE) :: status
900+ character (len= 10 ) :: t_step_string
900901
901902 $:GPU_UPDATE(host= ' [ib_markers%sf]' )
902903
@@ -907,21 +908,39 @@ contains
907908 WP_MOK = int (storage_size(0._stp )/ 8 , MPI_OFFSET_KIND)
908909 MOK = int (1._wp , MPI_OFFSET_KIND)
909910
910- write (file_loc, ' (A) ' ) ' ib.dat '
911- file_loc = trim (case_dir) // ' /restart_data ' // trim (mpiiofs) // trim (file_loc )
911+ if (file_per_process) then
912+ call s_int_to_str(time_step, t_step_string )
912913
913- call s_mpi_barrier()
914- call s_delay_file_access(proc_rank)
914+ if (proc_rank == 0 ) then
915+ file_loc = trim (case_dir) // ' /restart_data/lustre_' // trim (t_step_string)
916+ call s_create_directory(trim (file_loc))
917+ end if
918+ call s_mpi_barrier()
919+ call s_delay_file_access(proc_rank)
920+
921+ write (file_loc, ' (A,I0,A,i7.7,A)' ) ' ib_markers_' , time_step, ' _' , proc_rank, ' .dat'
922+ file_loc = trim (case_dir) // ' /restart_data/lustre_' // trim (t_step_string) // ' /' // trim (file_loc)
915923
916- call MPI_FILE_OPEN(MPI_COMM_WORLD, file_loc, ior (MPI_MODE_WRONLY, MPI_MODE_CREATE), mpi_info_int, ifile, ierr)
924+ call MPI_FILE_OPEN(MPI_COMM_SELF, file_loc, ior (MPI_MODE_WRONLY, MPI_MODE_CREATE), mpi_info_int, ifile, ierr)
925+ call MPI_FILE_WRITE_ALL(ifile, MPI_IO_IB_DATA%var%sf, data_size, MPI_INTEGER, status, ierr)
926+ call MPI_FILE_CLOSE(ifile, ierr)
927+ else
928+ write (file_loc, ' (A)' ) ' ib.dat'
929+ file_loc = trim (case_dir) // ' /restart_data' // trim (mpiiofs) // trim (file_loc)
917930
918- var_MOK = int (sys_size + 1 , MPI_OFFSET_KIND)
919- disp = m_MOK* max (MOK, n_MOK)* max (MOK, p_MOK)* WP_MOK* (var_MOK - 1 + int (time_step/ t_step_save))
920- if (time_step == 0 ) disp = 0
931+ call s_mpi_barrier()
932+ call s_delay_file_access(proc_rank)
921933
922- call MPI_FILE_SET_VIEW(ifile, disp, MPI_INTEGER, MPI_IO_IB_DATA%view, ' native' , mpi_info_int, ierr)
923- call MPI_FILE_WRITE_ALL(ifile, MPI_IO_IB_DATA%var%sf, data_size, MPI_INTEGER, status, ierr)
924- call MPI_FILE_CLOSE(ifile, ierr)
934+ call MPI_FILE_OPEN(MPI_COMM_WORLD, file_loc, ior (MPI_MODE_WRONLY, MPI_MODE_CREATE), mpi_info_int, ifile, ierr)
935+
936+ var_MOK = int (sys_size + 1 , MPI_OFFSET_KIND)
937+ disp = m_MOK* max (MOK, n_MOK)* max (MOK, p_MOK)* WP_MOK* (var_MOK - 1 + int (time_step/ t_step_save))
938+ if (time_step == 0 ) disp = 0
939+
940+ call MPI_FILE_SET_VIEW(ifile, disp, MPI_INTEGER, MPI_IO_IB_DATA%view, ' native' , mpi_info_int, ierr)
941+ call MPI_FILE_WRITE_ALL(ifile, MPI_IO_IB_DATA%var%sf, data_size, MPI_INTEGER, status, ierr)
942+ call MPI_FILE_CLOSE(ifile, ierr)
943+ end if
925944#endif
926945
927946 end subroutine s_write_parallel_ib_data
0 commit comments