Introduction¶
COMSOL est un logiciel polyvalent pour la modélisation en ingénierie. Nous remercions COMSOL Inc. pour l'entente d'hébergement spéciale de son application.
Avant d'utiliser COMSOL sur nos grappes, nous vous recommandons de consulter la section d'aide sous Fichier -> Aide -> 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 assure l'hébergement du logiciel COMSOL. Dans ce contexte, COMSOL est installé sur nos grappes, mais nous n'avons pas une licence générique offrant un accès généralisé. Cependant, plusieurs établissements, facultés et départements détiennent des licences qui peuvent être utilisées sur nos grappes. Vous pouvez aussi acheter une licence auprès de CMC pour utilisation au Canada. Une fois que l'aspect légal de votre licence est finalisé, il faut passer à l'aspect technique. Notre équipe technique communiquera avec votre gestionnaire de licence pour que nos nœuds de calcul puissent accéder à 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à géré. Lorsque le serveur de licence est prêt et que vous avez créé ~/.licenses/comsol.lic, chargez un module COMSOL que vous pourrez utiliser. Si cela ne fonctionne pas, contactez notre soutien technique.
Configuration de votre fichier de licence¶
Notre module COMSOL cherche l'information relative à 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 :
où <server> est votre serveur de licence et <port> est le numéro de 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 de port TCP lmgrd pour COMSOL (habituellement 1718 par défaut), 2. le numéro de port TCP statique LMCOMSOL du fournisseur (habituellement 1719 par défaut) et 3. le nom d’hôte entièrement qualifié de votre serveur de licence COMSOL. Créez ensuite le fichier texte comsol.lic comme illustré 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 :
- Fir:
SERVER 172.26.0.101 ANY 6601 - Nibi:
SERVER 10.25.1.56 ANY 6601 - Narval/Rorqual:
SERVER 10.100.64.10 ANY 6601 - Trillium:
SERVER scinet-cmc ANY 6601
Par exemple, un fichier de licence créé sur la grappe Nibi ressemblerait à ceci :
Si vous ne pouvez pas obtenir la licence, demandez de l'assistance en cliquant ici.
Vérifier l'utilisation des licences¶
Pour déterminer le nombre de licences utilisées par vos tâches COMSOL en cours d'exécution, il faut interroger le serveur de licences. Comme indiqué ici, cela peut se faire à l'aide de la commande lmstat. Cependant, cette commande n'étant pas installée par défaut avec COMSOL, la solution de rechange suivante, qui utilise la commande lmutil du module Ansys le plus récent, peut être exécutée sur n'importe quel nœud d'accès. Si vous utilisez le fichier standard ~/.licenses/comsol.lic pour identifier le serveur de licences, cette méthode devrait fonctionner, mais le délai de réponse peut aller jusqu'à une minute si le serveur est occupé.
module load ansys; $EBROOTANSYS/v$(echo ${EBVERSIONANSYS:2:2}${EBVERSIONANSYS:5:1})/licensingclient/linx64/lmutil lmstat -c ~/.licenses/comsol.lic -a | sed '/^$/d' | egrep 'License|UP|$USER|Total of' | grep -v 'Total of 0'
Produits installés¶
Pour connaître les modules et produits que vous pouvez utiliser, démarrez COMSOL en mode graphique et cliquez sur Options -> Produits sous licence et utilisés dans le menu déroulant supérieur. Pour l'explication détaillée, cliquez ici. Si un module ou un produit manque ou si la licence n'existe pas, contactez le soutien technique, car il se pourrait que vous deviez 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 de traitement par lots :
salloc --time=0:01:00 --nodes=1 --cores=1 --mem=1G --account=def-someuser
module load comsol/6.2
comsol batch -version
ce qui, dans ce cas, correspond à COMSOL 6.2 Mise à jour 1. Autrement dit, lorsqu'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 version la plus récente au moment de l'installation. Lorsque d'autres versions sont disponibles, elles utiliseront le format 6.X.Y.Z. Par exemple, la Mise à jour 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 version la plus récente afin de 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 contenu dans ces modules sera le même.
Pour connaître les versions qui sont disponibles dans l'environnement standard que vous avez chargé (généralement, 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.
Le module comsol/6.3 correspond à la version 6.3.0.290 et est disponible sur toutes nos grappes.
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 # Spécifier (j-hh:mm)
#SBATCH --account=def-group # Spécifier (un compte)
#SBATCH --mem=32G # Spécifier (0 pour utiliser toute la mémoire sur chaque nœud)
#SBATCH --cpus-per-task=8 # Spécifier (valeur maximale de tous les cœurs sur un nœud)
#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.1
module load StdEnv/2023 # Versions >= 6.2
module load comsol/6.4
comsol batch -inputfile ${INPUTFILE} -outputfile ${OUTPUTFILE} -np $SLURM_CPUS_ON_NODE
Selon la complexité de la simulation, il est possible que COMSOL n'exploite pas efficacement plusieurs cœurs. Il est donc suggéré de vérifier la mise à l'échelle de la simulation en augmentant progressivement le nombre de cœurs. Si l'accélération est quasi linéaire avec tous les cœurs d'un nœud, envisagez l'exécution de la tâche sur plusieurs nœuds complets 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 des fichiers temporaires volumineux dans l'espace /scratch et d'utiliser les paramètres par défaut du fichier comsolbatch.ini. Une option permettant de modifier le tas Java est décrite sous le script.
#!/bin/bash
#SBATCH --time=0-03:00 # Spécifier (j-hh:mm)
#SBATCH --account=def-account # Spécifier (un compte)
#SBATCH --mem=16G # Spécifier (0 pour utiliser toute la mémoire sur chaque nœud)
#SBATCH --cpus-per-task=4 # Spécifier (valeur maximale de tous les cœurs sur un nœud)
#SBATCH --nodes=2 # Spécifier (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
OUTPUTFILE="SolvedModel.mph" # indiquer le nom du fichier en sortie
# module load StdEnv/2020 # Versions <= 6.1
module load StdEnv/2023 # Versions >= 6.2
module load comsol/6.4
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 se bloque au démarrage en raison d'une erreur de segmentation Java, augmentez le tas (heap), ajoutez les deux lignes sed immédiatement après les commandes cp -f. Si le problème n'est toujours pas résolu, remplacez 4G par 8G sur les deux lignes. Pour plus d'informations, consultez Problèmes de mémoire.
Remarque 3
Il arrive que certaines tâches soient lentes ou qu'elles se bloquent au lancement lorsque script-dis.sh est exécuté sur un seul nœud. Si c'est le cas, utilisez plutôt le script pour nœuds multiples script-dis.sh ci-dessus, en y ajoutant #SBATCH --nodes=1 et créez ensuite une demande de soutien pour signaler le problème en précisant le numéro de la tâche et le nom de la grappe.
Mode graphique¶
Pour exécuter COMSOL en mode graphique, ouvrez une session de bureau à distance sur un système OnDemand ou JupyterLab en cliquant sur les liens ci-dessous.
Remarque
L'ancienne méthode utilisant un client/serveur TigerVNC devrait toujours fonctionner, mais elle n'est plus recommandée ni prise en charge. Quelle que soit la méthode utilisée, le fichier ~/.licenses/comsol.lic doit être configuré au préalable. Veuillez noter que la commande module avail comsol affichera les versions de COMSOL disponibles dans la version de StdEnv actuellement chargée (par exemple, StdEnv/2023). Si vous constatez que les éléments du menu supérieur sont grisés et non sélectionnables après avoir démarré COMSOL en mode interface graphique, votre fichier ~/.comsol est peut-être corrompu; essayez donc de le supprimer.
OnDemand¶
- Sur votre bureau, démarrez une session OnDemand en cliquant sur une des URL ci-dessous :
- Nibi :
https://ondemand.sharcnet.ca - TRILLIUM :
https://ondemand.scinet.utoronto.ca
- Nibi :
- Sur le bureau, ouvrez une nouvelle fenêtre de terminal et lancez les commandes correspondantes pour :
- COMSOL 6.2 (ou versions plus récentes)
module load StdEnv/2023(par défaut)module load comsol/6.4comsol
- COMSOL 6.1 (ou versions moins récentes)
module load StdEnv/2020(par défaut)module load comsol/6.1comsol
- COMSOL 6.2 (ou versions plus récentes)
JupyterLab¶
- Sur votre bureau, démarrez une session JupyterHub en cliquant sur une URL ci-dessous.
- FIR:
https://jupyterhub.fir.alliancecan.ca - NARVAL:
https://portail.narval.calculquebec.ca/ - RORQUAL:
https://jupyterhub.rorqual.alliancecan.ca
- FIR:
- Sélectionnez un module COMSOL (par exemple
comsol/6.4) dans la section Module disponible à gauche. - Pour le module, cliquez sur Charger pour afficher l'icône
Comsol (VNC). - Cliquez sur l'icône et COMSOL devrait démarrer automatiquement sur un bureau Jupyter à distance.
Exploration des paramètres¶
Exploration en lots¶
En mode interactif avec l'interface graphique, les problèmes de balayage de paramètres peuvent être résolus avec l'approche par balayage de lots (Batch Sweep). Voyez cette vidéo démontrant des balayages de paramètres 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 via sbatch slurmscript. Pour connaître les détails concernant les arguments supplémentaires requis, voyez l'exécution de balayages de paramètres... et l'utilisation des séquences de tâches.... La fonctionnalité permettant de soumettre des simulations de balayage de paramètres à la file d'attente d'une grappe depuis l'interface graphique de COMSOL à l'aide du nœud de balayage de grappe (Cluster Sweep) n'est pas offerte actuellement.