COMSOL

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 COMSOL and the translation is 100% complete.
Other languages:

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.

Logo comsol blue 1571x143.png

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

Le module COMSOL cherche l'information en rapport avec la licence à différents endroits, dont votre répertoire personnel (/home). Si vous avez votre propre serveur de licence, vous pouvez y accéder avec le fichier suivant :

File : comsol.lic

SERVER <server> ANY <port>
USE_SERVER


<server> est votre serveur de licence et <port> est le numéro du port du serveur de licence. Enregistrez ce fichier dans le répertoire $HOME/.licenses/.

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 :

[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. Notez que seule la première installation d'une nouvelle version sur une grappe utilise le format abrégé 6.X pour le numéro de version. Pour les versions subséquentes, le numéro de version complet sera utilisé par défaut. Vous devez donc charger manuellement la dernière version du module pour profiter des plus récentes fonctionnalités et corrections de bogues puisque le module que vous utilisez actuellement ne sera jamais mis à jour directement. Enfin, pour vérifier quelles versions sont disponibles dans l'environnement standard que vous avez chargé (StdEnv/2020 ou StdEnv/2023), exécutez la commande module avail comsol. Pour vérifier quelles versions sont disponibles dans TOUS les environnements standards disponibles, utilisez la commande plus puissante 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.

File : mysub1.sh

#!/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
module load comsol/6.1.0.357             # indiquer la version

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.


File : script-dis.sh

#!/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
module load comsol/6.1.0.357             # indiquer la version

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 par salloc)
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 par salloc)
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 par salloc)

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.