Skip to content

Latest commit

 

History

History
136 lines (99 loc) · 4.72 KB

LISEZMOI.md

File metadata and controls

136 lines (99 loc) · 4.72 KB

rmnlib est une bibliothèque de fonctions pour la prévision numérique du temps utilisée principalement par Environnement et Changement climatique Canada.

Ses principaux composants sont les fichiers Standard RPN et l'interpolateur EZ.

Documentation

Obtenir le code

Le projet est hébergé à l'adresse https://gitlab.science.gc.ca/RPN-SI/librmn Le code est disponible via Git aux adresses suivantes:

cmake_rpn est inclus via un sous-module de Git. Veuillez cloner avec l'option --recursive ou bien exécuter la commande suivante après avoir cloné le dépôt, pour récupérer les sous-modules: git submodule update --init --recursive

Instructions d'installation

Créer un répertoire pour la compilation

mkdir $build_dir_path
cd $build_dir_path

Configuration de la compilation

Les options pour configurer la compilation doivent être ajoutées lors de l'appel de la commande cmake avec le préfixe -D.

CMAKE_BUILD_TYPE : (Release|RelWithDebInfo|Debug) Mode de compilation. Défaut: RelWithDebInfo

CMAKE_INSTALL_PREFIX : Chemin d'accès du répertoire pour l'installation (make install)

COMPILER_SUITE : (gnu|intel|xl|nvhpc|...) Suite de compilateurs à utiliser. Sur les systèmes d'ECCC, le compilateur chargé sera utilisé. Si les variables d'environnement propres à ECCC ne sont pas trouvées, la valeur par défaut est gnu.

WITH_OMPI : (yes|no) Indique si le support OpenMP/MPI est activé. Défaut: yes

Exemple de compilation

cmake \
    -DCMAKE_INSTALL_PREFIX=$install_dir_path \
    -DWITH_OMPI=no \
    $src_dir_path
make -j $a_resonable_number
make install

Compilation dans l'environnement d'ECCC

Les scripts CMake de cmake_rpn vont automatiquement détecter le compilateur chargé via la variable d'environnement EC_ARCH. Il n'est donc pas nécessaire de spécifier explicitement la suite de compilateurs à utiliser (-DCOMPILER_SUITE=...). Vous devez toutefois charger le compilateur désiré avant d'effectuer la configuration de la compilation.

Utilisez le bon fichier à partir de la variable ECCI_ENV, selon l'architecture souhaitée, afin de charger le compilateur spécifié, définir la variable ECCI_DATA_DIR pour la série de tests et définir la variable EC_CMAKE_MODULE_PATH pour les modules cmake_rpn.

  • Exemple pour PPP5:
. $ECCI_ENV/latest/ppp5/inteloneapi-2022.1.2.sh
  • Example pour le réseau CMC et gnu 11.4.0:
. $ECCI_ENV/latest/ubuntu-22.04-amd-64/gnu.sh

Puisque la version par défaut de CMake disponible sur les systèmes d'ECCC est probablement trop vieille, vous devez charger une version plus récente que 3.20. Par exemple: . ssmuse-sh -d main/opt/cmake/cmake-3.21.1.

Exemple de compilation de la branche dev sur un système à l'extérieur d'ECCC

git clone -b dev https://github.com/ECCC-ASTD-MRD/librmn.git
cd librmn
git submodule update --init --recursive
cd ..
mkdir librmn_build
cd librmn_build
cmake ../librmn -DCMAKE_INSTALL_PREFIX=~/opt/
make -j4 install

Documentation

Une cible doc est créée par cmake pour générer la documentation. Ceci nécessite cependant Doxygen et graphviz.

make doc

Changement de compilateur

Étant donné que la bibliothèque de fonctions contient un module Fortran, il faut utiliser le même compilateur qui a produit la biliothèque pour les applications clientes.

Ainsi, il faut nettoyer le répertoire de compilation et ré-exécuter les instructions de compilation en spécifiant un répertoire d'installation (-DCMAKE_INSTALL_PREFIX=$install_dir_path) différent.

Exemple d'utilisation dans une application cliente

Nous avons développé un exemple très simple d'application qui utilise librmn. Il peut être utilisé comme référence pour construire un projet CMake qui utilise la librmn.

Il peut être consulté aux adresses suivantes:

La version statique de la librairie sera celle utilisée par défaut lors de la recherche du package rmn, à moins de le spécifier. Exemples:

find_package(rmn [version] REQUIRED)
find_package(rmn [version] REQUIRED COMPONENTS shared)