Abaqus/fr: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
No edit summary
(Updating to match new version of source page)
Line 2: Line 2:
[[Category:Software]]
[[Category:Software]]
__FORCETOC__
__FORCETOC__
[https://www.3ds.com/products-services/simulia/products/abaqus/ Abaqus FEA] est un progiciel commercial pour l'analyse d'éléments finis et l'ingénierie assistée par ordinateur.
[https://www.3ds.com/products-services/simulia/products/abaqus/ Abaqus FEA] is a software suite for finite element analysis and computer-aided engineering.


= Votre licence =
= Using your own license =
Des modules Abaqus sont disponibles sur nos grappes, mais vous devez posséder votre propre licence. Pour configurer votre compte sur les grappes que vous voulez utiliser, connectez-vous et créez sur chacune un fichier <code>$HOME/.licenses/abaqus.lic</code> qui contient les deux lignes suivantes, pour les versions 202X et 6.14.1 respectivement. Remplacez ensuite <code>port@server</code> par le numéro du port flexlm et l'adresse IP (ou le nom complet du domaine) de votre serveur de licence Abaqus.
Abaqus software modules are available on our clusters; however, you must provide your own license. To configure your account on a cluster, log in and create a file named <code>$HOME/.licenses/abaqus.lic</code> containing the following two lines which support versions 202X and 6.14.1 respectively. Next, replace <code>port@server</code> with the flexlm port number and server IP address (or fully qualified hostname) of your Abaqus license server.


{{File
{{File
Line 14: Line 14:
}}
}}


Si votre licence n'est pas configurée pour une grappe en particulier, les administrateurs de systèmes des deux parties devront effectuer certaines modifications. Ceci est nécessaire pour que les ports flexlm et TCP de votre serveur Abaqus puissent être rejoints par tous les nœuds de calcul quand vos tâches dans la queue seront exécutées. Pour que nous puissions vous assister dans cette tâche, écrivez au  [[Technical support/fr|soutien technique]] en indiquant
If your license has not been set up for use on an Alliance cluster, some additional configuration changes by the Alliance system administrator and your local system administrator will need to be done. Such changes are necessary to ensure the flexlm and vendor TCP ports of your Abaqus server are reachable from all cluster compute nodes when jobs are run via the queue. So we may help you get this done, open a ticket with [[Technical support|technical support]]. Please be sure to include the following three items:
* le numéro du port flexlm
* flexlm port number
* le numéro du port statique
* static vendor port number
* l'adresse IP de votre serveur de licence Abaqus.
* IP address of your Abaqus license server.
En retour vous recevrez une liste d'adresses IP et votre administrateur de système pourra ouvrir les pare-feu de votre serveur local pour que la grappe puisse se connecter via les deux ports. Une entente spéciale doit habituellement être négociée et signée avec SIMULIA pour qu'une telle licence puisse être utilisée à distance avec notre matériel.
You will then be sent a list of cluster IP addresses so that your administrator can open the local server firewall to allow connections from the cluster on both ports. Please note that a special license agreement must generally be negotiated and signed by SIMULIA and your institution before a local  license may be used remotely on Alliance hardware.


= Soumettre une tâche sur une grappe =
= Cluster job submission =
Below are prototype Slurm scripts for submitting thread and mpi-based parallel simulations to single or multiple compute nodes.  Most users will find it sufficient to use one of the <b>project directory scripts</b> provided in the <i>Single node computing</i> sections. The optional <code>memory=</code> argument found in the last line of the scripts is intended for larger memory or problematic jobs where 3072MB offset value may require tuning.  A listing of all Abaqus command line arguments can be obtained by loading an Abaqus module and running: <code>abaqus -help | less</code>.


Vous trouverez ci-dessous des prototypes de scripts Slurm pour soumettre des simulations parallèles sur un ou plusieurs nœuds de calcul en utilisant des fils et MPI. Dans la plupart des cas, il suffira d'utiliser un des scripts du répertoire de projet dans une des sections pour un nœud simple. Dans la dernière ligne des scripts, l'argument <code>memory=</code> est optionnel et sert aux tâches qui demandent beaucoup de mémoire ou qui posent problème; la valeur de déplacement de 3072Mo pourrait nécessiter un ajustement. Pour obtenir la liste des arguments en ligne de commande, chargez un module Abaqus et lancez <code>abaqus -help | less</code>.
Single node jobs that run less than one day should find the <i>project directory script</i> located in the first tab sufficient. However, single node jobs that run for more than a day should use one of the restart scripts.  Jobs that create large restart files will benefit by writing to local disk through the use of the SLURM_TMPDIR environment variable utilized in the <b>temporary directory scripts</b> provided in the two rightmost tabs of the single node standard and explicit analysis sections.  The restart scripts shown here will continue jobs that have been terminated early for some reason.  Such job failures can occur if a job reaches its maximum requested runtime before completing and is killed by the queue or if the compute node the job was running on crashed due to an unexpected hardware failure.  Other restart types are possible by further tailoring of the input file (not shown here) to continue a job with additional steps or change the analysis (see the documentation for version specific details).


Le <i>script du répertoire de projet</i> sous le premier onglet devrait suffire pour les tâches qui utilisent un nœud simple et qui ont une durée de moins d'une journée. Par contre, pour les tâches qui utilisent un nœud simple et qui ont une durée de plus d'une journée, vous devriez utiliser un des scripts de redémarrage. Dans le cas des tâches qui créent de gros fichiers de redémarrage, il est préférable que l'écriture se fasse sur le disque local avec la variable d'environnement SLURM_TMPDIR qui est utilisée dans les scripts sous les derniers onglets des sections <i>Analyse standard</i> et <i>Analyse explicite</i>. Les scripts de redémarrage continueront les tâches qui ont été terminées pour une quelconque raison. Ceci peut se produire si la tâche atteint la durée d'exécution maximum demandée avant d'être complète et qu'elle est tuée par la queue, ou si le nœud de calcul plante en raison d'un problème de matériel inattendu. D'autres types de redémarrage sont possibles en modifiant davantage le fichier d'entrée (non documentés ici) pour poursuivre une tâche ayant des étapes additionnelles ou en changeant l'analyse (consultez la documentation pour les détails particuliers à la version).
Jobs that require large memory or larger compute resources (beyond that which a single compute node can provide) should use the mpi scripts in the <b>multiple node sections</b> below to distribute computing over arbitrary node ranges determined automatically by the scheduler. Short scaling test jobs should be run to determine wall-clock times (and memory requirements) as a function of the number of cores (2, 4, 8, etc.) to determine the optimal number before running any long jobs.  


Les tâches qui exigent beaucoup de mémoire ou beaucoup de ressources de calcul (plus que la capacité d'un nœud simple) devraient utiliser les scripts MPI dans les sections pour nœuds multiples afin de distribuer le calcul sur un ensemble de nœuds arbitraires déterminé automatiquement par l'ordonnanceur. Avant de lancer des tâches de longue durée, il est recommandé d'exécuter de courts tests présentant peu de scalabilité pour déterminer la durée réelle d'exécution (et les exigences en mémoire) en fonction du nombre optimal de cœurs (2, 4, 8, etc.).
== Standard analysis ==
 
Abaqus solvers support thread-based and mpi-based parallelization. Scripts for each type are provided below for running Standard Analysis type jobs on Single or Multiple nodes respectively. Scripts to perform multiple node job restarts are not currently provided.
== Analyse standard ==
 
Les solveurs prennent en charge la parallélisation avec fils et avec MPI. Des scripts pour chaque mode sont présentés sous les onglets pour l'utilisation d'un nœud simple et celle de nœuds multiples. Des scripts pour redémarrer une tâche qui utilise des nœuds multiples ne sont pas présentés pour l'instant.
 
=== Scripts pour un nœud simple ===


=== Single node computing ===
<tabs>
<tabs>
<tab name="script du répertoire de projet">
<tab name="project directory script">
{{File
{{File
   |name="scriptsp1.txt"
   |name="scriptsp1.txt"
Line 41: Line 38:
   |contents=
   |contents=
#!/bin/bash
#!/bin/bash
#SBATCH --account=def-group    # indiquer le nom du compte
#SBATCH --account=def-group    # Specify account
#SBATCH --time=00-06:00        # indiquer la limite de temps (jj-hh:mm)
#SBATCH --time=00-06:00        # Specify days-hrs:mins
#SBATCH --cpus-per-task=4      # indiquer le nombre de cœurs
#SBATCH --cpus-per-task=4      # Specify number of cores
#SBATCH --mem=8G              # indiquer la mémoire totale > 5G
#SBATCH --mem=8G              # Specify total memory > 5G
#SBATCH --nodes=1              # ne pas modifier
#SBATCH --nodes=1              # Do not change !


module load StdEnv/2020        # version la plus récente
module load StdEnv/2020        # Latest version
module load abaqus/2021        # version la plus récente
module load abaqus/2021        # Latest version


#module load StdEnv/2016      # supprimer ce commentaire pour utiliser cette commande
#module load StdEnv/2016      # Uncomment to use
#module load abaqus/2020      # supprimer ce commentaire pour utiliser cette commande
#module load abaqus/2020      # Uncomment to use


unset SLURM_GTIDS
unset SLURM_GTIDS
Line 63: Line 60:
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"
}}
}}
Pour écrire les données de redémarrage en incréments de N=12, entrez ce qui suit dans le fichier en entrée&nbsp;:
To write restart data every N=12 time increments specify in the input file:
  *RESTART, WRITE, OVERLAY, FREQUENCY=12
  *RESTART, WRITE, OVERLAY, FREQUENCY=12
Pour écrire les données de redémarrage pour un total de 12 incréments, entrez plutôt &nbsp;:
To write restart data for a total of 12 time increments specify instead:
  *RESTART, WRITE, OVERLAY, NUMBER INTERVAL=12, TIME MARKS=NO
  *RESTART, WRITE, OVERLAY, NUMBER INTERVAL=12, TIME MARKS=NO
Pour vérifier l'information complète sur le redémarrage&nbsp;ː
To check for completed restart information do:
  egrep -i "step|start" testsp*.com testsp*.msg testsp*.sta
  egrep -i "step|start" testsp*.com testsp*.msg testsp*.sta
 
Some simulations may benefit by adding the following to the Abaqus command at the bottom of the script:
Certaines simulations peuvent être améliorées en ajoutant au bas du script la commande Abaqus
  order_parallel=OFF
  order_parallel=OFF
</tab>
</tab>
<tab name="script de redémarrage du répertoire de projet">
<tab name="project directory restart script">
{{File
{{File
   |name="scriptsp2.txt"
   |name="scriptsp2.txt"
Line 79: Line 75:
   |contents=
   |contents=
#!/bin/bash
#!/bin/bash
#SBATCH --account=def-group    # indiquer le nom du compte
#SBATCH --account=def-group    # Specify account
#SBATCH --time=00-06:00        # indiquer la limite de temps (jj-hh:mm)
#SBATCH --time=00-06:00        # Specify days-hrs:mins
#SBATCH --cpus-per-task=4      # indiquer le nombre de cœurs
#SBATCH --cpus-per-task=4      # Specify number of cores
#SBATCH --mem=8G              # indiquer la mémoire totale > 5G
#SBATCH --mem=8G              # Specify total memory > 5G
#SBATCH --nodes=1              # ne pas modifier
#SBATCH --nodes=1              # Do not change !


module load abaqus/2021
module load abaqus/2021
unset SLURM_GTIDS
unset SLURM_GTIDS
export MPI_IC_ORDER='tcp'
export MPI_IC_ORDER='tcp'
Line 97: Line 92:
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"
}}
}}
Le fichier en entrée pour le redémarrage doit contenir
The restart input file should contain:
  *HEADING
  *HEADING
  *RESTART, READ
  *RESTART, READ
</tab>
</tab>
<tab name="script du répertoire temporaire">
<tab name="temporary directory script">
{{File
{{File
   |name="scriptst1.txt"
   |name="scriptst1.txt"
Line 107: Line 102:
   |contents=
   |contents=
#!/bin/bash
#!/bin/bash
#SBATCH --account=def-group    # indiquer le nom du compte
#SBATCH --account=def-group    # Specify account
#SBATCH --time=00-06:00        # indiquer la limite de temps (jj-hh:mm)
#SBATCH --time=00-06:00        # Specify days-hrs:mins
#SBATCH --cpus-per-task=4      # indiquer le nombre de cœurs
#SBATCH --cpus-per-task=4      # Specify number of cores
#SBATCH --mem=8G              # indiquer la mémoire totale > 5G
#SBATCH --mem=8G              # Specify total memory > 5G
#SBATCH --nodes=1              # ne pas modifier
#SBATCH --nodes=1              # Do not change !


module load abaqus/2021
module load abaqus/2021
Line 134: Line 129:
cp -f * $SLURM_SUBMIT_DIR
cp -f * $SLURM_SUBMIT_DIR
}}
}}
Pour écrire la date de redémarrage en incréments de N=12 à la fin de chaque étape de l'analyse&nbsp;:
To write restart data every N=12 time increments specify in the input file:
  *RESTART, WRITE, FREQUENCY=12
  *RESTART, WRITE, OVERLAY, FREQUENCY=12
Pour désactiver l'écriture des données sur le redémarrage  (dans les fichiers res,mdl,stt) indiquez plutôt
To write restart data for a total of 12 time increments specify instead:
  *RESTART, WRITE, FREQUENCY=0
  *RESTART, WRITE, OVERLAY, NUMBER INTERVAL=12, TIME MARKS=NO
Pour vérifier l'information complète sur le redémarrage ː
To check the completed restart information do:
  cat testst1.msg | grep "STARTS\|COMPLETED\|WRITTEN"
  egrep -i "step|start" testst*.com testst*.msg testst*.sta
</tab>
</tab>
<tab name="script de redémarrage du répertoire temporaire">
<tab name="temporary directory restart script">
{{File
{{File
   |name="scriptst2.txt"
   |name="scriptst2.txt"
Line 147: Line 142:
   |contents=
   |contents=
#!/bin/bash
#!/bin/bash
#SBATCH --account=def-group    # indiquer le nom du compte
#SBATCH --account=def-group    # Specify account
#SBATCH --time=00-06:00        # indiquer la limite de temps (jj-hh:mm)
#SBATCH --time=00-06:00        # Specify days-hrs:mins
#SBATCH --cpus-per-task=4      # indiquer le nombre de cœurs
#SBATCH --cpus-per-task=4      # Specify number of cores
#SBATCH --mem=8G              # indiquer la mémoire totale > 5G
#SBATCH --mem=8G              # Specify total memory > 5G
#SBATCH --nodes=1              # ne pas modifier
#SBATCH --nodes=1              # Do not change !


module load abaqus/2021
module load abaqus/2021
Line 175: Line 170:
cp -f testst2* $SLURM_SUBMIT_DIR
cp -f testst2* $SLURM_SUBMIT_DIR
}}
}}
Le fichier en entrée pour le redémarrage doit contenir
The restart input file should contain:
  *HEADING
  *HEADING
  *RESTART, READ
  *RESTART, READ
Line 181: Line 176:
</tabs>
</tabs>


=== Script pour nœuds multiples ===
=== Multiple node computing ===
 
Users with large memory or compute needs (and correspondingly large licenses) can use the following script to perform mpi-based computing over an arbitrary range of nodes ideally left to the scheduler to  automatically determine. A companion template script to perform restart multi-node jobs is not currently provided due to additional limitations when they can be used.
Si vous disposez d'une licence qui vous permet d'exécuter des tâches nécessitant beaucoup de mémoire et de calcul, le script suivant pourra effectuer le calcul avec MPI en utilisant un ensemble de nœuds arbitraires idéalement déterminé automatiquement par l'ordonnanceur. Un script modèle pour redémarrer des tâches sur nœuds multiples n'est pas fourni car son utilisation présente des limitations supplémentaires.


{{File
{{File
Line 190: Line 184:
   |contents=
   |contents=
!/bin/bash
!/bin/bash
#SBATCH --account=def-group    # indiquer le nom du compte
#SBATCH --account=def-group    # Specify account
#SBATCH --time=00-06:00        # indiquer la limite de temps (jj-hh:mm)
#SBATCH --time=00-06:00        # Specify days-hrs:mins
# SBATCH --nodes=2            # préférable de conserver ce commentaire
# SBATCH --nodes=2            # Best to leave commented
#SBATCH --ntasks=8            # indiquer le nombre de cœurs
#SBATCH --ntasks=8            # Specify number of cores
#SBATCH --mem-per-cpu=16G      # indiquer la mémoire par cœur
#SBATCH --mem-per-cpu=16G      # Specify memory per core
#SBATCH --cpus-per-task=1      # ne pas modifier
#SBATCH --cpus-per-task=1      # Do not change !


module load abaqus/2021
module load abaqus/2021
Line 218: Line 212:
}}
}}


== Analyse explicite ==
== Explicit analysis ==
Abaqus solvers support thread-based and mpi-based parallelization.  Scripts for each type are provided below for running explicit analysis type jobs on single or multiple nodes respectively.  Template scripts to perform multi-node job restarts are not currently provided pending further testing.


Les solveurs prennent en charge la parallélisation avec fils et avec MPI. Des scripts pour chaque mode sont présentés sous les onglets pour l'utilisation d'un nœud simple et celle de nœuds multiples. Des modèles de scripts pour redémarrer une tâche qui utilise des nœuds multiples nécessitent plus de tests et ne sont pas présentés pour l'instant.
=== Single node computing ===  
 
=== Scripts pour un nœud simple ===


<tabs>
<tabs>
<tab name="script du répertoire de projet">
<tab name="project directory script">
{{File
{{File
   |name="scriptep1.txt"
   |name="scriptep1.txt"
Line 231: Line 224:
   |contents=
   |contents=
#!/bin/bash
#!/bin/bash
#SBATCH --account=def-group    # indiquer le nom du compte
#SBATCH --account=def-group    # specify account
#SBATCH --time=00-06:00        # indiquer la limite de temps (jj-hh:mm)
#SBATCH --time=00-06:00        # days-hrs:mins
#SBATCH --mem=8G              # indiquer la mémoire du nœud > 5G
#SBATCH --mem=8G              # node memory > 5G
#SBATCH --cpus-per-task=4      # indiquer le nombre de cœurs  > 1
#SBATCH --cpus-per-task=4      # number cores > 1
#SBATCH --nodes=1              # ne pas modifier
#SBATCH --nodes=1              # do not change


module load abaqus/2021
module load abaqus/2021
Line 249: Line 242:
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"
}}
}}
Pour écrire les données sur le redémarrage en sortie à des intervalles de temps de n=12 (au début de l'étape et à des incréments se terminant immédiatement après chaque intervalle), votre fichier d'entrée devrait contenir
To write restart data for a total of 12 time increments specify in the input file:
  *RESTART, WRITE, NUMBER INTERVAL=12, TIME MARKS=NO
  *RESTART, WRITE, OVERLAY, NUMBER INTERVAL=12, TIME MARKS=NO
Pour écrire les données de redémarrage pour un total de 12 incréments, entrez plutôt
Check for completed restart information in relevant output files:
  *RESTART, WRITE, NUMBER INTERVAL=0
  egrep -i "step|restart" testep*.com testep*.msg testep*.sta
Pour vérifier l'information complète sur le redémarrage ː
cat testep1.sta | grep Restart
</tab>
</tab>
<tab name="script de redémarrage du répertoire de projet">
<tab name="project directory restart script">
{{File
{{File
   |name="scriptep2.txt"
   |name="scriptep2.txt"
Line 262: Line 253:
   |contents=
   |contents=
#!/bin/bash
#!/bin/bash
#SBATCH --account=def-group    # indiquer le nom du compte
#SBATCH --account=def-group    # specify account
#SBATCH --time=00-06:00        # indiquer la limite de temps (jj-hh:mm)
#SBATCH --time=00-06:00        # days-hrs:mins
#SBATCH --mem=8G              # indiquer la mémoire du nœud > 5G
#SBATCH --mem=8G              # node memory > 5G
#SBATCH --cpus-per-task=4      # indiquer le nombre de cœurs  > 1
#SBATCH --cpus-per-task=4      # number cores > 1
#SBATCH --nodes=1              # ne pas modifier
#SBATCH --nodes=1              # do not change


module load abaqus/2021
module load abaqus/2021
Line 281: Line 272:
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"
}}
}}
Aucune modification au fichier d'entrée n'est requise pour redémarrer l'analyse.
No input file modifications are required to restart the analysis.
</tab>
</tab>
<tab name="script du répertoire temporaire">
<tab name="temporary directory script">
{{File
{{File
   |name="scriptet1.txt"
   |name="scriptet1.txt"
Line 289: Line 280:
   |contents=
   |contents=
#!/bin/bash
#!/bin/bash
#SBATCH --account=def-group    # indiquer le nom du compte
#SBATCH --account=def-group    # specify account
#SBATCH --time=00-06:00        # indiquer la limite de temps (jj-hh:mm)
#SBATCH --time=00-06:00        # days-hrs:mins
#SBATCH --mem=8G              # indiquer la mémoire du nœud > 5G
#SBATCH --mem=8G              # node memory > 5G
#SBATCH --cpus-per-task=4      # indiquer le nombre de cœurs > 1
#SBATCH --cpus-per-task=4      # number cores > 1
#SBATCH --nodes=1              # ne pas modifier
#SBATCH --nodes=1              # do not change


module load abaqus/2021
module load abaqus/2021
Line 316: Line 307:
cp -f * $SLURM_SUBMIT_DIR
cp -f * $SLURM_SUBMIT_DIR
}}
}}
Pour écrire les données de redémarrage en incréments de N=12, entrez ce qui suit dans le fichier en entrée :
To write restart data for a total of 12 time increments specify in the input file:
*RESTART, WRITE, OVERLAY, FREQUENCY=12
Pour écrire les données de redémarrage pour un total de 12 incréments, entrez plutôt
  *RESTART, WRITE, OVERLAY, NUMBER INTERVAL=12, TIME MARKS=NO
  *RESTART, WRITE, OVERLAY, NUMBER INTERVAL=12, TIME MARKS=NO
Pour vérifier l'information complète sur le redémarrage ː
Check for completed restart information in relevant output files:
  egrep -i "step|restart" testet*.com testet*.msg testet*.sta
  egrep -i "step|restart" testet*.com testet*.msg testet*.sta
</tab>
</tab>
<tab name="script de redémarrage du répertoire temporaire">
<tab name="temporary directory restart script">
{{File
{{File
   |name="scriptet2.txt"
   |name="scriptet2.txt"
Line 329: Line 318:
   |contents=
   |contents=
#!/bin/bash
#!/bin/bash
#SBATCH --account=def-group    # indiquer le nom du compte
#SBATCH --account=def-group    # specify account
#SBATCH --time=00-06:00        # indiquer la limite de temps (jj-hh:mm)
#SBATCH --time=00-06:00        # days-hrs:mins
#SBATCH --mem=8G              # indiquer la mémoire du nœud > 5G
#SBATCH --mem=8G              # node memory > 5G
#SBATCH --cpus-per-task=4      # indiquer le nombre de cœurs  > 1
#SBATCH --cpus-per-task=4      # number cores > 1
#SBATCH --nodes=1              # ne pas modifier
#SBATCH --nodes=1              # do not change


module load abaqus/2021
module load abaqus/2021
Line 357: Line 346:
cp -f  * $SLURM_SUBMIT_DIR
cp -f  * $SLURM_SUBMIT_DIR
}}
}}
Le fichier en entrée pour le redémarrage doit contenir
No input file modifications are required to restart the analysis.
*HEADING
*RESTART, READ
</tab>
</tab>
</tabs>
</tabs>


=== Script pour nœuds multiples ===
=== Multiple node computing ===  
 
{{File
{{File
   |name="scriptep1-mpi.txt"
   |name="scriptep1-mpi.txt"
Line 370: Line 356:
   |contents=
   |contents=
!/bin/bash
!/bin/bash
#SBATCH --account=def-group    # indiquer le nom du compte
#SBATCH --account=def-group    # Specify account
#SBATCH --time=00-06:00        # indiquer la limite de temps (jj-hh:mm)
#SBATCH --time=00-06:00        # Specify days-hrs:mins
# SBATCH --nodes=2            # préférable de conserver ce commentaire
# SBATCH --nodes=2            # Best to leave commented
#SBATCH --ntasks=8            # indiquer le nombre de cœurs
#SBATCH --ntasks=8            # Specify number of cores
#SBATCH --mem-per-cpu=16G      # indiquer la mémoire par cœur
#SBATCH --mem-per-cpu=16G      # Specify memory per core
#SBATCH --cpus-per-task=1      # ne pas modifier
#SBATCH --cpus-per-task=1      # Do not change !


module load abaqus/2021
module load abaqus/2021
Line 398: Line 384:
}}
}}


== Capacité de mémoire pour un nœud ==
== Node memory ==
 
An estimate for the total slurm node memory (--mem=) required for a simulation to run fully in ram (without being virtualized to scratch disk) can be obtained by examining the Abaqus output <code>test.dat</code> file. For example, a simulation that requires a fairly large amount of memory might show:
Une estimation de la mémoire totale pour un nœud  (--mem=) requise par Slurm pour qu'une simulation soit effectuée uniquement en mémoire vive (sans être virtualisée sur le disque scratch) se trouve dans le fichier de sortie Abaqus <code>test.dat</code>. Dans l'exemple suivant, la simulation exige une assez grande quantité de mémoire.


<source lang="bash">
<source lang="bash">
Line 412: Line 397:
</source>
</source>


Pour exécuter interactivement une simulation et suivre la consommation de la mémoire,  
To run your simulation interactively and monitor the memory consumption, do the following:
<source lang="bash">
1) ssh into a cluster, obtain an allocation on a compute node (such as gra100), run abaqus ie)
1) ssh into a cluster, obtain an allocation on a compute node (such as gra100), run abaqus ie)
{{Commands
    salloc --time=0:30:00 --cpus-per-task=8 --mem=64G --account=def-piname
|salloc --time=0:30:00 --cpus-per-task=8 --mem=64G --account=def-piname
    module load abaqus/6.14.1  OR  module load abaqus/2020
|module load abaqus/6.14.1  OR  module load abaqus/2020
    unset SLURM_GTIDS
|unset SLURM_GTIDS
    abaqus job=test input=Sample.inp scratch=$SCRATCH cpus=8 mp_mode=threads interactive
|abaqus job=test input=Sample.inp scratch=$SCRATCH cpus=8 mp_mode=threads interactive
2) ssh into the cluster again, ssh into the compute node with the allocation, run top ie)
}}
    ssh gra100
