COMSOL

From CC Doc
Jump to navigation Jump to search
This page is a translated version of the page COMSOL and the translation is 100% complete.
Other languages:
English • ‎français

Introduction

COMSOL est un logiciel d'usage général pour la modélisation en ingénierie. Calcul Canada remercie 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. Vous pouvez aussi consulter les manuels de base.

Votre licence

Calcul Canada est fournisseur d'hébergement pour COMSOL. Dans ce contexte, COMSOL est installée sur nos grappes, mais nous n'avons pas une licence générique fournissant l'accès à tous nos utilisateurs. Cependant, plusieurs établissements, facultés et départements possèdent des licences qui peuvent être utilisées sur nos grappes. Les chercheurs peuvent aussi acheter une licence auprès de CMC pour une utilisation au Canada. Il est aussi possible d'acheter une licence flottante pour votre groupe que vous pourrez utiliser sur les grappes de Calcul Canada via un serveur de licence SHARCNET; voir https://www.comsol.com/products/licensing.

En ce qui a trait à l'aspect technique, nos nœuds de calcul doivent pouvoir communiquer avec votre serveur de licence. Si ce n'est déjà fait, notre équipe technique coordonnera ceci avec votre gestionnaire de licence; dans le cas de CMC, ce travail a été effectué . Quand tout sera en place, vous pourrez charger le module COMSOL qui localisera de lui-même la licence. En cas de difficulté, contactez le 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 où <server> est votre serveur de licence et <port> est le numéro du port du serveur de licence.

File : comsol.lic

SERVER <server> ANY <port>
USE_SERVER


Enregistrez ce fichier dans le répertoire $HOME/.licenses/. Les coupe-feu des deux parties doivent être configurés; pour ce faire, faites parvenir les renseignements sur le port de service et l'adresse IP de votre serveur de licence COMSOL au soutien technique.

Configuration d'une licence CMC

Si vous avez une licence avec CMC, utilisez les paramètres IP publics suivants dans le fichier comsol.lic sur chacune des grappes :

  • sur Béluga, SERVER 132.219.136.89 ANY 6601
  • sur Graham, SERVER 199.241.162.97 ANY 6601
  • sur Cedar, SERVER 206.12.126.25 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 Calcul Canada.

Produits installés

Pour connaître les produits installés et pouvant être utilisés avec votre licence, lancez la commande

module load comsol/version
ls $EBROOTCOMSOL/applications | grep -i Module
ls $EBROOTCOMSOL/applications | grep -i LiveLink

En date de juillet 2021, si on compare le résultat avec https://www.comsol.com/products pour la version courante, on peut remarquer que Fuel_Cell_and_Electrolyzer_Module, Polymer_Flow_Module et Liquid_and_Gas_Properties_Module ne sont pas installés avec comsol/5.6. Peu importe si votre licence le permet ou non, ces modules se trouvent dans la section Other products quand COMSOL est démarré et que vous cliquez sur Options -> Licensed and Used Products. Pour plus d'information, lisez Checking and Controlling Products and Licenses Used. Les prochaines installations de COMSOL devraient inclure tous les produits par défaut. Si vous avez besoin d'un produit qui n'est pas installé, écrivez au soutien technique.

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            # Specify (d-hh:mm)
#SBATCH --account=def-group       # Specify (some account)
#SBATCH --mem=3G                  # Specify (set to 0 to use all available node memory when using all cores)
#SBATCH --cpus-per-task=8         # Specify (set to 32or44 on graham, 32or48 on cedar, or 40 on beluga to use all cores)
#SBATCH --nodes=1                 # Do not change
#SBATCH --ntasks-per-node=1       # Do not change

FILENAME="MyModel.mph"            # Specify (inputfile filename)

# Uncomment a version to use
#module load StdEnv/2016.4 comsol/5.5
#module load StdEnv/2020 comsol/5.6

comsol batch -inputfile $FILENAME -outputfile solved_out.mph -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 : mysub2.sh

#!/bin/bash
#SBATCH --time=0-03:00            # Specify (d-hh:mm)
#SBATCH --account=def-account     # Specify (some account)
#SBATCH --mem=3G                  # Specify (set to 0 to use all available node memory when using all cores)
#SBATCH --cpus-per-task=4         # Specify (set to 32or44 on graham, 32or48 on cedar, or 40 on beluga to use all cores)
#SBATCH --nodes=2                 # Specify (the number of compute nodes)
#SBATCH --ntasks-per-node=1       # Do not change

FILENAME="MyModel.mph"            # Specify (inputfile filename)

module load StdEnv/2020
module load comsol/5.6

SCRTMP=/scratch/$USER/comsol/tmpdir
SCRREC=/scratch/$USER/comsol/recoverydir
mkdir -p $SCRTMP $SCRREC

cp -f ${EBROOTCOMSOL}/bin/glnxa64/comsolbatch.ini comsolbatch.ini
cp -f ${EBROOTCOMSOL}/mli/startup/java.opts java.opts

comsol batch -inputfile $FILENAME -outputfile solved_out.mph -recover \
 -nn $SLURM_NTASKS -nnhost $SLURM_NTASKS_PER_NODE -np $SLURM_CPUS_PER_TASK \
 -recoverydir $SCRREC -tmpdir $SCRTMP -comsolinifile comsolbatch.ini -alivetime 15


Pour augmenter le monceau (heap), ajoutez les lignes sed immédiatement après les commandes cp -f.

sed -i 's/-Xmx2g/-Xmx4g/g' comsolbatch.ini
sed -i 's/-Xmx768m/-Xmx2g/g' java.opts

Pour plus d'information, voir Out of Memory.


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 pouvant exiger la totalité des ressources d'un seul nœud de calcul.

1) Connectez-vous à un nœud de calcul (limite de 3 heures) avec TigerVNC
2) Lancez COMSOL Multiphysics 5.5.0.292
module load StdEnv/2016.4
module load comsol/5.5
comsol
3) Lancez COMSOL Multiphysics 5.6.0.280
module load StdEnv/2020
module load comsol/5.6
comsol

Sur les nœuds gra-vdi

Pour utiliser correctement gra-vdi de façon interactive, lancez une tâche de test avec un maximum de 8 cœurs pour 24 heures ou moins, créez ou modifiez des fichiers d'entrée pour une simulation, faire le post-traitement ou la visualisation des données. Pour lancer COMSOL en mode interactif :

1) Connectez-vous à gra-vdi (aucune limite de temps) avecTigerVNC
2) Lancez COMSOL Multiphysics 5.6.0.280 (ou une version plus récente)
module load CcEnv StdEnv/2020
module spider comsol
module load comsol/5.6
comsol
3) Lancez COMSOL Multiphysics 5.5.0.292 (ou une version moins récente)
module load CcEnv StdEnv/2016.4
module spider comsol
module load comsol/5.5
comsol

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.