Changeset 12149 for NEMO/branches/2019/ENHANCE-03_closea/INSTALL.rst
- Timestamp:
- 2019-12-10T15:03:24+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/ENHANCE-03_closea/INSTALL.rst
r10991 r12149 3 3 ******************* 4 4 5 .. todo:: 6 7 8 5 9 .. contents:: 6 10 :local: … … 10 14 11 15 | The NEMO source code is written in *Fortran 95* and 12 some of its prerequisite tools and libraries are already included in the ``./ext`` subdirectory.16 some of its prerequisite tools and libraries are already included in the download. 13 17 | It contains the AGRIF_ preprocessing program ``conv``; the FCM_ build system and 14 18 the IOIPSL_ library for parts of the output. … … 23 27 - *Fortran* compiler (``ifort``, ``gfortran``, ``pgfortran``, ...), 24 28 - *Message Passing Interface (MPI)* implementation (e.g. |OpenMPI|_ or |MPICH|_). 25 - |NetCDF|_ library with its underlying |HDF|_ 29 - |NetCDF|_ library with its underlying |HDF|_ 26 30 27 31 **NEMO, by default, takes advantage of some MPI features introduced into the MPI-3 standard.** … … 40 44 This will limit MPI features to those defined within the MPI-2 standard 41 45 (but will lose some performance benefits). 42 43 Specifics for NetCDF and HDF44 ----------------------------45 46 NetCDF and HDF versions from .47 However access to all the options available with the XIOS IO-server will require48 the parallel IO support of these libraries which can be unavailable.49 50 | **To satisfy these requirements, it is common to have to compile from source51 in this order HDF (C library) then NetCDF (C and Fortran libraries)**52 | It is also necessary to compile these libraries with the same version of the MPI implementation that53 both NEMO and XIOS (see below) are compiled and linked with.54 55 .. hint::56 57 | It is difficult to define the options for the compilation as58 they differ from one architecture to another according to59 the hardware used and the software installed.60 | The following is provided without any warranty61 62 .. code-block:: console63 64 $ ./configure [--{enable-fortran,disable-shared,enable-parallel}] ...65 66 It is recommended to build the tests ``--enable-parallel-tests`` and run them with ``make check``67 68 Particular versions of these libraries may have their own restrictions.69 State the following requirements for netCDF-4 support:70 71 .. caution::72 73 | When building NetCDF-C library versions older than 4.4.1, use only HDF5 1.8.x versions.74 | Combining older NetCDF-C versions with newer HDF5 1.10 versions will create superblock 3 files75 that are not readable by lots of older software.76 77 Extract and install XIOS78 ========================79 80 With the sole exception of running NEMO in mono-processor mode81 (in which case output options are limited to those supported by the ``IOIPSL`` library),82 diagnostic outputs from NEMO are handled by the third party ``XIOS`` library.83 This can be used in two different modes:84 85 - *attached* - Every NEMO process also acts as a XIOS server86 - *detached* - Every NEMO process runs as a XIOS client.87 Output is collected and collated by external, stand-alone XIOS server processors.88 89 .. important::90 91 In either case, XIOS needs to be compiled before NEMO,92 since the libraries are needed to successfully create the NEMO executable.93 94 Instructions on how to obtain and install the software can be found on the :xios:`XIOS wiki<wiki>`.95 96 .. hint::97 98 It is recommended to use XIOS version 2.5.99 This version should be more stable (in terms of future code changes) than the XIOS trunk.100 It is also the version used by the NEMO system team when testing all developments and new releases.101 102 This particular version has its own branch and can be checked out and downloaded with:103 104 .. code:: console105 106 $ svn co https://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/branchs/xios-2.5107 108 Download the NEMO source code109 =============================110 111 .. code:: console112 113 $ svn co https://forge.ipsl.jussieu.fr/nemo/svn/NEMO/trunk114 115 Description of directory tree116 -----------------------------117 118 +-----------+------------------------------------------------------------+119 | Folder | Purpose |120 +===========+============================================================+121 | ``arch`` | Settings (per architecture-compiler pair) |122 +-----------+------------------------------------------------------------+123 | ``cfgs`` | :doc:`Reference configurations <configurations>` |124 +-----------+------------------------------------------------------------+125 | ``doc`` | - ``latex`` : LaTex source code for ref. manuals |126 | | - ``namelists``: k start guide |127 | | - ``rst`` : ReST files for quick start guide |128 +-----------+------------------------------------------------------------+129 | ``ext`` | Dependencies included (``AGRIF``, ``FCM`` & ``IOIPSL``) |130 +-----------+------------------------------------------------------------+131 | ``mk`` | Building routines |132 +-----------+------------------------------------------------------------+133 | ``src`` | Modelling routines |134 | | |135 | | - ``ICE``: |SI3| for sea ice |136 | | - ``NST``: AGRIF for embedded zooms |137 | | - ``OCE``: |OPA| for ocean dynamics |138 | | - ``TOP``: |TOP| for tracers |139 +-----------+------------------------------------------------------------+140 | ``tests`` | :doc:`Test cases <test_cases>` (unsupported) |141 +-----------+------------------------------------------------------------+142 | ``tools`` | :doc:`Utilities <tools>` to [pre|post]process data |143 +-----------+------------------------------------------------------------+144 145 Setup your architecture configuration file146 ==========================================147 148 All compiler options in NEMO are controlled using files in149 ``./arch/arch-'my_arch'.fcm`` where 'my_arch' is the name of the computing150 architecture. It is recommended to copy and rename an configuration file from151 an architecture similar to your owns. You will need to set appropriate values152 for all of the variables in the file. In particular the FCM variables:153 ``%NCDF_HOME``; ``%HDF5_HOME`` and ``%XIOS_HOME`` should be set to the154 installation directories used for XIOS installation.155 156 .. code-block:: sh157 158 %NCDF_HOME /opt/local159 %HDF5_HOME /opt/local160 %XIOS_HOME /Users/$( whoami )/xios-2.5161 %OASIS_HOME /not/defined162 163 Compile and create NEMO executable164 ==================================165 166 The main script to compile and create executable is called makenemo and located in the CONFIG directory, it is used to identify the routines you need from the source code, to build the makefile and run it.167 As an example, compile GYRE with 'my_arch' to create a 'MY_GYRE' configuration:168 169 .. code-block:: sh170 171 ./makenemo –m 'my_arch' –r GYRE -n 'MY_GYRE'172 173 The image below shows the structure and some content of "MY_CONFIG" directory from the launching of the configuration creation (directories and fundamental files created by makenemo).174 175 +------------+----------------------------------------------------+176 | Folder | Purpose |177 +============+====================================================+178 | ``BLD`` | |179 +------------+----------------------------------------------------+180 | ``EXP00`` | |181 +------------+----------------------------------------------------+182 | ``EXPREF`` | |183 +------------+----------------------------------------------------+184 | ``MY_SRC`` | |185 +------------+----------------------------------------------------+186 | ``WORK`` | |187 +------------+----------------------------------------------------+188 189 Folder with the symbolic links to all unpreprocessed routines considered in the configuration190 Compilation folder (executables, headers files, libraries, preprocessed routines, flags, …)191 Computation folder for running the model (namelists, xml, executables and inputs-outputs)192 Folder intended to contain your customised routines (modified from initial ones or new entire routines)193 194 After successful execution of makenemo command, the executable called opa is created in the EXP00 directory (in the example above, the executable is created in CONFIG/MY_GYRE/EXP00).195 196 More makenemo options197 ---------------------198 199 ``makenemo`` has several other options that can control which source files are selected and200 the operation of the build process itself.201 These are::202 203 Optional:204 -d Set of new sub-components (space separated list from ./src directory)205 -e Path for alternative patch location (default: 'MY_SRC' in configuration folder)206 -h Print this help207 -j Number of processes to compile (0: no build)208 -n Name for new configuration209 -s Path for alternative source location (default: 'src' root directory)210 -t Path for alternative build location (default: 'BLD' in configuration folder)211 -v Level of verbosity ([0-3])212 213 These options can be useful for maintaining several code versions with only minor differences but214 they should be used sparingly.215 Note however the ``-j`` option which should be used more routinely to speed up the build process.216 For example:217 218 .. code-block:: sh219 220 ./makenemo –m 'my_arch' –r GYRE -n 'MY_GYRE' -j 8221 222 which will compile up to 8 modules simultaneously.223 224 225 Default behaviour226 -----------------227 228 At the first use, you need the -m option to specify the architecture229 configuration file (compiler and its options, routines and libraries to230 include), then for next compilation, it is assumed you will be using the231 same compiler. If the –n option is not specified the last compiled configuration232 will be used.233 234 Tools used during the process235 -----------------------------236 237 * functions.sh : bash functions used by makenemo, for instance to create the WORK directory238 * cfg.txt : text list of configurations and source directories239 * bld.cfg : FCM rules to compile240 241 Examples242 --------243 244 .. code-block:: sh245 246 echo "Example to install a new configuration MY_CONFIG";247 echo "with OPA_SRC and LIM_SRC_2 ";248 echo "makenemo -n MY_CONFIG -d \"OPA_SRC LIM_SRC_2\"";249 echo "";250 echo "Available configurations :"; cat ${CONFIG_DIR}/cfg.txt;251 echo "";252 echo "Available unsupported (external) configurations :"; cat ${CONFIG_DIR}/uspcfg.txt;253 echo "";254 echo "Example to remove bad configuration ";255 echo "./makenemo -n MY_CONFIG clean_config";256 echo "";257 echo "Example to clean ";258 echo "./makenemo clean";259 echo "";260 echo "Example to list the available keys of a CONFIG ";261 echo "./makenemo list_key";262 echo "";263 echo "Example to add and remove keys";264 echo "./makenemo add_key \"key_iomput key_mpp_mpi\" del_key \"key_agrif\" ";265 echo "";266 echo "Example to add and remove keys for a new configuration, and do not compile";267 echo "./makenemo -n MY_CONFIG -j0 add_key \"key_iomput key_mpp_mpi\" del_key \"key_agrif\" ";268 269 Running the model270 =================271 272 Once makenemo has run successfully, the opa executable is available in ``CONFIG/MY_CONFIG/EXP00``273 For the reference configurations, the EXP00 folder also contains the initial input files (namelists, \*xml files for the IOs…). If the configuration also needs NetCDF input files, this should be downloaded here from the corresponding tar file, see Users/Reference Configurations274 275 .. code-block:: sh276 277 cd 'MY_CONFIG'/EXP00278 mpirun -n $NPROCS ./opa # $NPROCS is the number of processes ; mpirun is your MPI wrapper279 280 281 Viewing and changing list of active CPP keys282 ============================================283 284 For a given configuration (here called MY_CONFIG), the list of active CPP keys can be found in:285 286 .. code-block:: sh287 288 ./cfgs/'MYCONFIG'/cpp_'MY_CONFIG'.fcm289 290 291 This text file can be edited to change the list of active CPP keys. Once changed, one needs to recompile opa executable using makenemo command in order for this change to be taken in account.292 Note that most NEMO configurations will need to specify the following CPP keys:293 ``key_iomput`` and ``key_mpp_mpi``294 295 .. Links and substitutions296 46 297 47 .. |OpenMPI| replace:: *OpenMPI* … … 300 50 .. _MPICH: https://www.mpich.org 301 51 .. |NetCDF| replace:: *Network Common Data Form (NetCDF)* 302 .. _NetCDF: https://www.unidata.ucar.edu /downloads/netcdf52 .. _NetCDF: https://www.unidata.ucar.edu 303 53 .. |HDF| replace:: *Hierarchical Data Form (HDF)* 304 .. _HDF: https://www.hdfgroup.org/downloads 54 .. _HDF: https://www.hdfgroup.org 55 56 Specifics for NetCDF and HDF 57 ---------------------------- 58 59 NetCDF and HDF versions from official repositories may have not been compiled with MPI support. 60 However access to all the options available with the XIOS IO-server will require 61 the parallelism of these libraries. 62 63 | **To satisfy these requirements, it is common to have to compile from source 64 in this order HDF (C library) then NetCDF (C and Fortran libraries)** 65 | It is also necessary to compile these libraries with the same version of the MPI implementation that 66 both NEMO and XIOS (see below) have been compiled and linked with. 67 68 .. hint:: 69 70 | It is difficult to define the options for the compilation as 71 they differ from one architecture to another according to 72 the hardware used and the software installed. 73 | The following is provided without any warranty 74 75 .. code-block:: console 76 77 $ ./configure [--{enable-fortran,disable-shared,enable-parallel}] ... 78 79 It is recommended to build the tests ``--enable-parallel-tests`` and run them with ``make check`` 80 81 Particular versions of these libraries may have their own restrictions. 82 State the following requirements for netCDF-4 support: 83 84 .. caution:: 85 86 | When building NetCDF-C library versions older than 4.4.1, use only HDF5 1.8.x versions. 87 | Combining older NetCDF-C versions with newer HDF5 1.10 versions will create superblock 3 files 88 that are not readable by lots of older software. 89 90 Extract and install XIOS 91 ======================== 92 93 With the sole exception of running NEMO in mono-processor mode 94 (in which case output options are limited to those supported by the ``IOIPSL`` library), 95 diagnostic outputs from NEMO are handled by the third party ``XIOS`` library. 96 It can be used in two different modes: 97 98 :*attached*: Every NEMO process also acts as a XIOS server 99 :*detached*: Every NEMO process runs as a XIOS client. 100 Output is collected and collated by external, stand-alone XIOS server processors. 101 102 Instructions on how to install XIOS can be found on its :xios:`wiki<>`. 103 104 .. hint:: 105 106 It is recommended to use XIOS 2.5 release. 107 This version should be more stable (in terms of future code changes) than the XIOS trunk. 108 It is also the one used by the NEMO system team when testing all developments and new releases. 109 110 This particular version has its own branch and can be checked out with: 111 112 .. code:: console 113 114 $ svn co https://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/branchs/xios-2.5 115 116 Download and install the NEMO code 117 ================================== 118 119 Checkout the NEMO sources 120 ------------------------- 121 122 .. code:: console 123 124 $ svn co https://forge.ipsl.jussieu.fr/nemo/svn/NEMO/trunk 125 126 Description of 1\ :sup:`st` level tree structure 127 ------------------------------------------------ 128 129 +---------------+----------------------------------------+ 130 | :file:`arch` | Compilation settings | 131 +---------------+----------------------------------------+ 132 | :file:`cfgs` | :doc:`Reference configurations <cfgs>` | 133 +---------------+----------------------------------------+ 134 | :file:`doc` | :doc:`Documentation <doc>` | 135 +---------------+----------------------------------------+ 136 | :file:`ext` | Dependencies included | 137 | | (``AGRIF``, ``FCM`` & ``IOIPSL``) | 138 +---------------+----------------------------------------+ 139 | :file:`mk` | Compilation scripts | 140 +---------------+----------------------------------------+ 141 | :file:`src` | :doc:`Modelling routines <src>` | 142 +---------------+----------------------------------------+ 143 | :file:`tests` | :doc:`Test cases <tests>` | 144 | | (unsupported) | 145 +---------------+----------------------------------------+ 146 | :file:`tools` | :doc:`Utilities <tools>` | 147 | | to {pre,post}process data | 148 +---------------+----------------------------------------+ 149 150 Setup your architecture configuration file 151 ------------------------------------------ 152 153 All compiler options in NEMO are controlled using files in :file:`./arch/arch-'my_arch'.fcm` where 154 ``my_arch`` is the name of the computing architecture 155 (generally following the pattern ``HPCC-compiler`` or ``OS-compiler``). 156 It is recommended to copy and rename an configuration file from an architecture similar to your owns. 157 You will need to set appropriate values for all of the variables in the file. 158 In particular the FCM variables: 159 ``%NCDF_HOME``; ``%HDF5_HOME`` and ``%XIOS_HOME`` should be set to 160 the installation directories used for XIOS installation 161 162 .. code-block:: sh 163 164 %NCDF_HOME /usr/local/path/to/netcdf 165 %HDF5_HOME /usr/local/path/to/hdf5 166 %XIOS_HOME /home/$( whoami )/path/to/xios-2.5 167 %OASIS_HOME /home/$( whoami )/path/to/oasis 168 169 Create and compile a new configuration 170 ====================================== 171 172 The main script to {re}compile and create executable is called :file:`makenemo` located at 173 the root of the working copy. 174 It is used to identify the routines you need from the source code, to build the makefile and run it. 175 As an example, compile a :file:`MY_GYRE` configuration from GYRE with 'my_arch': 176 177 .. code-block:: sh 178 179 ./makenemo –m 'my_arch' –r GYRE -n 'MY_GYRE' 180 181 Then at the end of the configuration compilation, 182 :file:`MY_GYRE` directory will have the following structure. 183 184 +------------+----------------------------------------------------------------------------+ 185 | Directory | Purpose | 186 +============+============================================================================+ 187 | ``BLD`` | BuiLD folder: target executable, headers, libs, preprocessed routines, ... | 188 +------------+----------------------------------------------------------------------------+ 189 | ``EXP00`` | Run folder: link to executable, namelists, ``*.xml`` and IOs | 190 +------------+----------------------------------------------------------------------------+ 191 | ``EXPREF`` | Files under version control only for :doc:`official configurations <cfgs>` | 192 +------------+----------------------------------------------------------------------------+ 193 | ``MY_SRC`` | New routines or modified copies of NEMO sources | 194 +------------+----------------------------------------------------------------------------+ 195 | ``WORK`` | Links to all raw routines from :file:`./src` considered | 196 +------------+----------------------------------------------------------------------------+ 197 198 After successful execution of :file:`makenemo` command, 199 the executable called `nemo` is available in the :file:`EXP00` directory 200 201 More :file:`makenemo` options 202 ----------------------------- 203 204 ``makenemo`` has several other options that can control which source files are selected and 205 the operation of the build process itself. 206 207 .. literalinclude:: ../../../makenemo 208 :language: text 209 :lines: 119-143 210 :caption: Output of ``makenemo -h`` 211 212 These options can be useful for maintaining several code versions with only minor differences but 213 they should be used sparingly. 214 Note however the ``-j`` option which should be used more routinely to speed up the build process. 215 For example: 216 217 .. code-block:: sh 218 219 ./makenemo –m 'my_arch' –r GYRE -n 'MY_GYRE' -j 8 220 221 will compile up to 8 processes simultaneously. 222 223 Default behaviour 224 ----------------- 225 226 At the first use, 227 you need the ``-m`` option to specify the architecture configuration file 228 (compiler and its options, routines and libraries to include), 229 then for next compilation, it is assumed you will be using the same compiler. 230 If the ``-n`` option is not specified the last compiled configuration will be used. 231 232 Tools used during the process 233 ----------------------------- 234 235 * :file:`functions.sh`: bash functions used by ``makenemo``, for instance to create the WORK directory 236 * :file:`cfg.txt` : text list of configurations and source directories 237 * :file:`bld.cfg` : FCM rules for compilation 238 239 Examples 240 -------- 241 242 .. literalinclude:: ../../../makenemo 243 :language: text 244 :lines: 146-153 245 246 Running the model 247 ================= 248 249 Once :file:`makenemo` has run successfully, 250 the ``nemo`` executable is available in :file:`./cfgs/MY_CONFIG/EXP00`. 251 For the reference configurations, the :file:`EXP00` folder also contains the initial input files 252 (namelists, ``*.xml`` files for the IOs, ...). 253 If the configuration needs other input files, they have to be placed here. 254 255 .. code-block:: sh 256 257 cd 'MY_CONFIG'/EXP00 258 mpirun -n $NPROCS ./nemo # $NPROCS is the number of processes 259 # mpirun is your MPI wrapper 260 261 Viewing and changing list of active CPP keys 262 ============================================ 263 264 For a given configuration (here called ``MY_CONFIG``), 265 the list of active CPP keys can be found in :file:`./cfgs/'MYCONFIG'/cpp_MY_CONFIG.fcm` 266 267 This text file can be edited by hand or with :file:`makenemo` to change the list of active CPP keys. 268 Once changed, one needs to recompile ``nemo`` in order for this change to be taken in account. 269 Note that most NEMO configurations will need to specify the following CPP keys: 270 ``key_iomput`` for IOs and ``key_mpp_mpi`` for parallelism.
Note: See TracChangeset
for help on using the changeset viewer.