MIKE

From Alliance Doc
Jump to navigation Jump to search
This site replaces the former Compute Canada documentation site, and is now being managed by the Digital Research Alliance of Canada.

Ce site remplace l'ancien site de documentation de Calcul Canada et est maintenant géré par l'Alliance de recherche numérique du Canada.

This page is a translated version of the page MIKE and the translation is 100% complete.
Other languages:

Le progiciel MIKE du groupe DHI sert à la modélisation hydraulique et hydrologique.

Licence

MIKE est un produit commercial et vous devez avoir votre propre licence.

Pour pouvoir l'utiliser sur nos grappes de calcul, vous devez contacter le service à la clientèle de MIKE à mike@dhigroup.com et confirmer que vous avez

  • une licence internet et
  • un lien téléchargé pour la version Linux de MIKE.

Installation

Vous devez télécharger les archives d'installation pour Linux.

Les directives suivantes supposent que les archives d'installation sont ces trois fichier, selon la version de MIKEs :

  • MIKE_Zero_2023_rhel7_22.11.05.tgz
  • MIKE_Zero_2023_Tools_rhel7_22.11.05.tgz
  • MIKE_Zero_2023_Examples.tgz
  • MIKE_Zero_2022_rhel7_Update_1.tgz
  • MIKE_Zero_2022_Tools_rhel7_Update_1.tgz
  • MIKE_Zero_2022_Examples_Update_1.tgz


1. Créez le répertoire ~/scratch/MIKE_TGZ pour y téléverser les trois archives.

2. MIKE a été compilé avec la bibliothèque Intel MPI, donc chargez le module apparié <intelmpi.

module load StdEnv/2020  intel/2021.2.0  intelmpi/2021.2.0
module load StdEnv/2020  intel/2020.1.217  intelmpi/2019.7.217

3. Lancez les commandes suivantes, selon la version de MIKE. Ceci fera l'extraction des archives. Exécutez les scripts d'installation install.sh pour chaque composant, ensuite modifiez les binaires pour qu'ils trouvent les bibliothèques dynamiques d'Intel MPI.

export MIKE_TGZ="$HOME/scratch/MIKE_TGZ"
export MIKE_HOME="$HOME/MIKE/2023"

cd $MIKE_TGZ
tar -xzf MIKE_Zero_2023_rhel7_22.11.05.tgz
tar -xzf MIKE_Zero_2023_Tools_rhel7_22.11.05.tgz
tar -xzf MIKE_Zero_2023_Examples.tgz

cd $MIKE_TGZ/MIKE_Zero_2023_rhel7_22.11.05
sh install.sh --eula --install-path "$MIKE_HOME" --license-server 127.0.0.1
cd $MIKE_TGZ/MIKE_Zero_2023_Tools_rhel7_22.11.05
sh install.sh --eula --install-path "$MIKE_HOME"
cd $MIKE_TGZ/MIKE_Zero_2023_Examples
sh install.sh --eula --install-path "$MIKE_HOME"

module load StdEnv/2020  intel/2021.2.0  intelmpi/2021.2.0
setrpaths.sh --path "$MIKE_HOME/bin"  --add_origin  \
    --add_path="$EBROOTIMPI/mpi/latest/lib/release:$EBROOTIMPI/mpi/latest/lib"
MIKE_TGZ_DIR="$HOME/MIKE_TGZ"
MIKE_INST_DIR="$HOME/MIKE/2022"

cd $MIKE_TGZ_DIR
tar -xzf MIKE_Zero_2022_rhel7_Update_1.tgz 
tar -xzf MIKE_Zero_2022_Tools_rhel7_Update_1.tgz
tar -xzf MIKE_Zero_2022_Examples_Update_1.tgz

cd $MIKE_TGZ_DIR/MIKE_Zero_2022_rhel7_Update_1
sh install.sh --eula --install-path "$MIKE_INST_DIR" --license-server 127.0.0.1
cd $MIKE_TGZ_DIR/MIKE_Zero_2022_Tools_rhel7_Update_1
sh install.sh --eula --install-path "$MIKE_INST_DIR"
cd $MIKE_TGZ_DIR/MIKE_Zero_2022_Examples_Update_1
sh install.sh --eula --install-path "$MIKE_INST_DIR"

module load StdEnv/2020 intel/2020.1.217 intelmpi/2019.7.217
setrpaths.sh --path "$MIKE_INST_DIR/bin"  --add_origin  \
    --add_path="$EBROOTIMPI/intel64/lib/release:$EBROOTIMPI/intel64/lib"

Autres versions

