COMSOL
Introduction
COMSOL est un logiciel d'usage général pour la modélisation en ingénierie. Nous remercions COMSOL Inc. pour l'entente spéciale d'hébergement de son application.
Avant d'utiliser COMSOL avec nos grappes, nous vous recommandons de consulter l'aide sous File -> Help -> Documentation. Au bas de la page d'accueil de COMSOL se trouvent des liens vers le blogue, la base de connaissances, le soutien technique et la documentation. Vous pouvez également consulter la documentation en ligne.
Votre licence
Notre organisation fournit l'hébergement pour COMSOL. Dans ce contexte, COMSOL est installé sur nos grappes, mais nous n'avons pas une licence générique fournissant un accès généralisé. Cependant, plusieurs établissements, facultés et départements possèdent des licences qui peuvent être utilisées sur nos grappes. Vous pouvez aussi acheter une licence auprès de CMC pour une utilisation au Canada. Une fois que l'aspect légal de votre licence est réglé, il faut passer à l'aspect technique. Notre équipe technique communiquera avec votre gestionnaire de licence pour que nos nœuds de calcul puissent avoir accès à votre serveur de licence. Si vous avez acheté une licence de CMC et que vous voulez vous connecter au serveur de licence de CMC, cet aspect technique est déjà réglé. Quand le serveur de licence est prêt et que vous avez créé ~/.licenses/comsol.lic, chargez un module COMSOL que vous pourrez utiliser. Si ceci ne fonctionne pas, contactez notre soutien technique.
Configuration de votre fichier de licence
Notre module COMSOL cherche l'information en rapport avec la licence à différents endroits, dont votre répertoire ~/.licenses. Si vous avez votre propre serveur de licence, indiquez-le en créant le fichier texte $HOME/.licenses/comsol.lic
avec les informations suivantes :
SERVER <server> ANY <port>
USE_SERVER
où <server>
est votre serveur de licence et <port>
est le numéro du port du serveur de licence.
Configuration d'une licence locale
Si vous voulez utiliser un nouveau serveur de licence de votre établissement, des modifications devront être apportées du côté de l'Alliance et de celui de l'établissement. Pour ce faire, faites parvenir à notre soutien technique 1. le numéro du port flex TCP lmgrd de COMSOL (habituellement 1718 par défaut), 2. le numéro du port statique TCP LMCOMSOL propre au vendeur (habituellement 1719 par défaut) et 3. le nom d’hôte pleinement qualifié de votre serveur de licence COMSOL. Créez ensuite le fichier texte comsol.lic tel que montré plus haut.
Configuration d'une licence CMC
Si vous avez une licence avec CMC, utilisez les paramètres IP publics préconfigurés dans le fichier comsol.lic :
- sur Béluga, SERVER 10.20.73.21 ANY 6601 (depuis le 18 mai 2022)
- sur Cedar, SERVER 172.16.0.101 ANY 6601
- sur Graham, SERVER 199.241.167.222 ANY 6601
- sur Narval, SERVER 10.100.64.10 ANY 6601
- sur Niagara, SERVER 172.16.205.198 ANY 6601
Si vous ne pouvez pas obtenir la licence, contactez <cmcsupport@cmc.ca> pour vérifier qu'ils ont votre nom d'utilisateur pour votre compte avec nous.
Produits installés
Pour connaître les modules et produits que vous pouvez utiliser, lancez COMSOL en mode graphique et cliquez sur Options -> Licensed and Used Products dans le menu déroulant du haut. Pour l'explication détaillée, cliquez ici. Si un module ou un produit est absent ou si la licence n'existe pas, contactez le soutien technique, car vous devrez peut-être réinstaller le module CVMFS que vous utilisez.
Versions installées
Pour vérifier le numéro de version complet d'un module, démarrez COMSOL en mode graphique et regardez dans le coin inférieur droit de la fenêtre de messages OU plus simplement, connectez-vous à une grappe et exécutez les commandes suivantes en mode batch :
[login-node:~] salloc --time=0:01:00 --nodes=1 --cores=1 --mem=1G --account=def-someuser [login-node:~] module load comsol/6.2 [login-node:~] comsol batch -version COMSOL Multiphysics 6.2.0.290
qui dans ce cas correspond à COMSOL 6.2 Update 1. Autrement dit, quand une nouvelle version de COMSOL est installée, elle utilise le format abrégé de 6.X mais pour des raisons pratiques, elle contient la plus récente version en date de l'installation. Quand d'autres versions sont disponibles, elles utiliseront le format 6.X.Y.Z. Par exemple, Update 3 peut être chargée sur une grappe avec les commandes module load comsol/6.2.0.415
OU module load comsol
. Nous vous recommandons d'utiliser la plus récente version pour profiter de la dernière mise à jour. Cependant, si vous voulez continuer d'utiliser une version 6.X ou 6.X.Y.Z, sachez que par définition, le logiciel dans ces modules sera le même.
Pour connaître les versions qui sont disponibles dans l'environnement standard que vous avez chargé (règle générale, il s'agit de StdEnv/2023
), lancez la commande module avail comsol
. Pour connaître les versions qui sont disponibles dans TOUS les environnements standards, lancez la commande module spider comsol
.
Soumettre des tâches
Exécution sur un seul nœud
Le script suivant utilise huit cœurs sur un seul nœud.
#!/bin/bash
#SBATCH --time=0-03:00 # indiquer la limite de temps (jj-hh:mm)
#SBATCH --account=def-group # indiquer le nom du compte
#SBATCH --mem=32G # indiquer 0 pour utiliser toute la mémoire sur chacun des nœuds
#SBATCH --cpus-per-task=8 # pour utiliser tous les cœurs, indiquer 32ou44 sur Graham, 32ou48 sur Cedar, 40 sur Béluga, 48ou64 sur Narval
#SBATCH --nodes=1 # ne pas modifier
#SBATCH --ntasks-per-node=1 # ne pas modifier
INPUTFILE="ModelToSolve.mph" # indiquer le nom du fichier en entrée
OUTPUTFILE="SolvedModel.mph" # indiquer le nom du fichier en sortie
# module load StdEnv/2020 # Versions < 6.2
module load StdEnv/2023
module load comsol/6.2
comsol batch -inputfile ${INPUTFILE} -outputfile ${OUTPUTFILE} -np $SLURM_CPUS_ON_NODE
Selon la complexité de la simulation, il est possible que COMSOL n'utilise pas efficacement plusieurs cœurs. Il est donc suggéré de vérifier la scalabilité de la simulation en augmentant graduellement le nombre de cœurs. Si l'accélération est presque linéaire avec tous les cœurs d'un nœud, considérez l'exécution de la tâche avec plusieurs nœuds entiers en ajustant le script ci-dessous.
Exécution sur plusieurs nœuds
Le script suivant utilise 8 cœurs distribués également sur 2 nœuds. Ce script est idéal pour les très grosses simulations (qui dépassent les capacités d'un simple nœud) et permet de redémarrer des tâches interrompues, d'allouer de gros fichiers temporaires dans l'espace /scratch et d'utiliser les paramètres par défaut du fichier comsolbatch.ini. Une option permettant de modifier le monceau Java est décrite sous le script.
#!/bin/bash
#SBATCH --time=0-03:00 # indiquer la limite de temps (jj-hh:mm)
#SBATCH --account=def-account # indiquer le nom du compte
#SBATCH --mem=16G # indiquer 0 pour utiliser toute la mémoire sur chacun des nœuds
#SBATCH --cpus-per-task=4 # pour utiliser tous les cœurs, indiquer 32ou44 sur Graham, 32ou48 sur Cedar, 40 sur Béluga, 48ou64 sur Narval
#SBATCH --nodes=2 # indiquer le nombre de nœuds de calcul à utiliser pour la tâche
#SBATCH --ntasks-per-node=1 # ne pas modifier
INPUTFILE="ModelToSolve.mph" # indiquer le nom du fichier en entrée
sortie
# module load StdEnv/2020 # Versions < 6.2
module load StdEnv/2023
module load comsol/6.2
RECOVERYDIR=$SCRATCH/comsol/recoverydir
mkdir -p $RECOVERYDIR
cp -f ${EBROOTCOMSOL}/bin/glnxa64/comsolbatch.ini comsolbatch.ini
cp -f ${EBROOTCOMSOL}/mli/startup/java.opts java.opts
#export I_MPI_COLL_EXTERNAL=0 # supprimer cette ligne sur Narval
comsol batch -inputfile $INPUTFILE -outputfile $OUTPUTFILE -np $SLURM_CPUS_ON_NODE -nn $SLURM_NNODES \
-recoverydir $RECOVERYDIR -tmpdir $SLURM_TMPDIR -comsolinifile comsolbatch.ini -alivetime 15 \
# -recover -continue # supprimer cette ligne pour redémarrer à partir du dernier fichier récupéré
Remarque 1 : Si votre tâche plante au démarrage en raison d'une erreur de segmentation Java, augmentez le monceau (heap), ajoutez les deux lignes sed
immédiatement après les commandes cp -f
. Si le problème n'est toujours pas réglé, remplacez 4G par 8G sur les deux lignes.
Pour plus d'information, voir Out of Memory.
sed -i 's/-Xmx2g/-Xmx4g/g' comsolbatch.ini sed -i 's/-Xmx768m/-Xmx4g/g' java.opts
Remarque 2 : Sur Narval, le module comsol/6.0.0.405 installé récemment pourrait ne pas performer de manière optimale à l'exécution sur plusieurs nœuds du script ci-dessus. Jusqu'à ce que plus de tests soient faits, nous recommandons d'utiliser plutôt le module original comsol/6.0 et créez un billet d'assistance pour rapporter le problème. Les modules comsol/6.1.x n'ont pas encore été testés.
Remarque 3 : Sur Graham, il arrive que certaines tâches soient lentes ou qu'elles gèlent au lancement quand script-smp.sh est exécuté sur un seul nœud. Si c'est le cas, utilisez plutôt script-dis.sh en y ajoutant #SBATCH --nodes=1
et créez un billet d'assistance pour rapporter le problème.
Mode graphique
Le mode graphique peut être utilisé interactivement en mode graphique complet sur une grappe ou sur gra-vdi.
Sur les nœuds des grappes
Convient surtout pour exécuter de manière interactive des tâches intensives de test avec TOUS les cœurs et la mémoire réservée par salloc
sur un nœud de calcul.
- 1) Connectez-vous à un nœud de calcul (pour 3 heures maximum) avec TigerVNC.
- 2) Ouvrez une fenêtre de terminal dans vncviewer et lancez
export XDG_RUNTIME_DIR=${SLURM_TMPDIR}
- 3) Lancez COMSOL Multiphysics 6.2 (ou version plus récente).
module load StdEnv/2023
module load comsol/6.2
comsol
(utilise tous les cœurs requis parsalloc
)
- 4) Lancez COMSOL Multiphysics 5.6 (ou version plus récente).
module load StdEnv/2020
module load comsol/6.1.0.357
comsol
(utilise tous les cœurs requis parsalloc
)
- 5) Start COMSOL Multiphysics 5.5 (ou version moins récente).
module load StdEnv/2016
module load comsol/5.5
comsol
(utilise tous les cœurs requis parsalloc
)
Sur les nœuds gra-vdi
Certaines utilisations valides de gra-vdi en mode interactif sont le lancement d'une tâche de test avec un maximum de 8 cœurs pour 24 heures ou moins, la création ou la modification des fichiers d'entrée pour une simulation, le post-traitement ou la visualisation des données. Puisque chacun des serveurs gra-vdi est utilisé par plusieurs autres personnes, nous vous demandons de vous limiter à 12 cœurs, surtout pour les longs calculs, afin de ne pas surcharger le système et de ne pas nuire aux autres. Pour les calculs interactifs et les opérations de maillage plus courtes, 16 cœurs devraient suffire. Si vous avez besoin de plus de cœurs quand vous travaillez en mode graphique, utilisez plutôt COMSOL sur un nœud de grappe où vous pouvez réserver tous les cœurs et la mémoire du nœud et avoir l'usage exclusif de la ressource.
- 1) Connectez-vous à gra-vdi (aucune limite de temps) avec TigerVNC.
- 2) Ouvrez une fenêtre de terminal dans vncviewer.
- 3) Lancez COMSOL Multiphysics 6.2 (ou version plus récente).
module load CcEnv StdEnv/2023
module avail comsol
module load comsol/6.2
comsol -np 12
(utilisation limite de 12 cœurs)
- 4) Lancez COMSOL Multiphysics 6.2 (ou version moins récente).
module load CcEnv StdEnv/2020
module avail comsol
module load comsol/6.1.0.357
- 5) Lancez COMSOL Multiphysics 5.5 (ou version moins récente)
module load CcEnv StdEnv/2016
module avail comsol
module load comsol/5.5
comsol -np 12
(utilisation limite de 12 cœurs)
Remarque : Si toutes les options du menu du haut sont désactivées quand COMSOL démarre en mode graphique, il est possible que votre ~/.comsol soit corrompu. Pour réparer ceci, renommez ou supprimez tout le répertoire ~/.comsol et redémarrez COMSOL. Ceci pourrait s'être produit si vous avez précédemment chargé un module COMSOL de l'environnement local SnEnv de gra-vdi.
Exploration des paramètres
Exploration en lots
En mode interactif avec l'interface graphique, les problèmes de paramètres peuvent être résolus avec l'approche Batch Sweep. Voyez cette vidéo démontrant des explorations multiples. Il est aussi possible d'obtenir l'accélération en parallélisant les tâches.
Exploration d'une grappe
Pour faire l'exploration d'une grappe, une tâche doit être soumise en ligne de commande à l'ordonnanceur avec sbatch slurmscript
. Pour connaître les détails en rapport avec les arguments additionnels requis, voyez les pages Running parametric sweeps... et How to use Job Sequences.... La fonctionnalité permettant de soumettre des simulations des paramètres à la queue d'une grappe à partir de l'interface graphique de COMSOL avec le nœud Cluster Sweep n'est pas offerte présentement.