2) ssh into the cluster again, ssh into the compute node with the allocation, run top ie)
    top -u $USER
{{Commands|ssh gra100
3) watch the VIRT and RES columns until steady peak memory values are observed
|top -u $USER}}
</source>
3) watch the VIRT and RES columns until steady peak memory values are observed
 
Pour respecter la valeur de MEMORY TO OPERATIONS REQUIRED MINIMIZE I/O (MRMIO), Abaqus doit disposer de la même quantité de mémoire physique non échangée (RES). Comme la RES est en général plus petite que la mémoire virtuelle (VIRT) par une quantité relativement constante pour une simulation donnée, il faut donc augmenter légèrement la mémoire du nœud demandée pour Slurm <code>-mem=</code>. Dans l'exemple ci-dessus, la surallocation a été codée en dur à la valeur conservative de 3072Mo sur la base de tests avec le solveur standard d'Abaqus. Pour éviter le long temps d'attente associé à beaucoup de MRMIO, il pourrait être avantageux de vérifier l'impact associé avec la réduction de la mémoire RES réservée à Abaqus à une valeur considérablement inférieure à celle de la MRMIO. Ceci peut se faire en diminuant la valeur de  <code>-mem=</code> qui à son tour va déterminer une valeur artificiellement basse pour <code>memory=</code> dans la dernière ligne du script pour Slurm. Si vous faites ceci, assurez-vous que la RES ne tombe pas sous MINIMUM MEMORY REQUIRED (MMR) puisqu'Abaqus fermera par manque de mémoire (OOM pour ''Out Of Memory''). Par exemple, si votre MRMIO est de 96Go, effectuez une série de courts tests avec <code>#SBATCH --mem=8G, 16G, 32G, 64G</code> jusqu'à ce que l'impact minimal sur la performance soit acceptable; notez que des valeurs plus petites feront en sorte qu'un espace scratch de plus en plus grand sera utilisé pour les fichiers temporaires.
 