Les instructions ci-dessus supposent que les archives d'installation ont des noms de fichiers spécifiques. À l'installation de versions mineures publiées la même année, les noms des fichiers pour les archives (par exemple dans tar -xzf MIKE_Zero_2023_rhel7_22.11.05.tgz), et les noms des répertoires (par exemple dans cd $MIKE_TGZ/MIKE_Zero_2023_rhel7_22.11.05) ont besoin d'être ajustés en conséquence. Les prochaines versions majeures de MIKE pourraient utiliser des versions différentes de MPI et il faudrait alors modifier les directives en conséquence. Essayez un module de bibliothèque Intel MPI avec une version majeure correspondante (année). SI vous avez besoin d'assistance, contactez le soutien technique.

Créer un module

Collez ces commandes dans votre terminal pour créer un module d'environnement pour MIKE. Assurez-vous de modifier la version (2022) pour correspondre à la version que vous avez installée. Modifiez aussi la version des modules intelmpi et intel pour correspondre à ce que vous avez chargé pendant l'installation.


export MIKE_VERSION=2023
mkdir -p $HOME/modulefiles/mike
cat > $HOME/modulefiles/mike/${MIKE_VERSION}.lua <<EOF
help([[
Module for MIKE ${MIKE_VERSION} (by DHI group)
]])
local version = "${MIKE_VERSION}"
whatis("Version:".. version)
whatis("Keywords: FEM, Finite Elements, Simulation")
whatis("URL: https://www.mikepoweredbydhi.com/mike-" .. version)
whatis("Description: MIKE is a hydraulic and hydrological modeling software package.")

local home = os.getenv("HOME") or "~"
local root = pathJoin( home, "MIKE", version)

depends_on("StdEnv/2020", "intel/2021.2.0", "intelmpi/2021.2.0")

setenv(       "MIKE_HOME",      root)
setenv(       "MIKE_PROGRESS",  "STDOUT")
prepend_path( "PATH",           pathJoin(root, "bin"))
EOF
export MIKE_VERSION=2022
mkdir -p $HOME/modulefiles/mike
cat > $HOME/modulefiles/mike/${MIKE_VERSION}.lua <<EOF
help([[
  Module for MIKE ${MIKE_VERSION} (by DHI group)
]])
local version = "${MIKE_VERSION}"
whatis("Version:".. version)
whatis("Keywords: FEM, Finite Elements, Simulation")
whatis("URL: https://www.mikepoweredbydhi.com/mike-" .. version)
whatis("Description: MIKE is a hydraulic and hydrological modeling software package.")

local home = os.getenv("HOME") or "~"
local root = pathJoin( home, "MIKE", version)

depends_on("StdEnv/2020", "intel/2020.1.217", "intelmpi/2019.7.217") 

setenv(       "MIKE_HOME",      root)
setenv(       "MIKE_PROGRESS",  "STDOUT")
prepend_path( "PATH",           pathJoin(root, "bin"))
EOF

Activez ce module dans chaque tâche ou dans chaque session de connexion avec

Question.png
[name@server ~]$ module load mike/2023
Question.png
[name@server ~]$ module load mike/2022

Configurer la licence

Le service à la clientèle de MIKE vous enverra des directives comme ceci pour configurer votre licence.

Question.png
[name@server ~]$ licconfig set --type=internet --iuser=user@example.com --ipassword=my-password

Ceci se fait habituellement une seule fois quand vous recevez une nouvelle licence ou un nouveau code de licence.

Exemple de script pour une tâche

File : job_mike_2023_CPU.sh

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=8
#SBATCH --cpus-per-task=1
#SBATCH --mem-per-cpu=4000M
#SBATCH --time=00:20:00

module load StdEnv/2020  intel/2021.2.0  intelmpi/2021.2.0  mike/2023
export I_MPI_LIBRARY="/opt/software/slurm/lib/libpmi2.so"
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK:-1}
slurm_hl2hl.py --format MPIHOSTLIST > machinefile.$SLURM_JOBID

engine="FemEngineHD"
model="my_model.m3fm"

mpirun -machinefile machinefile.$SLURM_JOBID $engine $model


File : job_mike_2022_CPU.sh

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks=8
#SBATCH --cpus-per-task=1
#SBATCH --mem-per-cpu=4000M
#SBATCH --time=00:20:00

module load StdEnv/2020  intel/2020.1.217  intelmpi/2019.7.217  mike/2022
export I_MPI_LIBRARY="/opt/software/slurm/lib/libpmi2.so"
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK:-1}
slurm_hl2hl.py --format MPIHOSTLIST > machinefile.$SLURM_JOBID

engine="FemEngineHD"
model="my_model.m3fm"

mpirun -machinefile machinefile.$SLURM_JOBID $engine $model