CompilingDYNAMICO

De LMDZPedia
Révision de 13 mai 2022 à 14:42 par Dubos (discussion | contributions) (Compiling DYNAMICO)

(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Getting and compiling DYNAMICO

Getting DYNAMICO

DYNAMICO is licensed under the CeCILL open source license. The latest version is accessible through git :

git clone git@gitlab.in2p3.fr:ipsl/projets/dynamico/dynamico.git
git clone https://gitlab.in2p3.fr/ipsl/projets/dynamico/dynamico.git

Compiling DYNAMICO

DYNAMICO is written in Fortran 2003. The build process is based on FCM. DYNAMICO requires the NetCDF library, including the F90 modules. MPI is required for parallel execution and XIOS for asynchronous I/O.

DYNAMICO depends on the NetCDF and BLAS/LAPACK libraries.

The compiling process is automated but some information is needed to guide it. This information is contained in text files in source:codes/icosagcm/trunk/arch . Sample files corresponding to a few machines (Ada at IDRIS, Curie at TGCC) are present. Assuming you compile on Ada :

cd DYNAMICO
./make_icosa -arch X64_ADA -parallel mpi -prod -job 8

will compile DYNAMICO. The make_icosa script accepts keyword-value pairs which drive its behaviour. The most important option is arch=ARCH (here ARCH=X64_ADA). It directs make_icosa to use the information contained in :

  • arch/arch-ARCH.env
  • arch/arch-ARCH.fcm
  • arch/arch-ARCH.path

The *.env file is a shell script that is executed by make_icosa. It sets up the environment for use by *.path. *.path defines paths to libraries and modules needed for compilation. *.fcm defines the commands used to compile, link, etc. as well as options to be passed to the compiler/linker .

The option "-job 8" is similar to "make -j 8" and compiles in parallel for speed. After a successful build the main executable is found in the bin/ directory.

Compiling with XIOS output

DYNAMICO can direct its output through XIOS, a parallel I/O library and server. See https://forge.ipsl.jussieu.fr/ioserver . To enable XIOS output :

  • get and compile XIOS in a separate directory
  • set the variables XIOS_INCDIR , XIOS_LIBDIR and XIOS_LIB to appropriate values in your arch.path
  • use the option "-with_xios" in your "make_icosa" command

Why use XIOS :

  • without XIOS, each output field is written to a separate NetCDF file. Post-processing is required to group several fields together.
  • with XIOS, several fields can be written to a few output files. This behavior is controlled by the input file xios.xml (required). See https://forge.ipsl.jussieu.fr/ioserver for the syntax of this XML file.
  • without XIOS, data to be written is communicated to the main MPI process, which writes to the NetCDF files while other MPI processes stay idle. This is not expected to scale to a large number of MPI processes.
  • XIOS provides asynchronous, parallel I/O in order to scale to large MPI process counts.