= Mode graphique =
 
Abaqus/2020 peut être utilisé en mode interactif sur une grappe ou sur gra-vdi comme suit :
 
== Sur une grappe ==


# [[VNC/fr#Nœuds_de_calcul|Connectez-vous à un nœud de calcul (durée maximale 3 heures) avec TigerVNC]].
To completely satisfy the recommended "MEMORY TO OPERATIONS REQUIRED MINIMIZE I/O" (MRMIO) value, at least the same amount of non-swapped physical memory (RES) must be available to Abaqus. Since the RES will in general be less than the virtual memory (VIRT) by some relatively constant amount for a given simulation, it is necessary to slightly over-allocate the requested Slurm node memory <code>-mem=</code>. In the above sample Slurm script, this over-allocation has been hardcoded to a conservative value of 3072MB based on initial testing of the standard Abaqus solver.  To avoid long queue wait times associated with large values of MRMIO, it may be worth investigating the simulation performance impact associated with reducing the RES memory that is made available to Abaqus significantly below the MRMIO. This can be done by lowering the <code>-mem=</code> value which in turn will set an artificially low value of <code>memory=</code> in the Abaqus command (found in the last line of the slurm script).  In doing this one should be careful the RES does not dip below the MINIMUM MEMORY REQUIRED (MMR) otherwise Abaqus will exit due to Out of Memory (OOM).  As an example, if your MRMIO is 96GB try running a series of short test jobs with <code>#SBATCH --mem=8G, 16G, 32G, 64G</code> until an acceptable minimal performance impact is found, noting that smaller values will result in increasingly larger scratch space used by temporary files.
# Ouvrez une nouvelle fenêtre de terminal et entrez un des énoncés suivants&nbsp;:<br><code>module load StdEnv/2016 abaqus/6.14.1</code> ou <br><code>module load StdEnv/2016 abaqus/2020</code> ou <br><code>module load StdEnv/2020 abaqus/2021</code>
# <code>abaqus cae -mesa</code><br><br>


== Sur gra-vdi ==
= Graphical use =
Abaqus/2020 can be run interactively in graphical mode on a cluster or gra-vdi using VNC by following these steps:


# [[VNC/fr#Nœuds_VDI|Connectez-vous à un nœud VDI (durée maximale 24 heures) avec TigerVNC]].
== On a cluster ==
# Ouvrez une nouvelle fenêtre de terminal et entrez un des énoncés suivants&nbsp;:<br><code>module load StdEnv/2016 abaqus/6.14.1</code> ou <br><code>module load StdEnv/2016 abaqus/2020</code> ou <br><code>module load StdEnv/2020 abaqus/2021</code>
# Connect to a compute node (3hr salloc time limit) with [https://docs.computecanada.ca/wiki/VNC#Compute_Nodes TigerVNC]
# Open a new terminal window and enter one of the following:<br><code>module load StdEnv/2016 abaqus/6.14.1</code>, or,<br><code>module load StdEnv/2016 abaqus/2020</code>, or,<br><code>module load StdEnv/2020 abaqus/2021</code>
# <code>abaqus cae -mesa</code><br><br>
# <code>abaqus cae -mesa</code><br><br>


o <b>Vérifier la disponibilité de la licence</b>
== On gra-vdi ==
# Connect to gra-vdi (24hr abaqus runtime limit) with [https://docs.computecanada.ca/wiki/VNC#VDI_Nodes TigerVNC]
# Open a new terminal window and enter one of the following:<br><code>module load CcEnv StdEnv/2016 abaqus/6.14.1</code>, or,<br><code>module load CcEnv StdEnv/2016 abaqus/2020</code>, or,<br><code>module load CcEnv StdEnv/2020 abaqus/2021</code>
# <code>abaqus cae</code><br><br>


Il doit y avoir au moins une licence non utilisée pour que <code>abaqus cae</code> démarre, selon
o <b>Checking license availability</b>
There must be at least 1 license free (not in use) for <code>abaqus cae</code> to start according to:
  abaqus licensing lmstat -c $ABAQUSLM_LICENSE_FILE -a | grep "Users of cae"
  abaqus licensing lmstat -c $ABAQUSLM_LICENSE_FILE -a | grep "Users of cae"


La licence SHARCNET a deux licences gratuites et deux licences réservées. Si les quatre licences sont utilisées, le message d'erreur suivant sera affiché.
The SHARCNET license has 2 free and 2 reserved licenses. If all 4 are in use the following error message will occur:


<source lang="bash">
<source lang="bash">
Line 470: Line 451:
</source>
</source>


= Particularités selon le site d'utilisation =
= Site-specific use =
 
== SHARCNET license ==  
== Licence SHARCNET ==
SHARCNET provides a small but free license consisting of 2 cae and 35 execute tokens where usage limits are imposed 10 tokens/user and 15 tokens/group. For groups that have purchased dedicated tokens, the free token usage limits are added to their reservation. The free tokens are available on a first come first serve basis and mainly intended for testing and light usage before deciding whether or not to purchase dedicated tokens. The costs for dedicated tokens are approximately CAD$110 per compute token and CAD$400 per GUI token: submit a ticket to request an official quote. The license can be used by any Alliance researcher, but only on SHARCNET hardware. Groups that purchase dedicated tokens to run on the SHARCNET license server may likewise only use them on SHARCNET hardware including gra-vdi (for running Abaqus in full graphical mode) and Graham or Dusky clusters (for submitting compute batch jobs to the queue). Before you can use the license you must contact [[Technical support]] and request access. In your email 1) mention that it is for use on SHARCNET systems and 2) include a copy/paste of the following <code>License Agreement</code> statement with your full name and username entered in the indicated locations. Please note that every user must do this it cannot be done one time only for a group; this includes PIs who have purchased their own dedicated tokens.
 
SHARCNET offre une licence gratuite, mais qui n'a que 2 jetons <tt>cae</tt> et 35 jetons <tt>execute</tt>, avec une utilisation limitée à 10 jetons par utilisateur et 15 jetons par groupe. Dans le cas des groupes qui ont acheté des jetons dédiés, les limites d'utilisation des jetons gratuits sont ajoutées à leur réservation. Les jetons gratuits sont disponibles selon le principe du premier arrivé, premier servi et sont principalement destinés à des tests et à une utilisation légère pour vous permettre de décider d'acheter ou non des jetons dédiés. Les coûts des jetons dédiés sont d'environ 110̩$&nbsp;CA par jeton de calcul et de 400$&nbsp;CA par jeton d'interface; pour connaître le prix exact, écrivez au [[Technical support/fr|soutien technique]]. La licence peut être utilisée par les chercheuses et chercheurs de l'Alliance, mais uniquement sur du matériel SHARCNET. De même, les groupes qui achètent des jetons dédiés à exécuter sur le serveur de licences SHARCNET ne peuvent les utiliser que sur du matériel SHARCNET, y compris gra-vdi (pour exécuter Abaqus en mode graphique complet) et les grappes Graham ou Dusky (pour soumettre des travaux de traitement par lots à la file d'attente). Avant de pouvoir utiliser la licence, vous devez en demander l'accès au [[Technical support/fr|soutien technique]]. Dans votre courriel 1) mentionnez qu'il est destiné à être utilisé sur les systèmes SHARCNET et 2) copiez/collez la déclaration  <code>License Agreement</code> ci-dessous avec votre nom complet et votre nom d'utilisateur aux emplacements indiqués. Veuillez noter que chaque utilisateur doit remplir ce formulaire, c'est-à-dire qu'il ne peut pas être fourni une seule fois pour un groupe; ceci inclut les chercheuses et chercheurs principaux qui ont acheté leurs propres jetons dédiés.


<b>o  License agreement</b>
<b>o  License agreement</b>
<pre>----------------------------------------------------------------------------------
<pre>----------------------------------------------------------------------------------
Subject: Abaqus SHARCNET Academic License User Agreement
Subject: Abaqus SHARCNET Academic License User Agreement
Line 488: Line 466:
2) in affiliation with a Canadian degree-granting academic institution
2) in affiliation with a Canadian degree-granting academic institution
3) for education, institutional or instruction purposes and not for any commercial
3) for education, institutional or instruction purposes and not for any commercial
   or contract related purposes where results are not publishable
   or contract-related purposes where results are not publishable
4) for experimental, theoretical and/or digital research work, undertaken primarily
4) for experimental, theoretical and/or digital research work, undertaken primarily
   to acquire new knowledge of the underlying foundations of phenomena and observable
   to acquire new knowledge of the underlying foundations of phenomena and observable
Line 494: Line 472:
-----------------------------------------------------------------------------------</pre>
-----------------------------------------------------------------------------------</pre>


<b>o Configurer le fichier de licence</b>
<b>o Configure license file</b>
 
Configure your license file as follows, noting that it is only usable on SHARCNET systems: Graham, gra-vdi and Dusky.
Configurez votre fichier de licence comme suit (pour utilisation uniquement sur les systèmes SHARCNET Graham, gra-vdi et Dusky.).
 
<source lang="bash">
<source lang="bash">
[gra-login1:~] cat ~/.licenses/abaqus.lic
[gra-login1:~] cat ~/.licenses/abaqus.lic
Line 504: Line 480:
</source>
</source>


Si vos tâches se terminent anormalement et que le fichier de sortie de l'ordonnanceur contient le message d'erreur ''*** ABAQUS/eliT_CheckLicense rank 0 terminated by signal 11 (Segmentation fault)'', vérifiez si votre fichier  <code>abaqus.lic</code> contient  ''ABAQUSLM_LICENSE_FILE'' pour Abaqus/2020.  
If your Abaqus jobs fail with the error message [*** ABAQUS/eliT_CheckLicense rank 0 terminated by signal 11 (Segmentation fault)] in the slurm output file, verify if your <code>abaqus.lic</code> file contains ABAQUSLM_LICENSE_FILE to use abaqus/2020. If your Abaqus jobs fail with an error message starting [License server machine is down or not responding, etc.] in the output file verify your <code>abaqus.lic</code> file contains LM_LICENSE_FILE to use abaqus/6.14.1 as shown. The <code>abaqus.lic</code> file shown contains both so you should not see this problem.
Si le fichier de sortie contient ''License server machine is down or not responding etc.'',  vérifiez si le fichier <code>abaqus.lic</code> contient ''LM_LICENSE_FILE'' pour Abaqus/6.14.1, comme montré. Puisque le fichier <code>abaqus.lic</code> montré contient les deux énoncés, vous ne devriez pas avoir ce problème.
<b>o Query license server</b>
 
I) To check the SHARCNET license server for started and queued jobs by username, run:
<b>o Interroger le serveur de licences</b>
 
I) Pour connaître les tâches commencées et les tâches en attente sur le serveur de licence SHARCNET, par utilisateur, lancez
 
<source lang="bash">
<source lang="bash">
ssh graham.computecanada.ca
ssh graham.computecanada.ca
Line 517: Line 489:
abaqus licensing lmstat -c $LM_LICENSE_FILE -a | grep "Users\|start\|queued\|RESERVATIONs"
abaqus licensing lmstat -c $LM_LICENSE_FILE -a | grep "Users\|start\|queued\|RESERVATIONs"
</source>
</source>
 
II) To check the SHARCNET license server for reservations of products by purchasing groups, run:
II) Pour savoir si le serveur de licences SHARCNET a des réservations de produits par groupe d'acquisition, lancez
 
<source lang="bash">
<source lang="bash">
ssh graham.computecanada.ca
ssh graham.computecanada.ca
Line 526: Line 496:
abaqus licensing lmstat -c $LM_LICENSE_FILE -a | grep "Users\|RESERVATIONs"
abaqus licensing lmstat -c $LM_LICENSE_FILE -a | grep "Users\|RESERVATIONs"
</source>
</source>
 
III) To check the SHARCNET license server for license usage of the cae, standard and explicit products, run:
III) Pour savoir si le serveur de licences SHARCNET montre une utilisation de cae ou de produits standards et particuliers, lancez
 
<source lang="bash">
<source lang="bash">
ssh graham.computecanada.ca
ssh graham.computecanada.ca
Line 535: Line 503:
abaqus licensing lmstat -c $LM_LICENSE_FILE -a | grep "Users of" | grep "cae\|standard\|explicit"
abaqus licensing lmstat -c $LM_LICENSE_FILE -a | grep "Users of" | grep "cae\|standard\|explicit"
</source>
</source>
When the output of query I) above indicates that a job for a particular username is queued this means the job has entered the "R"unning state from the perspective of <code>squeue -j jobid</code> or <code>sacct -j jobid</code> and is therefore idle on a compute node waiting for a license.  This will have the same impact on your account priority as if the job were performing computations and consuming CPU time.  Eventually when sufficient licenses come available the queued job will start.  To demonstrate, the following shows the license server and queue output for the situation where a user submits two jobs, but only the first job acquires enough licenses to start:


