22 | | 1. Single file, single writer: serial I/O. It is the default strategy in ROMS using the '''NetCDF3''' or '''NetCDF4''' libraries. |
23 | | |
24 | | 2. Single file, multiple writers: parallel I/O with each tile writing its data to a single file. In ROMS, this capability is achieved by activating '''PARALLEL_IO''' and '''HDF5'''. It is only possible with the '''NetCDF4/HDF5''' libraries. |
25 | | |
26 | | 3. Single file, collective writers: Parallel I/O with either one or a subset of processes performing I/O operations. The I/O operations can be synchronous or asynchronous. In ROMS, this capability uses the '''PIO''' or '''SCORPIO''' libraries and available when '''PIO_LIB''' is activated. |
27 | | |
28 | | 4. Multiple files, multiple writers: Each tile writes its own file, but post-processing is required. Currently, this capability is not available in ROMS but can be easily implemented with the changes introduced in this update. |
| 22 | 1. [[span(style=color: blue, Single file, single writer:)]] serial I/O. It is the default strategy in ROMS using the '''NetCDF3''' or '''NetCDF4''' libraries. |
| 23 | |
| 24 | 2. [[span(style=color: blue, Single file, multiple writers:)]] parallel I/O with each tile writing its data to a single file. In ROMS, this capability is achieved by activating '''PARALLEL_IO''' and '''HDF5'''. It is only possible with the '''NetCDF4/HDF5''' libraries. |
| 25 | |
| 26 | 3. [[span(style=color: blue, Single file, collective writers:)]] Parallel I/O with either one or a subset of processes performing I/O operations. The I/O operations can be synchronous or asynchronous. In ROMS, this capability uses the '''PIO''' or '''SCORPIO''' libraries and available when '''PIO_LIB''' is activated. |
| 27 | |
| 28 | 4. [[span(style=color: blue, Multiple files, multiple writers:)]] Each tile writes its own file, but post-processing is required. Currently, this capability is not available in ROMS, but it can be easily implemented with the changes introduced in this update. |
34 | | The changes to ROMS are numerous but subtle, and 285 files were changed to include additional code. |
35 | | |
36 | | * All the standard input file '''roms.in''' was modified to include all the parameters necessary for Parallel I/O: |
| 34 | The changes to ROMS are numerous but subtle, and around 285 files were changed to include additional code related to the '''PIO''' implementation. |
| 35 | |
| 36 | * Several files were renamed for uniqueness in coupled systems. The '''ocean''' descriptor is renamed to '''roms''': |
| 37 | |
| 38 | {{{#!rst |
| 39 | OLD NEW |
| 40 | ----------------------------------- -------------------------------- |
| 41 | Master/ocean.h Master/roms.h |
| 42 | Master/ocean_control.F Master/roms_kernel.F |
| 43 | ROMS/Drivers/ad_ocean.h ROMS/Drivers/ad_roms.h |
| 44 | ROMS/Drivers/adsen_ocean.h ROMS/Drivers/adsen_roms.h |
| 45 | ROMS/Drivers/afte_ocean.h ROMS/Drivers/afte_roms.h |
| 46 | ROMS/Drivers/fsv_ocean.h ROMS/Drivers/fsv_roms.h |
| 47 | ROMS/Drivers/fte_ocean.h ROMS/Drivers/fte_roms.h |
| 48 | ROMS/Drivers/hessian_op_ocean.h ROMS/Drivers/hessian_op_roms.h |
| 49 | ROMS/Drivers/hessian_so_ocean.h ROMS/Drivers/hessian_so_roms.h |
| 50 | ROMS/Drivers/i4dvar_ocean.h ROMS/Drivers/i4dvar_roms.h |
| 51 | ROMS/Drivers/nl_ocean.h ROMS/Drivers/nl_roms.h |
| 52 | ROMS/Drivers/op_ocean.h ROMS/Drivers/op_roms.h |
| 53 | ROMS/Drivers/optobs_ocean.h ROMS/Drivers/optobs_roms.h |
| 54 | ROMS/Drivers/pert_ocean.h ROMS/Drivers/pert_roms.h |
| 55 | ROMS/Drivers/picard_ocean.h ROMS/Drivers/picard_roms.h |
| 56 | ROMS/Drivers/r4dvar_ocean.h ROMS/Drivers/r4dvar_roms.h |
| 57 | ROMS/Drivers/rbl4dvar_ocean.h ROMS/Drivers/rbl4dvar_roms.h |
| 58 | ROMS/Drivers/rp_ocean.h ROMS/Drivers/rp_roms.h |
| 59 | ROMS/Drivers/so_ocean.h ROMS/Drivers/so_roms.h |
| 60 | ROMS/Drivers/so_semi_ocean.h ROMS/Drivers/so_semi_roms.h |
| 61 | ROMS/Drivers/sp4dvar_ocean.h ROMS/Drivers/sp4dvar_roms.h |
| 62 | ROMS/Drivers/split_i4dvar_ocean.h ROMS/Drivers/split_i4dvar_roms.h |
| 63 | ROMS/Drivers/split_r4dvar_ocean.h ROMS/Drivers/split_r4dvar_roms.h |
| 64 | ROMS/Drivers/split_rbl4dvar_ocean.h ROMS/Driver/split_rbl4dvar_roms.h |
| 65 | ROMS/Drivers/split_sp4dvar_ocean.h ROMS/Drivers/split_sp4dvar_roms.h |
| 66 | ROMS/Drivers/tl_ocean.h ROMS/Drivers/tl_roms.h |
| 67 | ROMS/Drivers/tl_r4dvar_ocean.h ROMS/Drivers/tl_r4dvar_roms.h |
| 68 | ROMS/Drivers/tl_rbl4dvar_ocean.h ROMS/Drivers/tl_rbl4dvar_roms.h |
| 69 | ROMS/Drivers/tlcheck_ocean.h ROMS/Drivers/tlcheck_roms.h |
| 70 | }}} |
| 71 | |
| 72 | * Added the following include files for '''Biology''' and '''Sediment''':[[BR]] [[BR]] |
| 73 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/ecosim_def_pio.h)]] |
| 74 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/ecosim_wrt_pio.h)]] |
| 75 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/fennel_def_pio.h)]] |
| 76 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/fennel_wrt_pio.h)]] |
| 77 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/hypoxia_srm_def_pio.h)]] |
| 78 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/hypoxia_srm_wrt_pio.h)]] |
| 79 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/nemuro_def_pio.h)]] |
| 80 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/nemuro_wrt_pio.h)]] |
| 81 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/npzd_Franks_def_pio.h)]] |
| 82 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/npzd_Franks_wrt_pio.h)]] |
| 83 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/npzd_Powell_def_pio.h)]] |
| 84 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/npzd_Powell_wrt_pio.h)]] |
| 85 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/npzd_iron_def_pio.h)]] |
| 86 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/npzd_iron_wrt_pio.h)]] |
| 87 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/oyster_floats_def_pio.h)]] |
| 88 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/oyster_floats_wrt_pio.h)]] |
| 89 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/red_tide_def_pio.h)]] |
| 90 | * [[span(style=color: blue, ROMS/Nonlinear/Biology/red_tide_wrt_pio.h)]] |
| 91 | * [[span(style=color: blue, ROMS/Nonlinear/Sediment/sediment_def_pio.h)]] |
| 92 | * [[span(style=color: blue, ROMS/Nonlinear/Sediment/sediment_wrt_pio.h)]] |
| 93 | |
| 94 | * The standard input file '''roms.in''' was modified to include all the parameters necessary for Parallel I/O: |