I've just installed ROMS4.0 with the new parallel IO setup on the NZ NESI HPC system. Compiling ROMS didn't produce any errors and I added PIO options to roms.in, mostly following the IO page on the wiki with the exception of switching PIO_METHOD to either 1, 3 or 4 (tried this multiple times with different configurations).
Code: Select all
! Input and Output files processing library to use:
!
! [1] Standard NetCDF-3 or NetCDF-4 library
! [2] Serial or Parallel I/O with Parallel-IO (PIO) library (MPI only)
INP_LIB = 2
OUT_LIB = 2
! PIO library methods for reading/writing NetCDF files:
!
! [0] parallel read and write of PnetCDF (CDF-5, not recommended)
! [1] parallel read and write of NetCDF3 (64-biat offset)
! [2] serial read and write of NetCDF3 (64-bit offset)
! [3] parallel read and serial write of NetCDF4/HDF5
! [4] parallel read and write of NETCDF4/HDF5
PIO_METHOD = 4
! PIO library MPI processes set-up:
PIO_IOTASKS = 1 ! number of I/O tasks to define
PIO_STRIDE = 1 ! stride in the MPI-ran between I/O tasks
PIO_BASE = 0 ! offset for the first I/O task
PIO_AGGREG = 1 ! number of MPI-aggregators to use
! PIO library rearranger methods for moving data between computational and I/O
! processes:
!
! [1] Box rearrangement
! [2] Subset rearrangement
PIO_REARR = 1
! PIO library rearranger flag for MPI communications between computational
! and I/O processes:
!
! [0] Point-to-Point (low-level communications)
! [1] Collective (high-level grouped communications)
PIO_REARRCOM = 0
! PIO library rearranger flow control direction flag for MPI communications
! between computational and I/O processes:
!
! [0] Enable computational to I/O processes, and vice versa
! [2] Enable computational to I/O processes only
! [3] Enable I/O to computational processes only
! [4] Disable flow control
PIO_REARRDIR = 0
! PIO rearranger options for computational to I/O processes (C2I):
PIO_C2I_HS = T ! Enable C2I handshake (T/F)
PIO_C2I_Send = F ! Enable C2I Isends (T/F)
PIO_C2I_Preq = 64 ! Maximum pending C2I requests
! PIO rearranger options for I/O to computational processes (I2C):
PIO_I2C_HS = F ! Enable I2C handshake (T/F)
PIO_I2C_Send = T ! Enable I2C Isends (T/F)
PIO_I2C_Preq = 65 ! Maximum pending I2C requests
I have no idea if there's something wrong at my end
For reference active modules are:
Code: Select all
1) slurm 7) APR-util/.1.6.1 (H) 13) iccifort/2020.0.166 19) cURL/7.64.0-GCCcore-9.2.0 25) iimpi/2020a
2) NeSI (S) 8) Subversion/1.9.7 14) libpmi 20) PCRE/8.43-GCCcore-9.2.0 26) PnetCDF/1.9.0-intel-2020a
3) craype-broadwell 9) shared 15) impi/2019.6.166-iccifort-2020.0.166 21) netCDF/4.7.3-iimpi-2020a 27) ParallelIO/2.5.4-intel-2020a
4) craype-network-infiniband 10) GCCcore/9.2.0 16) imkl/2020.0.166-iimpi-2020a 22) netCDF-Fortran/4.5.2-iimpi-2020a
5) SQLite/3.25.3 11) zlib/1.2.11-GCCcore-9.2.0 17) intel/2020a 23) HDF5/1.10.5-iimpi-2020a
6) APR/.1.6.5 (H) 12) binutils/2.32-GCCcore-9.2.0 18) Szip/2.1.1-GCCcore-9.2.0 24) arpack-ng/3.6.3-intel-2020a