Quand la sortie de la requête I) ci-dessus indique qu'une tâche pour un nom d'utilisateur particulier est mise en file d'attente (''queued''), cela signifie qu'elle est entrée dans l'état d'exécution (R pour ''running'') du point de vue de <code>squeue -j jobid</code> ou <code >sacct -j jobid</code> et est donc inactive sur un nœud de calcul en attente d'une licence. Cela aura le même impact sur la priorité de votre compte que si la tâche effectuait des calculs et consommait du temps CPU. Quand suffisamment de licences seront disponibles, la tâche en file d'attente sera lancée. En exemple, ce qui suit montre le serveur de licences et la file d'attente en sortie quand un utilisateur soumet deux tâches, mais quand seule la première tâche obtient suffisamment de licences pour démarrer&nbsp;:
[roberpj@dus241:~] sq
 
  [roberpj@dus241:~] sq
           JOBID    USER      ACCOUNT          NAME  ST  TIME_LEFT  NODES  CPUS  MIN_MEM  NODELIST (REASON)  
           JOBID    USER      ACCOUNT          NAME  ST  TIME_LEFT  NODES  CPUS  MIN_MEM  NODELIST (REASON)  
           29801  roberpj  def-roberpj  scriptep1.txt  R    2:59:18      1    12      8G  dus47 (None)  
           29801  roberpj  def-roberpj  scriptep1.txt  R    2:59:18      1    12      8G  dus47 (None)  
           29802  roberpj  def-roberpj  scriptsp1.txt  R    2:59:33      1    12      8G  dus28 (None)  
           29802  roberpj  def-roberpj  scriptsp1.txt  R    2:59:33      1    12      8G  dus28 (None)  


  [roberpj@dus241:~] abaqus licensing lmstat -c $LM_LICENSE_FILE -a | grep "Users\|start\|queued\|RESERVATIONs"
[roberpj@dus241:~] abaqus licensing lmstat -c $LM_LICENSE_FILE -a | grep "Users\|start\|queued\|RESERVATIONs"
   Users of abaqus:  (Total of 78 licenses issued;  Total of 71 licenses in use)
   Users of abaqus:  (Total of 78 licenses issued;  Total of 71 licenses in use)
       roberpj dus47 /dev/tty (v62.2) (license3.sharcnet.ca/27050 275), start Thu 8/27 5:45, 14 licenses
       roberpj dus47 /dev/tty (v62.2) (license3.sharcnet.ca/27050 275), start Thu 8/27 5:45, 14 licenses
       roberpj dus28 /dev/tty (v62.2) (license3.sharcnet.ca/27050 729) queued for 14 licenses
       roberpj dus28 /dev/tty (v62.2) (license3.sharcnet.ca/27050 729) queued for 14 licenses


<b>o Spécifier les ressources pour la tâche</b>
<b>o Specify job resources</b>
 
To ensure optimal usage of both your Abaqus tokens and our resources, it's important to carefully specify the required memory and ncpus in your Slurm script. The values can be determined by submitting a few short test jobs to the queue then checking their utilization. For <b>completed</b> jobs use <code>seff JobNumber</code> to show the total <i>Memory Utilized</i> and <i>Memory Efficiency</i>. If the <i>Memory Efficiency</i> is less than ~90%, decrease the value of the <code>#SBATCH --mem=</code> setting in your Slurm script accordingly. Notice that the <code>seff JobNumber</code> command also shows the total <i>CPU (time) Utilized</i> and <i>CPU Efficiency</i>. If the <i>CPU Efficiency</i> is less than ~90%, perform scaling tests to determine the optimal number of CPUs for optimal performance and then update the value of <code>#SBATCH --cpus-per-task=</code> in your Slurm script. For <b>running</b> jobs, use the <code>srun --jobid=29821580 --pty top -d 5 -u $USER</code> command to watch the %CPU, %MEM and RES for each Abaqus parent process on the compute node. The %CPU and %MEM columns display the percent usage relative to the total available on the node while the RES column shows the per process resident memory size (in human readable format for values over 1GB). Further information regarding how to [Running_jobs#Monitoring_jobs monitor jobs] is available on our documentation wiki
Pour garantir une utilisation optimale de vos jetons Abaqus et de nos ressources, il est important de bien spécifier la mémoire et le <code>ncpus</code> requis dans votre script Slurm. Les valeurs peuvent être déterminées en soumettant quelques courts tests à la file d'attente, puis en vérifiant leur utilisation. Pour les travaux terminés (<i>completed</i>), utilisez <code>seff JobNumber</code> pour afficher le total pour <i>Memory Utilized</i> et <i>Memory Efficiency</i>; si <i>Memory Efficiency</i> est inférieure à ~90 %, diminuez en conséquence la valeur du paramètre <code>#SBATCH --mem=</code> dans votre script. Notez que la commande <code>seff JobNumber</code> affiche aussi les totaux pour <i>CPU (time) Utilized</i> et ''CPU Efficiency</i>; si <i>CPU Efficiency'' est inférieure à ~90 %, effectuez des tests de mise à l'échelle pour déterminer le nombre optimal de CPU pour une performance optimale; ensuite, mettez à jour la valeur  <code>#SBATCH --cpus-per-task=</code> dans votre script. Pour les tâches en cours d'exécution (<i>running</i>), utilisez la commande <code>srun --jobid=29821580 --pty top -d 5 -u $USER</code> pour surveiller %CPU, %MEM et RES pour chaque processus parent d'Abaqus sur le nœud de calcul. Les colonnes <i>%CPU</i> et <i>%MEM</i> affichent le pourcentage d'utilisation par rapport au total disponible sur le nœud, tandis que la colonne <i>RES</i> affiche la taille de la mémoire résidente par processus (au format lisible par l'homme pour les valeurs supérieures à 1&nbsp;Go). Pour plus d'information, voir [[Running_jobs/fr#Suivi_des_tâches comment suivre une tâche]].
 
<b>o Correspondance cœur-jeton</b>


<b>o Core token mapping</b>
<pre>
<pre>
TOKENS 5  6  7  8  10  12  14  16  19  21  25  28  34  38
TOKENS 5  6  7  8  10  12  14  16  19  21  25  28  34  38
CORES  1  2  3  4  6  8  12  16  24  32  48  64  96 128
CORES  1  2  3  4  6  8  12  16  24  32  48  64  96 128
</pre>
</pre>
where TOKENS = floor[5 X CORES^0.422]


où TOKENS = floor[5 X CORES^0.422]
== Western license ==
The Western site license may only be used by Western researchers on hardware located at Western's campus.  Currently, the Dusky cluster is the only system that satisfies these conditions. Graham and gra-vdi are excluded since they are located on Waterloo's campus.  Contact the Western Abaqus license server administrator <jmilner@robarts.ca> to inquire about using the Western Abaqus license.  You will need to provide your username and possibly make arrangements to purchase tokens.  If you are granted access then you may proceed to configure your <code>abaqus.lic</code> file to point to the Western license server as follows:
<b>o Configure license file</b>


== Licence du site Western ==
Configure your license file as follows, noting that it is only usable on Dusky.
Cette licence peut uniquement être utilisée par les chercheuses et chercheurs de Western avec du matériel situé sur le campus de Western. Dusky est présentement la seule grappe qui réunit ces conditions. Graham et gra-vdi sont exclus puisqu'ils sont situés sur le campus de Waterloo. Pour savoir si vous pouvez utiliser cette licence, contactez l'administrateur du serveur de licences de Western <jmilner@robarts.ca>.  Vous devrez fournir votre nom d'utilisateur et possiblement acheter des jetons (''tokens''). Si l'accès vous est accordé, configurez votre fichier <code>abaqus.lic</code> pour qu'il pointe sur le serveur de licences de Western comme suit&nbsp;:
 
<b>o Configurer le fichier de licences</b>
 
Configurez votre fichier de licence comme suit (pour utilisation uniquement sur Dusky).


<source lang="bash">
<source lang="bash">
Line 573: Line 536:
prepend_path("ABAQUSLM_LICENSE_FILE","27000@license4.sharcnet.ca")
prepend_path("ABAQUSLM_LICENSE_FILE","27000@license4.sharcnet.ca")
</source>
</source>
Once configured, submit your job as described in the <i>Cluster job submission</i> section above.  If there are any problems submit a problem ticket to [[Technical support|technical support]].  Specify that you are using the Abaqus Western license on dusky and provide the failed job number along with a paste of any error messages as applicable.


Par la suite, soumettez votre tâche tel que décrit à la section <i>Soumettre une tâche sur une grappe</i> ci-dessus. Si un problème survient, écrivez au [[Technical support/fr|soutien technique]] en indiquant que vous utilisez la licence du site Western sur Dusky. Ajoutez le numéro de la tâche qui pose problème et copiez le ou les messages d'erreur s'il y a lieu.
= Online documentation =
 
The full Abaqus documentation (latest version) can be accessed on gra-vdi as shown in the following steps.
= Documentation en ligne=
 
Vous pouvez consulter la documentation pour la plus récente version sur gra-vdi comme suit :


Préparation de votre compte
Account preparation:
# [[VNC/fr#Nœuds_VDI|Connectez-vous à <b>gra-vdi.com</b> avec TigerVNC]].
# connect to <b>gra-vdi.computecanada.ca</b> with tigervnc as described in [VNC#VDI_nodes VDI nodes]
# Sur gra-vdi, ouvrez une fenêtre de terminal et entrez <code>firefox</code> (appuyez sur Entrée).
# open a terminal window on gra-vdi and type <code>firefox</code> (hit enter)
# Dans la barre d'adresse, entrez <code>about:config</code> (appuyez sur Entrée) -> cliquez sur le bouton <i>I accept the risk</i>.
# in the address bar type <code>about:config</code> (hit enter) -> click the <I>I accept the risk!</i> button
# Dans la barre de recherche, entrez <code>unique</code> et double-cliquez sur <code>privacy.file_unique_origin</code> pour changer <i>true'</i> en <i>false</i>.
# in the search bar type <code>unique</code> then double click <code>privacy.file_unique_origin</code> to change true to false  


