MIKE
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("I_MPI_PMI_LIBRARY", "/opt/software/slurm/lib/libpmi2.so") setenv("SLURM_MPI_TYPE", "pmi2") 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("I_MPI_PMI_LIBRARY", "/opt/software/slurm/lib/libpmi2.so") setenv("SLURM_MPI_TYPE", "pmi2") 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
Configurer la licence
Le service à la clientèle de MIKE vous enverra des directives comme ceci pour configurer votre licence.
[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.
Les renseignements sur la licence sont enregistrés dans le fichier ~/.config/DHI/license/NetLmLcwConfig.xml
.
Exemple de script pour une tâche
#!/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 OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK:-1}
engine="FemEngineHD"
model="my_model.m3fm"
srun $engine $model
#!/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 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