LS-DYNA
Introduction
Le logiciel LS-DYNA est disponible sur toutes nos grappes. Il a plusieurs applications en multiphysique, en mécanique des fluides, en transfert thermique et en dynamique des fluides. Les analyses peuvent s'effectuer sur des phénomènes distincts ou sur des simulations de phénomènes multiples comme le stress thermique ou l'interaction fluide-structure. LSTC a été acquis par ANSYS et LS-DYNA pourrait éventuellement être offert uniquement via le module ANSYS. Pour le moment, nous recommandons son utilisation tel que décrit ici.
Licence
Nous fournissons l'hébergement pour LS-DYNA; le logiciel est installé sur nos grappes, mais nous n'avons pas une licence générique fournissant l'accès à tous. Cependant, plusieurs établissements, facultés et départements possèdent des licences qui peuvent être utilisées sur nos grappes. Il est aussi possible d'acheter une licence en contactant la compagnie directement; vous pourrez l'utiliser sur nos grappes via un serveur de licence Sharcnet.
Initial Setup and Testing
If your (existing or new) license server has never been used on the cluster where you plan to run jobs, firewall changes will first need to be done on both the cluster side and server side. This will typically require involvement from both our technical team and the technical people managing your license software. To arrange this, send an email containing the service port and IP address of your floating license server to Technical support. To check if your license file is working run the following commands:
module load ls-dyna
ls-dyna_s or ls-dyna_d
where its not necessary to specify any input file or arguments to run this test. The output header should contain a (non-empty) value for Licensed to:
with the exception of CMC license servers. Press ^C to quit the program and return to the command line.
Configuration de votre fichier de licence
Le module LS-DYNA cherche l'information en rapport avec la licence à différents endroits, dont votre répertoire /home. Si vous avez votre propre serveur de licence, vous pouvez y accéder avec le fichier suivant :
#LICENSE_TYPE: network
#LICENSE_SERVER:<port>@<server>
Enregistrez ce fichier dans le répertoire $HOME/.licenses/ sur chacune des grappes. Les pare-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 au soutien technique. Pour vérifier si votre fichier de licence est correct, lancez les commandes
module load ls-dyna
ls-dyna_s
Si votre fichier a été localisé, le champ Licensed to:
contiendra une valeur. Cliquez ensuite sur ^c pour quitter.
In 2019 Ansys purchased the Livermore Software Technology Corporation (LSTC), the developer of LS-DYNA. LS-DYNA licenses issued by Ansys since that time use ANSYS License servers. Licenses issued by LSTC may still use an LSTC license server. Also, some of our users obtain an LS-DYNA license through CMC Microsystems. This section explains how to configure your account or job script for each of these cases.
Licence LSTC
If you have a license issued to run on a LSTC License Server, there are two options to specify it:
Option 1) Specify your license server by creating a small file named ls-dyna.lic with the following contents:
#LICENSE_TYPE: network
#LICENSE_SERVER:<port>@<server>
where <port> is an integer number and <server> is the hostname of your LSTC License server. Put this file in directory $HOME/.licenses/ on each cluster where you plan to submit jobs. The values in the file are picked up by lsdyna when it runs. This occurs because the alliance module system sets LSTC_FILE=/home/$USER.licenses/ls-dyna.lic
whenever you load ls-dyna
or ls-dyna-mpi
modules. This approach is recommended for users with a license hosted on a LSTC License Server since (compared to the next option) the identical settings will automatically be used by all jobs you submit on the cluster (without the need to specify them in each individual slurm script or setting them in your environment).
Option 2) Specify your license server by setting the following two environment variables in your slurm scripts:
export LSTC_LICENSE=network export LSTC_LICENSE_SERVER=<port>@<server>
where <port> is an integer number and <server> is the hostname or IP address of your LSTC License server. These variables will take priority over any values specified in your ~/.licenses/ls-dyna.lic
file which must exist (even if its empty) for any ls-dyna
or ls-dyna-mpi
module to successfully load; To ensure it exists run touch ~/.licenses/ls-dyna.lic
once on the command line on each cluster you will submit jobs on. For further details see the official documentation.
Licence ANSYS
If your LS-DYNA license is hosted on an ANSYS License Server then set the following two environment variables in your slurm scripts:
export LSTC_LICENSE=ansys export ANSYSLMD_LICENSE_FILE=<port>@<server>
where <port> is an integer number and <server> is the hostname or IP address of your ANSYS License server. These variables cannot be defined in your ~/.licenses/ls-dyna.lic
file. The file however must exist (even if its empty) for any ls-dyna
module to load. To ensure this run touch ~/.licenses/ls-dyna.lic
once from the command line (or each time in your slurm scripts). Note that only module versions >= 12.2.1 will work with ANSYS License Servers.
SHARCNET
The SHARCNET ansys license supports running SMP and MPP lsdyna jobs. It can be used freely by anyone (on a core and job limited basis tba) on graham, narval or cedar cluster by adding the following lines into your slurm script:
export LSTC_LICENSE=ansys export ANSYSLMD_LICENSE_FILE=1055@license3.sharcnet.ca
Licence CMC
If your LS-DYNA license was purchased from CMC then set the following two environment variables depending on which cluster you are using:
export LSTC_LICENSE=ansys Beluga: export ANSYSLMD_LICENSE_FILE=6624@10.20.73.21 Cedar: export ANSYSLMD_LICENSE_FILE=6624@172.16.121.25 Graham: export ANSYSLMD_LICENSE_FILE=6624@199.241.167.222 Narval: export ANSYSLMD_LICENSE_FILE=6624@10.100.64.10 Niagara: export ANSYSLMD_LICENSE_FILE=6624@172.16.205.199
where the various IP address correspond to the respective CADpass servers. No firewall changes are required to use a CMC license on any cluster since these have already been done. Since the remote CMC server that hosts ls-dyna licenses is ANSYS based, these variables cannot be defined in your ~/.licenses/ls-dyna.lic
file. The file however must exist (even if its empty) for any ls-dyna
module to load. To ensure this is the case run touch ~/.licenses/ls-dyna.lic
once from the command line (or each time in your slurm scripts). Note that only module versions >= 13.1.1 will work with ANSYS License Servers.
Soumettre des tâches en lots
LS-DYNA offre des binaires pour faire exécuter des tâches sur des nœuds uniques (SMP, Shared Memory Parallel avec OpenMP) ou sur plusieurs nœuds (MPP, Message Passing Parallel avec MPI). Vous trouverez ci-dessous des scripts pour chacun des types de tâches.
Tâches avec un nœud unique
Pour connaître les modules pour faire exécuter les tâches sur un nœud unique, utilisez module spider ls-dyna
. Pour soumettre des tâches à la queue, utilisez sbatch script-smp.sh
. Le script suivant demande 8 cœurs sur un nœud de calcul unique. Le paramètre AUTO permet aux simulations spécifiques d'allouer plus de mémoire que le word de 100M alloué par défaut.
#!/bin/bash
#SBATCH --account=def-account # Specify
#SBATCH --time=0-03:00 # D-HH:MM
#SBATCH --cpus-per-task=8 # Specify number of cores
#SBATCH --mem=16G # Specify total memory
#SBATCH --nodes=1 # Do not change
</div>
#export RSNT_ARCH=avx2 # Uncomment on beluga for versions < 14.1.0
module load StdEnv/2020 # Versions < 14.1.0
module load ls-dyna/13.1.1
<div class="mw-translate-fuzzy">
#module load StdEnv/2023 # Versions > 13.1.1 (coming soon)
#module load ls-dyna/14.1.0
</div>
#export LSTC_LICENSE=ansys # Specify an ANSYS License Server
#export ANSYSLMD_LICENSE_FILE=<port>@<server>
export LSTC_MEMORY=AUTO
ls-dyna_s ncpu=$SLURM_CPUS_ON_NODE i=airbag.deploy.k memory=100M
where ls-dyna_s = single precision smp solver ls-dyna_d = double precision smp solver
Tâches avec plusieurs nœuds
Pour connaître les modules pour faire exécuter les tâches sur plusieurs nœuds, utilisez module spider ls-dyna-mpi
. Pour soumettre une tâche, utilisez sbatch script-mpp.sh
. Les scripts suivants sont pour soumettre des tâches avec un nombre total spécifique de nœuds entiers (par cœur) *OU* un nombre total spécifique de cœurs (par cœur).
Spécifier le nombre de nœuds
Le script suivant demande un nombre spécifique de nœuds de calcul entiers.
#!/bin/bash
#SBATCH --account=def-account # Specify
#SBATCH --time=0-03:00 # D-HH:MM
#SBATCH --ntasks-per-node=32 # Specify number cores per node (graham 32 or 44, cedar 48, beluga 40)
#SBATCH --nodes=2 # Specify number compute nodes (1 or more)
#SBATCH --mem=0 # Use all memory per compute node (do not change)
</div>
#export RSNT_ARCH=avx2 # Uncomment on beluga for versions < 14.1.0
module load StdEnv/2020 # Versions < 14.1.0
module load ls-dyna-mpi/13.1.1
<div class="mw-translate-fuzzy">
#module load StdEnv/2023 # Versions > 13.1.1 (coming soon)
#module load ls-dyna-mpi/14.1.0
</div>
#export LSTC_LICENSE=ansys # Specify an ANSYS License Server
#export ANSYSLMD_LICENSE_FILE=<port>@<server>
export LSTC_MEMORY=AUTO
<div class="mw-translate-fuzzy">
srun ls-dyna_d i=airbag.deploy.k memory=8G memory2=200M
où ls-dyna_s = single precision mpp solver ls-dyna_d = double precision mpp solver
Spécifier le nombre de cœurs
Les tâches peuvent être soumises à un nombre arbitraire de nœuds de calcul en spécifiant le nombre de cœurs. Ceci permet à l'ordonnanceur de déterminer automatiquement le nombre optimal de nœuds de calcul pour minimiser le temps d'attente dans la queue. Comme la limite de mémoire s'applique aux cœurs, la valeur de mem-per-cpu doit être assez élevée pour permettre au processeur principal de bien distribuer et gérer les calculs. Notez que de demander une quantité totale de mémoire pourrait être moins efficace que les autres méthodes décrites ci-dessus.
#!/bin/bash
#SBATCH --account=def-account # Specify
#SBATCH --time=0-03:00 # D-HH:MM
#SBATCH --ntasks=64 # Specify total number of cores
#SBATCH --mem-per-cpu=2G # Specify memory per core
</div>
#export RSNT_ARCH=avx2 # Uncomment on beluga for versions < 14.1.0
module load StdEnv/2020 # Versions < 14.1.0
module load ls-dyna-mpi/13.1.1
<div class="mw-translate-fuzzy">
#module load StdEnv/2023 # Versions > 13.1.1 (coming soon)
#module load ls-dyna-mpi/14.1.0
</div>
#export LSTC_LICENSE=ansys # Specify an ANSYS License Server
#export ANSYSLMD_LICENSE_FILE=<port>@<server>
export LSTC_MEMORY=AUTO
srun ls-dyna_d i=airbag.deploy.k
où ls-dyna_s = single precision mpp solver ls-dyna_d = double precision mpp solver
Visualisation avec LS-PrePost
Dépendant de la simulation, LS-DYNA pourrait utiliser plusieurs cœurs de manière inefficace. Avant de lancer une simulation, testez sa scalabilité en augmentant graduellement le nombre de cœurs pour déterminer la valeur à laquelle la simulation ralentit. La commande seff jobnumber permet de déterminer la durée réelle d'exécution, l'efficacité du CPU et l'efficacité de la mémoire.
Le programme LS-PrePost permet le prétraitement et le post-traitement des modèles LS-DYNA et est disponible via un autre module. Vous n'avez pas besoin de licence et pouvez l'utiliser sur tous les nœuds, incluant les nœuds VDI de Graham.
LSTC provides LS-PrePost for pre- and post-processing of LS-DYNA models. This program is made available by a separate module. It does not require a license and can be used on any cluster node or the Graham VDI nodes:
Nœuds des grappes
Connectez-vous à un nœud de calcul ou à un nœud de connexion avec TigerVNC et ouvrez une fenêtre de terminal.
module load StdEnv/2020 module load ls-prepost/4.8 lsprepost module load ls-prepost/4.9 lsprepost OU lspp49
module load ls-prepost lsprepost
Nœuds VDI
Connectez-vous à gra-vdi avec TigerVNC et ouvrez une fenêtre de terminal.
module load CcEnv StdEnv/2020 module load ls-prepost/4.8 lsprepost module load ls-prepost/4.9 lsprepost OR lspp49