Afficher la documentation
View documentation:
# [[VNC/fr#Nœuds_VDI|Connectez-vous à <b>gra-vdi.com</b> avec TigerVNC]].
# connect to <b>gra-vdi.computecanada.ca</b> with tigervnc as described in [VNC#VDI_nodes VDI nodes]
# Sur gra-vdi, ouvrez une fenêtre de terminal et entrez <code>firefox</code> (appuyez sur Entrée).
# open a terminal window on gra-vdi and type <code>firefox </code> (hit enter)
# Dans la barre de recherche, copiez-collez un des énoncés suivants&nbsp;: <br><code>file:///opt/sharcnet/abaqus/2020/doc/English/DSSIMULIA_Established.htm</code>, ou<br><code>file:///opt/sharcnet/abaqus/2021/doc/English/DSSIMULIA_Established.htm</code>
# in the search bar copy paste one of the following:<br><code>file:///opt/sharcnet/abaqus/2020/doc/English/DSSIMULIA_Established.htm</code>, or<br><code>file:///opt/sharcnet/abaqus/2021/doc/English/DSSIMULIA_Established.htm</code>
# Cliquez sur un sujet, par exemple <i>Abaqus -> Analysis -> Analysis Techniques -> Analysis Continuation Techniques</i>.
# find a topic by clicking for example: <i>Abaqus -> Analysis -> Analysis Techniques -> Analysis Continuation Techniques</i>

Revision as of 21:23, 24 February 2023

Other languages:

Abaqus FEA is a software suite for finite element analysis and computer-aided engineering.

Using your own license

Abaqus software modules are available on our clusters; however, you must provide your own license. To configure your account on a cluster, log in and create a file named $HOME/.licenses/abaqus.lic containing the following two lines which support versions 202X and 6.14.1 respectively. Next, replace port@server with the flexlm port number and server IP address (or fully qualified hostname) of your Abaqus license server.


File : abaqus.lic

prepend_path("ABAQUSLM_LICENSE_FILE","port@server")
prepend_path("LM_LICENSE_FILE","port@server")


If your license has not been set up for use on an Alliance cluster, some additional configuration changes by the Alliance system administrator and your local system administrator will need to be done. Such changes are necessary to ensure the flexlm and vendor TCP ports of your Abaqus server are reachable from all cluster compute nodes when jobs are run via the queue. So we may help you get this done, open a ticket with technical support. Please be sure to include the following three items:

  • flexlm port number
  • static vendor port number
  • IP address of your Abaqus license server.

You will then be sent a list of cluster IP addresses so that your administrator can open the local server firewall to allow connections from the cluster on both ports. Please note that a special license agreement must generally be negotiated and signed by SIMULIA and your institution before a local license may be used remotely on Alliance hardware.

Cluster job submission

Below are prototype Slurm scripts for submitting thread and mpi-based parallel simulations to single or multiple compute nodes. Most users will find it sufficient to use one of the project directory scripts provided in the Single node computing sections. The optional memory= argument found in the last line of the scripts is intended for larger memory or problematic jobs where 3072MB offset value may require tuning. A listing of all Abaqus command line arguments can be obtained by loading an Abaqus module and running: abaqus -help | less.

Single node jobs that run less than one day should find the project directory script located in the first tab sufficient. However, single node jobs that run for more than a day should use one of the restart scripts. Jobs that create large restart files will benefit by writing to local disk through the use of the SLURM_TMPDIR environment variable utilized in the temporary directory scripts provided in the two rightmost tabs of the single node standard and explicit analysis sections. The restart scripts shown here will continue jobs that have been terminated early for some reason. Such job failures can occur if a job reaches its maximum requested runtime before completing and is killed by the queue or if the compute node the job was running on crashed due to an unexpected hardware failure. Other restart types are possible by further tailoring of the input file (not shown here) to continue a job with additional steps or change the analysis (see the documentation for version specific details).

Jobs that require large memory or larger compute resources (beyond that which a single compute node can provide) should use the mpi scripts in the multiple node sections below to distribute computing over arbitrary node ranges determined automatically by the scheduler. Short scaling test jobs should be run to determine wall-clock times (and memory requirements) as a function of the number of cores (2, 4, 8, etc.) to determine the optimal number before running any long jobs.

Standard analysis

Abaqus solvers support thread-based and mpi-based parallelization. Scripts for each type are provided below for running Standard Analysis type jobs on Single or Multiple nodes respectively. Scripts to perform multiple node job restarts are not currently provided.

Single node computing

File : "scriptsp1.txt"

#!/bin/bash
#SBATCH --account=def-group    # Specify account
#SBATCH --time=00-06:00        # Specify days-hrs:mins
#SBATCH --cpus-per-task=4      # Specify number of cores
#SBATCH --mem=8G               # Specify total memory > 5G
#SBATCH --nodes=1              # Do not change !

module load StdEnv/2020        # Latest version
module load abaqus/2021        # Latest version

#module load StdEnv/2016       # Uncomment to use
#module load abaqus/2020       # Uncomment to use

unset SLURM_GTIDS
export MPI_IC_ORDER='tcp'
echo "LM_LICENSE_FILE=$LM_LICENSE_FILE"
echo "ABAQUSLM_LICENSE_FILE=$ABAQUSLM_LICENSE_FILE"

rm -f testsp1* testsp2*
abaqus job=testsp1 input=mystd-sim.inp \
   scratch=$SCRATCH cpus=$SLURM_CPUS_ON_NODE interactive \
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"


To write restart data every N=12 time increments specify in the input file:

*RESTART, WRITE, OVERLAY, FREQUENCY=12

To write restart data for a total of 12 time increments specify instead:

*RESTART, WRITE, OVERLAY, NUMBER INTERVAL=12, TIME MARKS=NO

To check for completed restart information do:

egrep -i "step|start" testsp*.com testsp*.msg testsp*.sta

Some simulations may benefit by adding the following to the Abaqus command at the bottom of the script:

order_parallel=OFF
File : "scriptsp2.txt"

#!/bin/bash
#SBATCH --account=def-group    # Specify account
#SBATCH --time=00-06:00        # Specify days-hrs:mins
#SBATCH --cpus-per-task=4      # Specify number of cores
#SBATCH --mem=8G               # Specify total memory > 5G
#SBATCH --nodes=1              # Do not change !

module load abaqus/2021
unset SLURM_GTIDS
export MPI_IC_ORDER='tcp'
echo "LM_LICENSE_FILE=$LM_LICENSE_FILE"
echo "ABAQUSLM_LICENSE_FILE=$ABAQUSLM_LICENSE_FILE"

rm -f testsp2* testsp1.lck
abaqus job=testsp2 oldjob=testsp1 input=mystd-sim-restart.inp \
   scratch=$SCRATCH cpus=$SLURM_CPUS_ON_NODE interactive \
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"


The restart input file should contain:

*HEADING
*RESTART, READ
File : "scriptst1.txt"

#!/bin/bash
#SBATCH --account=def-group    # Specify account
#SBATCH --time=00-06:00        # Specify days-hrs:mins
#SBATCH --cpus-per-task=4      # Specify number of cores
#SBATCH --mem=8G               # Specify total memory > 5G
#SBATCH --nodes=1              # Do not change !

module load abaqus/2021

unset SLURM_GTIDS
export MPI_IC_ORDER='tcp'
echo "LM_LICENSE_FILE=$LM_LICENSE_FILE"
echo "ABAQUSLM_LICENSE_FILE=$ABAQUSLM_LICENSE_FILE"
echo "SLURM_SUBMIT_DIR =" $SLURM_SUBMIT_DIR
echo "SLURM_TMPDIR = " $SLURM_TMPDIR

rm -f testst1* testst2*
cd $SLURM_TMPDIR
while sleep 6h; do
   cp -f * $SLURM_SUBMIT_DIR 2>/dev/null
done &
WPID=$!
abaqus job=testst1 input=$SLURM_SUBMIT_DIR/mystd-sim.inp \
   scratch=$SCRATCH cpus=$SLURM_CPUS_ON_NODE interactive \
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"
{ kill $WPID && wait $WPID; } 2>/dev/null
cp -f * $SLURM_SUBMIT_DIR


To write restart data every N=12 time increments specify in the input file:

*RESTART, WRITE, OVERLAY, FREQUENCY=12

To write restart data for a total of 12 time increments specify instead:

*RESTART, WRITE, OVERLAY, NUMBER INTERVAL=12, TIME MARKS=NO

To check the completed restart information do:

egrep -i "step|start" testst*.com testst*.msg testst*.sta
File : "scriptst2.txt"

#!/bin/bash
#SBATCH --account=def-group    # Specify account
#SBATCH --time=00-06:00        # Specify days-hrs:mins
#SBATCH --cpus-per-task=4      # Specify number of cores
#SBATCH --mem=8G               # Specify total memory > 5G
#SBATCH --nodes=1              # Do not change !

module load abaqus/2021

unset SLURM_GTIDS
export MPI_IC_ORDER='tcp'
echo "LM_LICENSE_FILE=$LM_LICENSE_FILE"
echo "ABAQUSLM_LICENSE_FILE=$ABAQUSLM_LICENSE_FILE"
echo "SLURM_SUBMIT_DIR =" $SLURM_SUBMIT_DIR
echo "SLURM_TMPDIR = " $SLURM_TMPDIR

rm -f testst2* testst1.lck
cp testst1* $SLURM_TMPDIR
cd $SLURM_TMPDIR
while sleep 3h; do
   cp -f testst2* $SLURM_SUBMIT_DIR 2>/dev/null
done &
WHILEPID=$!
abaqus job=testst2 oldjob=testst1 input=$SLURM_SUBMIT_DIR/mystd-sim-restart.inp \
   scratch=$SCRATCH cpus=$SLURM_CPUS_ON_NODE interactive \
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"
{ kill $WPID && wait $WPID; } 2>/dev/null
cp -f testst2* $SLURM_SUBMIT_DIR


The restart input file should contain:

*HEADING
*RESTART, READ

Multiple node computing

Users with large memory or compute needs (and correspondingly large licenses) can use the following script to perform mpi-based computing over an arbitrary range of nodes ideally left to the scheduler to automatically determine. A companion template script to perform restart multi-node jobs is not currently provided due to additional limitations when they can be used.


File : "scriptsp1-mpi.txt"

