tparallel-io-libraries.rst - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
 (HTM) git clone git://src.adamsgaard.dk/pism
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
       tparallel-io-libraries.rst (2801B)
       ---
            1 .. include:: ../global.txt
            2 
            3 .. _sec-install-parallel-io-libs:
            4 
            5 Installing parallel I/O libraries
            6 =================================
            7 
            8 High-resolution simulations (e.g. modeling the entire Greenland ice sheet using the 900 m
            9 resolution and a grid of 1700 by 3000 points) can produce huge amounts of data and I/O can
           10 become a bottleneck.
           11 
           12 PISM supports several parallel I/O approaches that take advantage of parallel NetCDF_,
           13 PnetCDF_, and NCAR ParallelIO_. The administrators of your HPC system should be able to
           14 help you install these libraries, but it may be easier to install them in the "home"
           15 directory instead.
           16 
           17 This section describes the steps needed to build
           18 
           19 - NetCDF with parallel I/O based on HDF5 (needed to use PISM's option :opt:`-o_format
           20   netcdf4_parallel`),
           21 - PNetCDF (needed to use PISM's option :opt:`-o_format pnetfdf`),
           22 - ParallelIO (needed to use options :opt:`-o_format pio_netcdf4p`,
           23   :opt:`-o_format pio_netcdf4c`, :opt:`-o_format pio_pnetcdf`, :opt:`-o_format pio_netcdf`).
           24 
           25 Scripts below install libraries in ``~/local/library_name``, using
           26 ``~/local/build/library_name`` to build them.
           27 
           28 Section :ref:`sec-install-local-libraries` explains how build PISM with these libraries.
           29 
           30 Section :ref:`sec-pism-io-performance` explains how to use them in PISM.
           31 
           32 .. _sec-install-parallel-netcdf:
           33 
           34 Installing HDF5-based parallel NetCDF
           35 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
           36 
           37 .. _sec-install-hdf5:
           38 
           39 Installing  HDF5
           40 ~~~~~~~~~~~~~~~~
           41 
           42 .. literalinclude:: code/hdf5.sh
           43    :language: bash
           44    :linenos:
           45    :lines: 7-
           46 
           47 To compile parallel HDF5 one should use the MPI compiler wrapper ``mpicc`` and run
           48 ``configure`` with the option ``--enable-parallel``. The flag ``-w`` is not important: it
           49 hides numerous compiler warnings emitted when building HDF5.
           50 
           51 .. _sec-install-netcdf:
           52 
           53 Installing NetCDF
           54 ~~~~~~~~~~~~~~~~~
           55 
           56 .. literalinclude:: code/netcdf.sh
           57    :language: bash
           58    :linenos:
           59    :lines: 7-
           60 
           61 Here we use the same compiler wrapper and set ``CPPFLAGS`` and ``LDFLAGS`` to select the
           62 parallel HDF5 library installed earlier. The option ``--enable-netcdf4`` is required for
           63 parallel I/O; ``--disable-dap`` is not required (it disables a NetCDF feature not used by
           64 PISM).
           65 
           66 .. _sec-install-pnetcdf:
           67 
           68 Installing PnetCDF
           69 ^^^^^^^^^^^^^^^^^^
           70 
           71 .. literalinclude:: code/pnetcdf.sh
           72    :language: bash
           73    :linenos:
           74    :lines: 7-
           75 
           76 Here we disable PnetCDF's C++ and Fortran APIs and build the shared library.
           77 
           78 .. _sec-install-parallelio:
           79 
           80 Installing NCAR ParallelIO
           81 ^^^^^^^^^^^^^^^^^^^^^^^^^^
           82 
           83 .. literalinclude:: code/parallelio.sh
           84    :language: bash
           85    :linenos:
           86    :lines: 7-
           87 
           88 Here we use CMake's variable ``CMAKE_FIND_ROOT_PATH`` to tell CMake to use libraries in
           89 ``~/local/netcdf`` and ``~/local/pnetcdf``, to install in ``~/local/parallelio``, and to
           90 disable ParallelIO features not used by PISM.