Running ROMS in parallel and I/O

Archive of important messages sent via the ROMS mailing list

Moderators: arango, robertson

Post Reply
Message
Author
User avatar
arango
Site Admin
Posts: 1082
Joined: Wed Feb 26, 2003 4:41 pm
Location: IMCS, Rutgers University
Contact:

Running ROMS in parallel and I/O

#1 Post by arango » Fri Jul 24, 2009 6:25 pm

There are several posts in this forum about running ROMS in parallel and the type of I/O that we can have.
  • In distributed-memory (MPI, OpenMPI) you can run ROMS with either serial I/O or parallel I/O. Users should try serial I/O on mostly all their applications. There are still efficiency problems with parallel I/O in ROMS and in general. Notice that to activate parallel I/O in ROMS, you need to activate both PARALLEL_IO and NETCDF4 C-preprocessing options, and you need the parallel NetCDF-4 and HDF5 libraries (--enable-parallel flag when configuring). This is only possible with MPI-2 since we need the MPI-IO layer. Check the following :arrow: post for details. There is also :arrow: information about how to prepare the parallel I/O files. However, you can still run your distributed-memory ROMS applications with serial I/O using either the NetCDF-3 or the serial NetCDF-4/HDF5 libraries. If you have problems compiling the serial or parallel NetCDF-4/HDF5 libraries, you still can use the NetCDF-3 library. That is, when running ROMS in distributed-memory not necessarily implies parallel I/O :!:
  • In shared-memory (OpenMP) ROMS applications, only serial I/O is possible with either the NetCDF-3 or serial NetCDF-4/HDF5 libraries. Notice that is posible to build the NetCDF-4/HDF5 libraries without parallel I/O support. As a matter of fact, this is the default option when building these libraries. To activate parallel I/O, you need to use the --enable-parallel flag when configuring and compiling these libraries.
  • In serial ROMS applications, only serial I/O is possible with either the NetCDF-3 or serial NetCDF-4/HDF5 libraries.
  • Notice that all these possible compiling combinations are well described and specified in the build script (build.sh or build.bash). There is plenty of information in the :arrow: wiki about the build script. You should use always the build script when compiling ROMS.
  • ROMS plotting package can be compiled with either the NetCDF-3 or the serial NetCDF-4/HDF5 libraries. The plotting programs (ccnt, cnt, csec, and sec) cannot be run in parallel :!:
I hope that this clarify many of the questions that we see in this forum about this subject. You may ask, why do we need so many combinations of these libraries? The short answer is Fortran-90. There has been a lot of inquires about this in the NetCDF forum, recently. Notice that we need to have all these combinations for each compiler (pgi, ifort, gfortan, ...) and for each distributed-memory implementation (MPICH, MPICH2, OpenMPI, ...) :roll:

Post Reply