!/bin/bash
#SBATCH --account=def-group    # Specify account
#SBATCH --time=00-06:00        # Specify days-hrs:mins
# SBATCH --nodes=2             # Best to leave commented
#SBATCH --ntasks=8             # Specify number of cores
#SBATCH --mem-per-cpu=16G      # Specify memory per core
#SBATCH --cpus-per-task=1      # Do not change !

module load abaqus/2021

unset SLURM_GTIDS
export MPI_IC_ORDER='tcp'
echo "LM_LICENSE_FILE=$LM_LICENSE_FILE"
echo "ABAQUSLM_LICENSE_FILE=$ABAQUSLM_LICENSE_FILE"

rm -f testsp1-mpi*

unset hostlist
nodes="$(slurm_hl2hl.py --format MPIHOSTLIST | xargs)"
for i in `echo "$nodes" | xargs -n1 | uniq`; do hostlist=${hostlist}$(echo "['${i}',$(echo "$nodes" | xargs -n1 | grep $i | wc -l)],"); done
hostlist="$(echo "$hostlist" | sed 's/,$//g')"
mphostlist="mp_host_list=[$(echo "$hostlist")]"
export $mphostlist
echo "$mphostlist" > abaqus_v6.env

abaqus job=testsp1-mpi input=mystd-sim.inp \
  scratch=$SCRATCH cpus=$SLURM_NTASKS interactive mp_mode=mpi


Explicit analysis

Abaqus solvers support thread-based and mpi-based parallelization. Scripts for each type are provided below for running explicit analysis type jobs on single or multiple nodes respectively. Template scripts to perform multi-node job restarts are not currently provided pending further testing.

Single node computing

File : "scriptep1.txt"

#!/bin/bash
#SBATCH --account=def-group    # specify account
#SBATCH --time=00-06:00        # days-hrs:mins
#SBATCH --mem=8G               # node memory > 5G
#SBATCH --cpus-per-task=4      # number cores > 1
#SBATCH --nodes=1              # do not change

module load abaqus/2021

unset SLURM_GTIDS
export MPI_IC_ORDER='tcp'
echo "LM_LICENSE_FILE=$LM_LICENSE_FILE"
echo "ABAQUSLM_LICENSE_FILE=$ABAQUSLM_LICENSE_FILE"

rm -f testep1* testep2*
abaqus job=testep1 input=myexp-sim.inp \
   scratch=$SCRATCH cpus=$SLURM_CPUS_ON_NODE interactive \
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"


To write restart data for a total of 12 time increments specify in the input file:

*RESTART, WRITE, OVERLAY, NUMBER INTERVAL=12, TIME MARKS=NO

Check for completed restart information in relevant output files:

egrep -i "step|restart" testep*.com testep*.msg testep*.sta
File : "scriptep2.txt"

#!/bin/bash
#SBATCH --account=def-group    # specify account
#SBATCH --time=00-06:00        # days-hrs:mins
#SBATCH --mem=8G               # node memory > 5G
#SBATCH --cpus-per-task=4      # number cores > 1
#SBATCH --nodes=1              # do not change

module load abaqus/2021

unset SLURM_GTIDS
export MPI_IC_ORDER='tcp'
echo "LM_LICENSE_FILE=$LM_LICENSE_FILE"
echo "ABAQUSLM_LICENSE_FILE=$ABAQUSLM_LICENSE_FILE"

rm -f testep2* testep1.lck
for f in testep1*; do [[ -f ${f} ]] && cp -a "$f" "testep2${f#testep1}"; done
abaqus job=testep2 input=myexp-sim.inp recover \
   scratch=$SCRATCH cpus=$SLURM_CPUS_ON_NODE interactive \
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"


No input file modifications are required to restart the analysis.

File : "scriptet1.txt"

#!/bin/bash
#SBATCH --account=def-group    # specify account
#SBATCH --time=00-06:00        # days-hrs:mins
#SBATCH --mem=8G               # node memory > 5G
#SBATCH --cpus-per-task=4      # number cores > 1
#SBATCH --nodes=1              # do not change

module load abaqus/2021

unset SLURM_GTIDS
export MPI_IC_ORDER='tcp'
echo "LM_LICENSE_FILE=$LM_LICENSE_FILE"
echo "ABAQUSLM_LICENSE_FILE=$ABAQUSLM_LICENSE_FILE"
echo "SLURM_SUBMIT_DIR =" $SLURM_SUBMIT_DIR
echo "SLURM_TMPDIR = " $SLURM_TMPDIR

rm -f testet1* testet2*
cd $SLURM_TMPDIR
while sleep 6h; do
   cp -f * $SLURM_SUBMIT_DIR 2>/dev/null
done &
WPID=$!
abaqus job=testet1 input=$SLURM_SUBMIT_DIR/myexp-sim.inp \
   scratch=$SCRATCH cpus=$SLURM_CPUS_ON_NODE interactive \
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"
{ kill $WPID && wait $WPID; } 2>/dev/null
cp -f * $SLURM_SUBMIT_DIR


To write restart data for a total of 12 time increments specify in the input file:

*RESTART, WRITE, OVERLAY, NUMBER INTERVAL=12, TIME MARKS=NO

Check for completed restart information in relevant output files:

egrep -i "step|restart" testet*.com testet*.msg testet*.sta
File : "scriptet2.txt"

#!/bin/bash
#SBATCH --account=def-group    # specify account
#SBATCH --time=00-06:00        # days-hrs:mins
#SBATCH --mem=8G               # node memory > 5G
#SBATCH --cpus-per-task=4      # number cores > 1
#SBATCH --nodes=1              # do not change

module load abaqus/2021

unset SLURM_GTIDS
export MPI_IC_ORDER='tcp'
echo "LM_LICENSE_FILE=$LM_LICENSE_FILE"
echo "ABAQUSLM_LICENSE_FILE=$ABAQUSLM_LICENSE_FILE"
echo "SLURM_SUBMIT_DIR =" $SLURM_SUBMIT_DIR
echo "SLURM_TMPDIR = " $SLURM_TMPDIR

rm -f testet2* testet1.lck
for f in testet1*; do cp -a "$f" $SLURM_TMPDIR/"testet2${f#testet1}"; done
cd $SLURM_TMPDIR
while sleep 3h; do
   cp -f * $SLURM_SUBMIT_DIR 2>/dev/null
done &
WPID=$!
abaqus job=testet2 input=$SLURM_SUBMIT_DIR/myexp-sim.inp recover \
   scratch=$SCRATCH cpus=$SLURM_CPUS_ON_NODE interactive \
   mp_mode=threads memory="$((${SLURM_MEM_PER_NODE}-3072))MB"
{ kill $WPID && wait $WPID; } 2>/dev/null
cp -f  * $SLURM_SUBMIT_DIR


No input file modifications are required to restart the analysis.

Multiple node computing

File : "scriptep1-mpi.txt"

!/bin/bash
#SBATCH --account=def-group    # Specify account
#SBATCH --time=00-06:00        # Specify days-hrs:mins
# SBATCH --nodes=2             # Best to leave commented
#SBATCH --ntasks=8             # Specify number of cores
#SBATCH --mem-per-cpu=16G      # Specify memory per core
#SBATCH --cpus-per-task=1      # Do not change !

module load abaqus/2021

unset SLURM_GTIDS
export MPI_IC_ORDER='tcp'
echo "LM_LICENSE_FILE=$LM_LICENSE_FILE"
echo "ABAQUSLM_LICENSE_FILE=$ABAQUSLM_LICENSE_FILE"

rm -f testep1-mpi*

unset hostlist
nodes="$(slurm_hl2hl.py --format MPIHOSTLIST | xargs)"
for i in `echo "$nodes" | xargs -n1 | uniq`; do hostlist=${hostlist}$(echo "['${i}',$(echo "$nodes" | xargs -n1 | grep $i | wc -l)],"); done
hostlist="$(echo "$hostlist" | sed 's/,$//g')"
mphostlist="mp_host_list=[$(echo "$hostlist")]"
export $mphostlist
echo "$mphostlist" > abaqus_v6.env

abaqus job=testep1-mpi input=myexp-sim.inp \
  scratch=$SCRATCH cpus=$SLURM_NTASKS interactive mp_mode=mpi


Node memory

An estimate for the total slurm node memory (--mem=) required for a simulation to run fully in ram (without being virtualized to scratch disk) can be obtained by examining the Abaqus output test.dat file. For example, a simulation that requires a fairly large amount of memory might show:

                   M E M O R Y   E S T I M A T E
  
 PROCESS      FLOATING PT       MINIMUM MEMORY        MEMORY TO
              OPERATIONS           REQUIRED          MINIMIZE I/O
             PER ITERATION           (MB)               (MB)
  
     1          1.89E+14             3612              96345

To run your simulation interactively and monitor the memory consumption, do the following: 1) ssh into a cluster, obtain an allocation on a compute node (such as gra100), run abaqus ie)

[name@server ~]$ module load abaqus/6.14.1  OR  module load abaqus/2020
[name@server ~]$ unset SLURM_GTIDS

2) ssh into the cluster again, ssh into the compute node with the allocation, run top ie)

[name@server ~]$ ssh gra100
[name@server ~]$ top -u $USER

3) watch the VIRT and RES columns until steady peak memory values are observed

To completely satisfy the recommended "MEMORY TO OPERATIONS REQUIRED MINIMIZE I/O" (MRMIO) value, at least the same amount of non-swapped physical memory (RES) must be available to Abaqus. Since the RES will in general be less than the virtual memory (VIRT) by some relatively constant amount for a given simulation, it is necessary to slightly over-allocate the requested Slurm node memory -mem=. In the above sample Slurm script, this over-allocation has been hardcoded to a conservative value of 3072MB based on initial testing of the standard Abaqus solver. To avoid long queue wait times associated with large values of MRMIO, it may be worth investigating the simulation performance impact associated with reducing the RES memory that is made available to Abaqus significantly below the MRMIO. This can be done by lowering the -mem= value which in turn will set an artificially low value of memory= in the Abaqus command (found in the last line of the slurm script). In doing this one should be careful the RES does not dip below the MINIMUM MEMORY REQUIRED (MMR) otherwise Abaqus will exit due to Out of Memory (OOM). As an example, if your MRMIO is 96GB try running a series of short test jobs with #SBATCH --mem=8G, 16G, 32G, 64G until an acceptable minimal performance impact is found, noting that smaller values will result in increasingly larger scratch space used by temporary files.

Graphical use

Abaqus/2020 can be run interactively in graphical mode on a cluster or gra-vdi using VNC by following these steps:

On a cluster

  1. Connect to a compute node (3hr salloc time limit) with TigerVNC
  2. Open a new terminal window and enter one of the following:
    module load StdEnv/2016 abaqus/6.14.1, or,
    module load StdEnv/2016 abaqus/2020, or,
    module load StdEnv/2020 abaqus/2021
  3. abaqus cae -mesa

On gra-vdi

  1. Connect to gra-vdi (24hr abaqus runtime limit) with TigerVNC
  2. Open a new terminal window and enter one of the following:
    module load CcEnv StdEnv/2016 abaqus/6.14.1, or,
    module load CcEnv StdEnv/2016 abaqus/2020, or,
    module load CcEnv StdEnv/2020 abaqus/2021
  3. abaqus cae

o Checking license availability There must be at least 1 license free (not in use) for abaqus cae to start according to:

abaqus licensing lmstat -c $ABAQUSLM_LICENSE_FILE -a | grep "Users of cae"

The SHARCNET license has 2 free and 2 reserved licenses. If all 4 are in use the following error message will occur:

[gra-vdi3:~] abaqus licensing lmstat -c $ABAQUSLM_LICENSE_FILE -a | grep "Users of cae"
Users of cae:  (Total of 4 licenses issued;  Total of 4 licenses in use)

[gra-vdi3:~] abaqus cae
ABAQUSLM_LICENSE_FILE=27050@license3.sharcnet.ca
/opt/sharcnet/abaqus/2020/Commands/abaqus cae
No socket connection to license server manager.
Feature:       cae
License path:  27050@license3.sharcnet.ca:
FLEXnet Licensing error:-7,96
For further information, refer to the FLEXnet Licensing documentation,
or contact your local Abaqus representative.
Number of requested licenses: 1
Number of total licenses:     4
Number of licenses in use:    2
Number of available licenses: 2
Abaqus Error: Abaqus/CAE Kernel exited with an error.

Site-specific use

SHARCNET license

SHARCNET provides a small but free license consisting of 2 cae and 35 execute tokens where usage limits are imposed 10 tokens/user and 15 tokens/group. For groups that have purchased dedicated tokens, the free token usage limits are added to their reservation. The free tokens are available on a first come first serve basis and mainly intended for testing and light usage before deciding whether or not to purchase dedicated tokens. The costs for dedicated tokens are approximately CAD$110 per compute token and CAD$400 per GUI token: submit a ticket to request an official quote. The license can be used by any Alliance researcher, but only on SHARCNET hardware. Groups that purchase dedicated tokens to run on the SHARCNET license server may likewise only use them on SHARCNET hardware including gra-vdi (for running Abaqus in full graphical mode) and Graham or Dusky clusters (for submitting compute batch jobs to the queue). Before you can use the license you must contact Technical support and request access. In your email 1) mention that it is for use on SHARCNET systems and 2) include a copy/paste of the following License Agreement statement with your full name and username entered in the indicated locations. Please note that every user must do this it cannot be done one time only for a group; this includes PIs who have purchased their own dedicated tokens.

o License agreement

----------------------------------------------------------------------------------
Subject: Abaqus SHARCNET Academic License User Agreement

This email is to confirm that i "_____________" with username "___________" will
only use “SIMULIA Academic Software” with tokens from the SHARCNET license server
for the following purposes:

1) on SHARCNET hardware where the software is already installed
2) in affiliation with a Canadian degree-granting academic institution
3) for education, institutional or instruction purposes and not for any commercial
   or contract-related purposes where results are not publishable
4) for experimental, theoretical and/or digital research work, undertaken primarily
   to acquire new knowledge of the underlying foundations of phenomena and observable
   facts, up to the point of proof-of-concept in a laboratory    
-----------------------------------------------------------------------------------

o Configure license file Configure your license file as follows, noting that it is only usable on SHARCNET systems: Graham, gra-vdi and Dusky.

[gra-login1:~] cat ~/.licenses/abaqus.lic
prepend_path("LM_LICENSE_FILE","27050@license3.sharcnet.ca")
prepend_path("ABAQUSLM_LICENSE_FILE","27050@license3.sharcnet.ca")

If your Abaqus jobs fail with the error message [*** ABAQUS/eliT_CheckLicense rank 0 terminated by signal 11 (Segmentation fault)] in the slurm output file, verify if your abaqus.lic file contains ABAQUSLM_LICENSE_FILE to use abaqus/2020. If your Abaqus jobs fail with an error message starting [License server machine is down or not responding, etc.] in the output file verify your abaqus.lic file contains LM_LICENSE_FILE to use abaqus/6.14.1 as shown. The abaqus.lic file shown contains both so you should not see this problem. o Query license server I) To check the SHARCNET license server for started and queued jobs by username, run:

ssh graham.computecanada.ca
module load StdEnv/2016.4
module load abaqus
abaqus licensing lmstat -c $LM_LICENSE_FILE -a | grep "Users\|start\|queued\|RESERVATIONs"

II) To check the SHARCNET license server for reservations of products by purchasing groups, run:

ssh graham.computecanada.ca
module load StdEnv/2016.4
module load abaqus
abaqus licensing lmstat -c $LM_LICENSE_FILE -a | grep "Users\|RESERVATIONs"

III) To check the SHARCNET license server for license usage of the cae, standard and explicit products, run:

ssh graham.computecanada.ca
module load StdEnv/2016.4
module load abaqus
abaqus licensing lmstat -c $LM_LICENSE_FILE -a | grep "Users of" | grep "cae\|standard\|explicit"

When the output of query I) above indicates that a job for a particular username is queued this means the job has entered the "R"unning state from the perspective of squeue -j jobid or sacct -j jobid and is therefore idle on a compute node waiting for a license. This will have the same impact on your account priority as if the job were performing computations and consuming CPU time. Eventually when sufficient licenses come available the queued job will start. To demonstrate, the following shows the license server and queue output for the situation where a user submits two jobs, but only the first job acquires enough licenses to start:

[roberpj@dus241:~] sq
         JOBID     USER      ACCOUNT           NAME  ST  TIME_LEFT  NODES  CPUS  MIN_MEM  NODELIST (REASON) 
         29801  roberpj  def-roberpj  scriptep1.txt   R    2:59:18      1    12       8G   dus47 (None) 
         29802  roberpj  def-roberpj  scriptsp1.txt   R    2:59:33      1    12       8G   dus28 (None) 
[roberpj@dus241:~] abaqus licensing lmstat -c $LM_LICENSE_FILE -a | grep "Users\|start\|queued\|RESERVATIONs"
 Users of abaqus:  (Total of 78 licenses issued;  Total of 71 licenses in use)
     roberpj dus47 /dev/tty (v62.2) (license3.sharcnet.ca/27050 275), start Thu 8/27 5:45, 14 licenses
     roberpj dus28 /dev/tty (v62.2) (license3.sharcnet.ca/27050 729) queued for 14 licenses

o Specify job resources To ensure optimal usage of both your Abaqus tokens and our resources, it's important to carefully specify the required memory and ncpus in your Slurm script. The values can be determined by submitting a few short test jobs to the queue then checking their utilization. For completed jobs use seff JobNumber to show the total Memory Utilized and Memory Efficiency. If the Memory Efficiency is less than ~90%, decrease the value of the #SBATCH --mem= setting in your Slurm script accordingly. Notice that the seff JobNumber command also shows the total CPU (time) Utilized and CPU Efficiency. If the CPU Efficiency is less than ~90%, perform scaling tests to determine the optimal number of CPUs for optimal performance and then update the value of #SBATCH --cpus-per-task= in your Slurm script. For running jobs, use the srun --jobid=29821580 --pty top -d 5 -u $USER command to watch the %CPU, %MEM and RES for each Abaqus parent process on the compute node. The %CPU and %MEM columns display the percent usage relative to the total available on the node while the RES column shows the per process resident memory size (in human readable format for values over 1GB). Further information regarding how to [Running_jobs#Monitoring_jobs monitor jobs] is available on our documentation wiki

o Core token mapping

TOKENS 5  6  7  8  10  12  14  16  19  21  25  28  34  38
CORES  1  2  3  4   6   8  12  16  24  32  48  64  96 128

where TOKENS = floor[5 X CORES^0.422]

Western license

The Western site license may only be used by Western researchers on hardware located at Western's campus. Currently, the Dusky cluster is the only system that satisfies these conditions. Graham and gra-vdi are excluded since they are located on Waterloo's campus. Contact the Western Abaqus license server administrator <jmilner@robarts.ca> to inquire about using the Western Abaqus license. You will need to provide your username and possibly make arrangements to purchase tokens. If you are granted access then you may proceed to configure your abaqus.lic file to point to the Western license server as follows: o Configure license file

Configure your license file as follows, noting that it is only usable on Dusky.

[dus241:~] cat .licenses/abaqus.lic
prepend_path("LM_LICENSE_FILE","27000@license4.sharcnet.ca")
prepend_path("ABAQUSLM_LICENSE_FILE","27000@license4.sharcnet.ca")

Once configured, submit your job as described in the Cluster job submission section above. If there are any problems submit a problem ticket to technical support. Specify that you are using the Abaqus Western license on dusky and provide the failed job number along with a paste of any error messages as applicable.

Online documentation

The full Abaqus documentation (latest version) can be accessed on gra-vdi as shown in the following steps.

Account preparation:

  1. connect to gra-vdi.computecanada.ca with tigervnc as described in [VNC#VDI_nodes VDI nodes]
  2. open a terminal window on gra-vdi and type firefox (hit enter)
  3. in the address bar type about:config (hit enter) -> click the I accept the risk! button
  4. in the search bar type unique then double click privacy.file_unique_origin to change true to false

View documentation:

  1. connect to gra-vdi.computecanada.ca with tigervnc as described in [VNC#VDI_nodes VDI nodes]
  2. open a terminal window on gra-vdi and type firefox (hit enter)
  3. in the search bar copy paste one of the following:
    file:///opt/sharcnet/abaqus/2020/doc/English/DSSIMULIA_Established.htm, or
    file:///opt/sharcnet/abaqus/2021/doc/English/DSSIMULIA_Established.htm
  4. find a topic by clicking for example: Abaqus -> Analysis -> Analysis Techniques -> Analysis Continuation Techniques