ANSYS

From CC Doc
Jump to navigation Jump to search
This site replaces the former Compute Canada documentation site, and is now being managed by the Digital Research Alliance of Canada.

Ce site remplace l'ancien site de documentation de Calcul Canada et est maintenant géré par l'Alliance de recherche numérique du Canada.

This page is a translated version of the page ANSYS and the translation is 77% complete.
Outdated translations are marked like this.
Other languages:
English • ‎français

ANSYS est une suite logicielle pour la conception 3D et la simulation. La suite comprend des applications comme ANSYS Fluent et ANSYS CFX.

Licence

La suite ANSYS est hébergée sur nos grappes, mais nous n'avons pas une licence qui permet un accès généralisé. Toutefois, plusieurs établissements, facultés et départements possèdent des licences qui peuvent être utilisées avec nos grappes; vérifiez l'aspect légal de l'utilisation de cette licence. En ce qui a trait à l'aspect technique, nos nœuds de calcul doivent pouvoir communiquer avec votre serveur de licence. Si ce n'est pas déjà fait, notre équipe technique coordonnera ceci avec votre gestionnaire de licence. Quand tout sera en place, vous pourrez charger le module ANSYS qui localisera de lui-même la licence. En cas de difficulté, communiquez avec le soutien technique.

Configurer votre propre fichier de licence

Notre module ANSYS cherche l'information en rapport avec la licence à différents endroits, dont votre répertoire /home. Si vous avez votre propre serveur de licence, entrez les renseignements pour y accéder dans le fichier $HOME/.licenses/ansys.lic selon le format suivant :


File : ansys.lic

setenv("ANSYSLMD_LICENSE_FILE", "port@hostname")
setenv("ANSYSLI_SERVERS", "port@hostname")


Le tableau suivant montre comment configurer port@hostname.

Licence Grappe ANSYSLMD_LICENSE_FILE ANSYSLI_SERVERS Remarques
CMC beluga 6624@132.219.136.89 2325@132.219.136.89 aucune
CMC cedar 6624@206.12.126.25 2325@206.12.126.25 aucune
CMC graham 6624@199.241.167.222 2325@199.241.167.222 aucune
CMC narval 6624@10.100.64.10 2325@10.100.64.10 aucune
SHARCNET beluga/cedar/graham/gra-vdi/narval 1055@license3.sharcnet.ca 2325@license3.sharcnet.ca aucune

Si vous avez obtenu une licence de CMC, vous devez faire parvenir le nom d'utilisateur associé à votre compte avec Calcul Canada à <cmcsupport@cmc.ca>, autrement la licence ne fonctionnera pas. Pour connaître le nombre de cœurs que vous pouvez utiliser avec une licence CMC, voyez la section Other Tricks and Tips dans cette page.

Serveurs de licence locaux

Pour que nos nœuds de calcul puissent communiquer avec votre serveur de licence, des modifications doivent être apportées des deux côtés. Pour ce faire, obtenez de l'administrateur de votre serveur de licence les renseignements suivants : 1) le nom complet (hostname) de votre serveur de licence ANSYS 2) le port flex pour ANSYS (habituellement 1055) 3) le port d'interconnexion pour votre licence ANSYS (habituellement 2325) 4) le port statique (static vendor port) pour votre licence ANSYS (spécifique au site). Votre administrateur doit vouloir ouvrir les coupe-feu pour ces trois ports pour que les tâches ANSYS exécutées sur nos grappes puissent obtenir une licence. Faites parvenir au soutien technique les renseignements demandés et indiquez la ou les grappes que vous voulez utiliser (Cedar, Béluga, Graham/Gra-vdi ou Niagara).

Vérifier l'utilisation de la licence

ANSYS offre l'outil lmutil pour vérifier les détails de l'utilisation de votre licence. Auparavant, assurez-vous que le fichier ansys.lic est configuré et que vous avez chargé un module ansys :

[name@server ~]$ module load ansys
[name@server ~]$ $EBROOTANSYS/shared_files/licensing/linx64/lmutil lmstat -c $ANSYSLMD_LICENSE_FILE -S ansyslmd

Compatibilité des versions

Exit Fluent

exit }}</tab>

{{File |name=fluent_3.jou |contents=

EXAMPLE FLUENT JOURNAL FILE
===========================
lines beginning with a semicolon are comments

Soumettre des tâches en lot sur nos grappes

Plusieurs implémentations MPI permettent le calcul en parallèle, mais aucune n'est compatible avec l'ordonnanceur Slurm (voir Exécuter des tâches). Pour cette raison, il faut utiliser des directives particulières à chaque paquet ANSYS pour lancer une tâche parallèle. Vous trouverez ci-dessous quelques scripts de soumission de tâches. Pour toute question, communiquez avec le soutien technique.

ANSYS Fluent

La procédure suivante est habituellement utilisée pour exécuter Fluent sur une de nos grappes :

# Set the number of iterations for which convergence monitors are reported

/solve/set/reporting-interval 1

Scripts pour l'ordonnanceur Slurm

<tab name="script Slurm pour Fluent (par nœud)">

File : script-flu-bynode.sh

#!/bin/bash

#SBATCH --account=def-group   # Specify account
#SBATCH --time=00-03:00       # Specify time limit dd-hh:mm
#SBATCH --nodes=1             # Specify number compute nodes (1 or more)
#SBATCH --cpus-per-task=32    # Specify number cores per node (graham 32 or 44, cedar 32 or 48, beluga 40, narval 64)
#SBATCH --mem=0               # Do not change (allocates all memory per compute node)
#SBATCH --ntasks-per-node=1   # Do not change

#module load StdEnv/2016      # Applies to graham, cedar, niagara
#module load ansys/2020R2     # Or older module versions

#module load StdEnv/2020      # Applies to narval only
#module load ansys/2019R3     # Or ansys/2020R2 
#module load intel/2021 intelmpi
#export INTELMPI_ROOT=$I_MPI_ROOT/mpi/latest
#unset I_MPI_HYDRA_BOOTSTRAP_EXEC_EXTRA_ARGS
#unset I_MPI_ROOT

module load StdEnv/2020       # Applies to all clusters
module load ansys/2021R1      # Or newer module versions

slurm_hl2hl.py --format ANSYS-FLUENT > /tmp/machinefile-$SLURM_JOB_ID
NCORES=$((SLURM_NTASKS * SLURM_CPUS_PER_TASK))

fluent 3d -t $NCORES -cnf=/tmp/machinefile-$SLURM_JOB_ID -mpi=intel -affinity=0 -ssh -g -i sample.jou


File : script-flu-bynode+requeue.sh

#!/bin/bash

#SBATCH --account=def-group   # Specify account
#SBATCH --time=00-03:00       # Specify time limit dd-hh:mm
#SBATCH --nodes=1             # Specify number compute nodes (1 or more)
#SBATCH --cpus-per-task=32    # Specify number cores per node (graham 32 or 44, cedar 32 or 48, beluga 40, narval 64)
#SBATCH --array=1-5%1         # Specify number requeue attempts (2 or more, 5 is shown)
#SBATCH --mem=0               # Do not change (allocates all memory per compute node)
#SBATCH --ntasks-per-node=1   # Do not change

#module load StdEnv/2016      # Applies to graham, cedar, niagara
#module load ansys/2020R2     # Or older module versions

#module load StdEnv/2020      # Applies to narval only
#module load ansys/2019R3     # Or ansys/2020R2 
#module load intel/2021 intelmpi
#export INTELMPI_ROOT=$I_MPI_ROOT/mpi/latest
#unset I_MPI_HYDRA_BOOTSTRAP_EXEC_EXTRA_ARGS
#unset I_MPI_ROOT

module load StdEnv/2020       # Applies to all clusters
module load ansys/2021R1      # Or newer module versions

slurm_hl2hl.py --format ANSYS-FLUENT > /tmp/machinefile-$SLURM_JOB_ID
NCORES=$((SLURM_NTASKS * SLURM_CPUS_PER_TASK))

fluent 3d -t $NCORES -cnf=/tmp/machinefile-$SLURM_JOB_ID -mpi=intel -affinity=0 -ssh -g -i sample.jou
if [ $? -eq 0 ]; then
    echo "Job completed successfully! Exiting now."
    scancel $SLURM_ARRAY_JOB_ID
else
    echo "Job failed due to license or simulation issue!"
    if [ $SLURM_ARRAY_TASK_ID -lt $SLURM_ARRAY_TASK_COUNT ]; then
       echo "Resubmitting now ..."
    else
       echo "Exiting now."
    fi
fi


File : script-flu-bycore.sh

#!/bin/bash

#SBATCH --account=def-group   # Specify account
#SBATCH --time=00-03:00       # Specify time limit dd-hh:mm
##SBATCH --nodes=1            # Uncomment to specify (1 or more)
#SBATCH --ntasks=16           # Specify total number cores
#SBATCH --mem-per-cpu=4G      # Specify memory per core
#SBATCH --cpus-per-task=1     # Do not change

#module load StdEnv/2016      # Applies to graham, cedar, niagara
#module load ansys/2020R2     # Or older module versions

#module load StdEnv/2020      # Applies to narval only
#module load ansys/2019R3     # Or ansys/2020R2 
#module load intel/2021 intelmpi
#export INTELMPI_ROOT=$I_MPI_ROOT/mpi/latest
#unset I_MPI_HYDRA_BOOTSTRAP_EXEC_EXTRA_ARGS
#unset I_MPI_ROOT

module load StdEnv/2020       # Applies to all clusters
module load ansys/2021R1      # Or newer module versions

slurm_hl2hl.py --format ANSYS-FLUENT > /tmp/machinefile-$SLURM_JOB_ID
NCORES=$((SLURM_NTASKS * SLURM_CPUS_PER_TASK))

fluent 3d -t $NCORES -cnf=/tmp/machinefile-$SLURM_JOB_ID -mpi=intel -affinity=0 -g -i sample.jou


</tabs>

FIchiers de journalisation

Fluent Journal files can include basically any command from Fluent's Text-User-Interface (TUI); commands can be used to change simulation parameters like temperature, pressure and flow speed. With this you can run a series of simulations under different conditions with a single case file, by only changing the parameters in the Journal file. Refer to the Fluent User's Guide for more information and a list of all commands that can be used.

File : sample1.jou

; SAMPLE FLUENT JOURNAL FILE - STEADY SIMULATION
; ----------------------------------------------
; lines beginning with a semicolon are comments

; Write case and data files in legacy format:
/file/cff-files no

; Read input files (FFF-in.cas and FFF-in.dat):
/file/read-case-data FFF-in

; Run the solver for this many iterations:
/solve/iterate 1000

; Overwrite output files by default:
/file/confirm-overwrite n

; Write final output file (FFF-out.dat):
/file/write-data FFF-out

; Write simulation report to file (optional):
/report/summary y "My_Simulation_Report.txt"

; Exit fluent:
exit


File : sample2.jou

; SAMPLE FLUENT JOURNAL FILE - STEADY SIMULATION
; ----------------------------------------------
; lines beginning with a semicolon are comments

; Write case and data files in legacy format:
/file/cff-files no

; Read compressed input files (FFF-in.cas.gz & FFF-in.dat.gz):
/file/read-case-data FFF-in.gz

; Write a compressed data file every 100 iterations:
/file/auto-save/data-frequency 100

; Retain data files from 5 most recent iterations:
/file/auto-save/retain-most-recent-files y

; Write data files to output sub-directory (appends iteration)
/file/auto-save/root-name output/FFF-out.gz

; Run the solver for this many iterations:
/solve/iterate 1000

; Write final compressed output files (FFF-out.cas.gz & FFF-out.dat.gz):
/file/write-case-data FFF-out.gz

; Write simulation report to file (optional):
/report/summary y "My_Simulation_Report.txt"

; Exit fluent:
exit


File : sample3.jou

; SAMPLE FLUENT JOURNAL FILE - TRANSIENT SIMULATION
; -------------------------------------------------
; lines beginning with a semicolon are comments

; Write case and data files in legacy format:
/file/cff-files no

; Read only the input case file:
/file/read-case FFF-transient-inp.gz

; For continuation (restart) read in both case and data input files:
;/file/read-case-data FFF-transient-inp.gz

; Write a data (and maybe case) file every 100 time steps:
/file/auto-save/data-frequency 100
/file/auto-save/case-frequency if-case-is-modified

; Retain only the most recent 5 data (and maybe case) files:
; [saves disk space if only a recent continuation file is needed]
/file/auto-save/retain-most-recent-files y

; Write to output sub-directory (appends flowtime and timestep)
/file/auto-save/root-name output/FFF-transient-out-%10.6f.gz

; ##### Settings for Transient simulation :  #####

; Set the magnitude of the (physical) time step (delta-t)
/solve/set/time-step 0.0001

; Set the max number of iterations per time step:
/solve/set/max-iterations-per-time-step 20

; Set the number of iterations for which convergence monitors are reported:
/solve/set/reporting-interval 1

; ##### End of settings for Transient simulation #####

; Initialize using the hybrid initialization method:
/solve/initialize/hyb-initialization

; Perform unsteady iterations for a specified number of time steps:
/solve/dual-time-iterate 1000 ,

; Write final case and data output files:
/file/write-case-data FFF-transient-out.gz

; Write simulation report to file (optional):
/report/summary y Report_Transient_Simulation.txt

; Exit fluent:
exit


ANSYS CFX

File : script-cfx.sh

#!/bin/bash

#SBATCH --account=def-group   # Specify account name
#SBATCH --time=00-03:00       # Specify time limit dd-hh:mm
#SBATCH --nodes=1             # Specify number compute nodes (1 or more)
#SBATCH --cpus-per-task=32    # Specify number cores per node (graham 32 or 44, cedar 32 or 48, beluga 40)
#SBATCH --mem=0               # Do not change (allocate all memory per compute node)
#SBATCH --ntasks-per-node=1   # Do not change

#module load StdEnv/2016      # Applies to: graham, cedar, beluga
#module load ansys/2020R2     # Or older module versions

module load StdEnv/2020       # Applies to: graham, cedar, beluga, narval
module load ansys/2021R1      # Or newer module versions

NNODES=$(slurm_hl2hl.py --format ANSYS-CFX)

# other options maybe appended to the following command line as needed
cfx5solve -def YOURFILE.def -start-method "Intel MPI Distributed Parallel" -par-dist $NNODES
File : script-cfx.sh

#!/bin/bash

#SBATCH --account=def-group   # Specify account name
#SBATCH --time=00-03:00       # Specify time limit dd-hh:mm
#SBATCH --ntasks-per-node=4   # Specify number cores (narval upto 64)
#SBATCH --mem=8G              # Specify 0 when using all cores
#SBATCH --nodes=1             # Do not change

module load StdEnv/2020       # Applies to: narval, graham, cedar
module load ansys/2020R2      # Or version 2019R3

# other options maybe appended to the following command line as needed
cfx5solve -def YOURFILE.def -start-method "Open MPI Local Parallel" -part $SLURM_CPUS_ON_NODE

</tabs>

Remarque : Il est possible que vous receviez un message comme /etc/tmi.conf: No such file or directory; cependant, il semble que ces messages n'aient pas d'effet sur les calculs.

WORKBENCH

Before submitting a job to the queue with sbatch script-wbpj.sh 1) specify the name of YOURPROJECT.wbpj file in the slurm script below and 2) initialize the project by opening it in the ANSYS workbench gui as described in the Graphical_Use then click File -> Open to load your project, double click Solution in the center pane to start Mechanical, click File -> Clear Generated Data -> Yes, click File -> Save Project, click File -> Close Mechanical and finally click File -> exit. You may avoid writing the solution when a simulation completes by removing ;Save(Overwrite=True) from the last line of the slurm script. Doing this will enable running multiple test jobs for scaling purposes without overwriting the initialized solution. Alternatively you could save a copy of the initialized YOURPROJECT.wbpj file and YOURPROJECT_files sub-directory then restore them after the solution and remove the _ProjectScratch sub-directory. For APDL based simulations under StdEnv/2016 nodes=1 maybe either removed from the slurm script or changed to be greater than 1 to permit computations across multiple nodes.

File : script-wbpj.sh

#!/bin/bash
#SBATCH --account=def-account
#SBATCH --time=00-03:00                # Time (DD-HH:MM)
#SBATCH --mem-per-cpu=2G               # Memory per core
#SBATCH --ntasks=8                     # Number of cores
#SBATCH --nodes=1                      # Do not change
</div>

<div class="mw-translate-fuzzy">
#SBATCH --account=def-account
#SBATCH --time=00-03:00                # Time (DD-HH:MM)
#SBATCH --mem-per-cpu=2G               # Memory per core
#SBATCH --ntasks=4                     # Number of cores
#SBATCH --nodes=1                      # Do not change
</div>

<div class="mw-translate-fuzzy">
module load StdEnv/2020 ansys/2021R2   # Do not change (narval supported)
</div>

rm -fv *_files/.lock
MWFILE=~/.mw/Application\ Data/Ansys/`basename $(find $EBROOTANSYS/v* -maxdepth 0 -type d)`/SolveHandlers.xml
sed -re "s/(.AnsysSolution>+)[a-zA-Z0-9]*(<\/Distribute.)/\10\2/" -i "$MWFILE"
sed -re "s/(.Processors>+)[a-zA-Z0-9]*(<\/MaxNumber.)/\1$SLURM_NTASKS\2/" -i "$MWFILE"

runwb2 -B -E "Update();Save(Overwrite=True)" -F YOURPROJECT.wbpj


File : script-wbpj-2016.sh

#!/bin/bash

<div class="mw-translate-fuzzy">
#SBATCH --account=def-account
#SBATCH --time=00-03:00                # Time (DD-HH:MM)
#SBATCH --mem-per-cpu=2G               # Memory per core
#SBATCH --ntasks=4                     # Number of cores
#SBATCH --nodes=1                      # Do not change
</div>

<div class="mw-translate-fuzzy">
module load StdEnv/2016 ansys/2019R3   # Do not change (narval not supported)
</div>

rm -fv *_files/.lock
MWFILE=~/.mw/Application\ Data/Ansys/`basename $(find $EBROOTANSYS/v* -maxdepth 0 -type d)`/SolveHandlers.xml
sed -re "s/(.AnsysSolution>+)[a-zA-Z0-9]*(<\/Distribute.)/\11\2/" -i "$MWFILE"
sed -re "s/(.Processors>+)[a-zA-Z0-9]*(<\/MaxNumber.)/\1$((SLURM_NTASKS-1))\2/" -i "$MWFILE"

export I_MPI_HYDRA_BOOTSTRAP=ssh; export KMP_AFFINITY=balanced
export PATH=/cvmfs/soft.computecanada.ca/nix/var/nix/profiles/16.09/bin:$PATH

runwb2 -B -E "Update();Save(Overwrite=True)" -F YOURPROJECT.wbpj


</tabs>

lmutil lmstat -c $ANSYSLMD_LICENSE_FILE -a | grep "Users of aa_r_hpc"

The input file can be generated from within your interactive Workbench Mechanical session by clicking Solution -> Tools -> Write Input Files then specify File name: YOURAPDLFILE.inp and Save as type: APDL Input Files (*.inp). APDL jobs can then be submitted to the queue by running the sbatch script-name.sh command. The ANSYS modules given in each script were tested on graham and should work without issue (uncomment one). Once the scripts are tested on other clusters they will be updated below if required.

File : script-smp-2016.sh

#!/bin/bash
#SBATCH --account=def-account  # Specify your account
#SBATCH --time=00-03:00        # Specify time (DD-HH:MM)
#SBATCH --mem=16G              # Specify memory for all cores
#SBATCH --ntasks=8             # Specify number of cores (1 or more)
#SBATCH --nodes=1              # Specify one node (do not change)

unset SLURM_GTIDS

module load StdEnv/2016

#module load ansys/19.1
#module load ansys/19.2
#module load ansys/2019R2
#module load ansys/2019R3
#module load ansys/2020R1
module load ansys/2020R2

mapdl -smp -b nolist -np $SLURM_NTASKS -dir $SLURM_TMPDIR -i YOURAPDLFILE.inp


File : script-smp-2020.sh

#!/bin/bash
#SBATCH --account=def-account  # Specify your account
#SBATCH --time=00-03:00        # Specify time (DD-HH:MM)
#SBATCH --mem=16G              # Specify memory for all cores
#SBATCH --ntasks=8             # Specify number of cores (1 or more)
#SBATCH --nodes=1              # Specify one node (do not change)

unset SLURM_GTIDS

module load StdEnv/2020

#module load ansys/2021R1
module load ansys/2021R2

mapdl -smp -b nolist -np $SLURM_NTASKS -dir $SLURM_TMPDIR -i YOURAPDLFILE.inp


File : script-dis-2016.sh

#!/bin/bash
#SBATCH --account=def-account  # Specify your account
#SBATCH --time=00-03:00        # Specify time (DD-HH:MM)
#SBATCH --mem-per-cpu=2G       # Specify memory per core
#SBATCH --ntasks=8             # Specify number of cores (2 or more)
##SBATCH --nodes=2             # Specify number of nodes (optional)
##SBATCH --ntasks-per-node=4   # Specify cores per node (optional)

unset SLURM_GTIDS

module load StdEnv/2016

#module load ansys/2019R3
module load ansys/2020R1

export I_MPI_HYDRA_BOOTSTRAP=ssh; export KMP_AFFINITY=compact
mapdl -dis -mpi intelmpi -b nolist -np $SLURM_NTASKS -dir $SLURM_TMPDIR -i YOURAPDLFILE.inp


File : script-dis-2020.sh

#!/bin/bash
#SBATCH --account=def-account  # Specify your account
#SBATCH --time=00-03:00        # Specify time (DD-HH:MM)
#SBATCH --mem-per-cpu=2G       # Specify memory per core
#SBATCH --ntasks=8             # Specify number of cores (2 or more)
##SBATCH --nodes=2             # Specify number of nodes (optional)
##SBATCH --ntasks-per-node=4   # Specify cores per node (optional)

unset SLURM_GTIDS

module load StdEnv/2020

#module load ansys/2021R1
module load ansys/2021R2

mapdl -dis -mpi openmpi -b nolist -np $SLURM_NTASKS -dir $SLURM_TMPDIR -i YOURAPDLFILE.inp


ANSYS allocates 1024 MB total memory and 1024 MB database memory by default for APDL jobs. These values can be manually specified (or changed) by adding arguments -m 1024 and/or -db 1024 to the last maple command line in the above slurm scripts. When using a remote institutional license server with multiple ANSYS licenses it may be necessary to add arguments such as -p aa_r or -ppf anshpc. As always perform detailed scaling tests before running production jobs to ensure the optimal number of cores and minimum amount memory is specified in your slurm scripts. The single node SMP (Shared Memory Parallel) script will perform better than the multiple node DIS (Distributed Memory Parallel) script and therefore should be used whenever possible. To help avoid compatibility issues the ansys module loaded in your slurm script should ideally match the version used to to generate the input file:

 [gra-login2:~/ansys/mechanical/demo] cat YOURAPDLFILE.inp | grep version
! ANSYS input file written by Workbench version 2019 R3

ANSYS EDT

Ansys Electronic Desktop jobs can be submitted to the cluster queue by running the sbatch script-name.sh command. The following script allows running a job with upto all cores and memory on a single node and was tested on graham. To use it specify the simulation time, memory, number of cores and replace YOUR_AEDT_FILE with your input file name. A full listing of ansysedt command line options can be obtained by starting ansysedt in [Graphical Mode | https://docs.computecanada.ca/wiki/ANSYS#Graphical_Use] with commands ansysedt -help or ansysedt -Batchoptionhelp to obtain scrollable graphical popups. Ansysedt can be run interactively in batch (non-gui) mode by first starting an salloc session with options salloc --time=3:00:00 --tasks=8 --mem=16G --account=def-account and then copy pasting the full ansysedt command given in the last line of script-local-cmd.sh being sure to manually specify $YOUR_AEDT_FILE.

File : script-local-cmd.sh

#!/bin/bash

<div class="mw-translate-fuzzy">
#SBATCH --account=account      # Specify your account (def or rrg)
#SBATCH --time=00-01:00        # Specify time (DD-HH:MM)
#SBATCH --mem=16G              # Specify memory (0 to use all memory on the node)
#SBATCH --ntasks=16            # Specify cores (graham 32 or 44, cedar 32 or 48, beluga 40)
#SBATCH --nodes=1              # Request one node (Do Not Change)
</div>

module load StdEnv/2020
module load ansysedt/2021R2

# Uncomment next line to run a test example:
cp -f $EBROOTANSYSEDT/AnsysEM21.2/Linux64/Examples/HFSS/Antennas/TransientGeoRadar.aedt .

# Specify input file such as:
YOUR_AEDT_FILE="TransientGeoRadar.aedt"

# Remove previous output:
rm -rf $YOUR_AEDT_FILE.* ${YOUR_AEDT_FILE}results

# ---- do not change anything below this line ---- #

echo -e "\nANSYSLI_SERVERS= $ANSYSLI_SERVERS"
echo "ANSYSLMD_LICENSE_FILE= $ANSYSLMD_LICENSE_FILE"
echo -e "SLURM_TMPDIR= $SLURM_TMPDIR on $SLURMD_NODENAME\n"

export KMP_AFFINITY=disabled
ansysedt -monitor -UseElectronicsPPE -ng -distributed -machinelist list=localhost:1:$SLURM_NTASKS \
-batchoptions "TempDirectory=$SLURM_TMPDIR HPCLicenseType=pool HFSS/EnableGPU=0" -batchsolve $YOUR_AEDT_FILE


File : script-local-opt.sh

#!/bin/bash

<div class="mw-translate-fuzzy">
#SBATCH --account=account      # Specify your account (def or rrg)
#SBATCH --time=00-01:00        # Specify time (DD-HH:MM)
#SBATCH --mem=16G              # Specify memory (0 to use all memory on the node)
#SBATCH --ntasks=16            # Specify cores (graham 32 or 44, cedar 32 or 48, beluga 40)
#SBATCH --nodes=1              # Request one node (Do Not Change)
</div>

<div class="mw-translate-fuzzy">
module load StdEnv/2020
module load ansysedt/2021R2    # Not currently usable on narval
</div>

# Uncomment next line to run a test example:
cp -f $EBROOTANSYSEDT/AnsysEM21.2/Linux64/Examples/HFSS/Antennas/TransientGeoRadar.aedt .

# Specify input filename such as:
YOUR_AEDT_FILE="TransientGeoRadar.aedt"

# Remove previous output:
rm -rf $YOUR_AEDT_FILE.* ${YOUR_AEDT_FILE}results

# Specify options filename:
OPTIONS_TXT="Options.txt"

# Write sample options file
rm -f $OPTIONS_TXT
cat > $OPTIONS_TXT <<EOF
\$begin 'Config'
'TempDirectory'='$SLURM_TMPDIR'
'HPCLicenseType'='pool'
'HFSS/EnableGPU'=0
\$end 'Config'
EOF

# ---- do not change anything below this line ---- #

echo -e "\nANSYSLI_SERVERS= $ANSYSLI_SERVERS"
echo "ANSYSLMD_LICENSE_FILE= $ANSYSLMD_LICENSE_FILE"
echo -e "SLURM_TMPDIR= $SLURM_TMPDIR on $SLURMD_NODENAME\n"

export KMP_AFFINITY=disabled
ansysedt -monitor -UseElectronicsPPE -ng -distributed -machinelist list=localhost:1:$SLURM_NTASKS \
-batchoptions $OPTIONS_TXT -batchsolve $YOUR_AEDT_FILE


Mode graphique

2) Avec les modules locaux gra-vdi (qui offrent probablement une meilleure performance graphique) :

  1. Connectez=vous à gra-vdi.computecanada.ca avec TigerVNC
    module load SnEnv
    module load ansys/2019R3
  2. runwb2|fluent|cfx5|icemcfd|apdl
  3. Appuyez sur y puis enter pour accepter les deux conditions.
  4. Appuyez sur enter pour poursuivre avec la licence SHARCNET par défaut (ou pour runwb2, votre fichier ansys.lic s'il y a lieu).

Nœuds de calcul

ANSYS can be run interactively on single cluster compute node for upto 24hours. This approach is ideal for testing large simulations since all cores and memory can be requested with salloc as described in TigerVNC. Once connected with vncviewer, any of the following program versions can be started after loading the required modules as shown:

FLUIDS
module load StdEnv/2020 ansys/2021R1 (or newer versions)
unset SESSION_MANAGER; fluent -mpi=intel | cfx5
------------------------------------------------------------------------------------
module load StdEnv/2016 ansys/2020R2 (or older versions)
fluent | cfx5
WORKBENCH
module load StdEnv/2020 ansys/2021R2
runwb2
NOTE: Most pulldown menus and icons do not respond as one might expect by simply moving the mouse over the item to highlight it or single clicking it. This is due to an interaction issue between workbench and the default window manager currently installed as default on the clusters. While a solution to this problem is being looked for, the following bullets can be used a workaround to provide equivalent control when working within the workbench gui:
o To run in parallel unTick the distributed box in the solve panel and specify a value for Cores uqual to the "salloc cpus value that you specified minus 1".
o To access the pulldown menus for the items in left side project tree, left click once to select the item then double right click your mouse button.
o To access the pulldown menus for the Upper icons with tiny down arrows, left click once to select the item then double left click your mouse button. The tiny down arrow for the Solve icon which provides access to the Solve Process settings is an exception ! To access this instead please click the tiny angled arrow found in the lower right corner of the Solve panel.
o While the pull downs found in the left side menu that typically default to Program Controlled work as expected when single clicked for various Ansys Systems, the width of the left side window is typically too narrow to see the full text for all of the pulled down items. This can rectified by dragging the vertical bar of the left window to make it wider. Doing so will also make the associated drop down arrows visible. The left side window can be restored to its default layout appearance by following the procedure in the previous bullet to specify Home -> Layout -> Reset Layout.
o If you are having trouble scrolling down to click File -> Close Mechanical or have minimized it and want to restore it to view then respectfully single right click -> close or single left click the Workbench button found along the bottom of the tigervnc gui frame to reselect it.
o If Mechanical will not start completely close Ansys as described in the previous bullet then exit and restart your salloc session. The cause of this inconvenience maybe a uncleanly exited previous ansys session run within the same salloc session.
------------------------------------------------------------------------------------
module load StdEnv/2016 ansys/2019R3 (not available on narval)
export PATH=$EBROOTNIXPKGS/bin:$PATH
runwb2
o Single right click to access left side project tree pulldown menus
o Single left click for the upper pulldown menus with tiny down arrows
o Tick distributed box, specify number Cores = salloc value minus 1
ELECTRONICS DESKTOP
module load CcEnv StdEnv/2020 ansysedt/2021R2
rm -rf ~/.mw (optionally force First-time configuration)
ansysedt
ENSIGHT
module load StdEnv/2016 ansys/2019R3; A=195; B=5.10.1, or
module load StdEnv/2016 ansys/2020R1; A=201; B=5.10.1, or
module load StdEnv/2016 ansys/2020R2; A=202; B=5.12.6, or
module load StdEnv/2020 ansys/2021R1; A=211; B=5.12.6, or
module load StdEnv/2020 ansys/2021R2; A=212; B=5.12.6
export LD_LIBRARY_PATH=$EBROOTANSYS/v$A/CEI/apex$A/machines/linux_2.6_64/qt-$B/lib
ensight -X


SSH Considerations Some ANSYS gui programs can be run remotely on a cluster compute node by X forwarding over ssh to your local desktop. Unlike VNC, this approach is untested and unsupported since it relies on a properly setup X display server for your particular operating system OR the selection, installation and configuration of a suitable X client emulator package such as MobaXterm. Most users will find interactive response times unacceptably slow for basic menu tasks let alone performing more complex tasks such as those involving graphics rendering. Startup times for gui programs can also be very slow depending on your internet connection. For example, in one test it took 40min to fully start ansysedt over ssh while starting it with vncviewer required on 34 seconds. Despite these stark facts the approach may be of interest if the only goal is to open a simulation and run some calculations in the gui. Therefore the basic steps are given here as a starting point: 1) ssh -Y username@graham.computecanada.ca 2) salloc --x11 --time=1:00:00 --cpus-per-task=1 --mem=16000 --account=def-mygroup 3) once on a compute node try running xclock to check the analog clock appears on your desktop, if it does then 4) load the needed modules and try running the program.

Nœuds VDI

Pour utiliser ANSYS Additive Manufacturing dans votre projet, suivez ces directives :

FLUIDS
module load CcEnv StdEnv/2020 ansys/2021R2, or
module load CcEnv StdEnv/2020 ansys/2021R1
unset SESSION_MANAGER; fluent|cfx5|icemcfd
NOTE: If icemcfd crashes on startup click Settings -> Display -> X11
------------------------------------------------------------------------------------
module load CcEnv StdEnv/2016 ansys/2020R2, or
module load CcEnv StdEnv/2016 ansys/2020R1, or
module load CcEnv StdEnv/2016 ansys/2019R3
export HOOPS_PICTURE=opengl
fluent|cfx5|icemcfd
WORKBENCH
module load CcEnv StdEnv/2020 ansys/2021R2
runwb2
------------------------------------------------------------------------------------
module load SnEnv ansys/2021R1, or
module load SnEnv ansys/2020R2
runwb2
------------------------------------------------------------------------------------
module load CcEnv StdEnv/2016 ansys/2020R1, or
module load CcEnv StdEnv/2016 ansys/2019R3
export PATH=$EBROOTNIXPKGS/bin:$PATH
runwb2
CAVEAT: The pull downs in the left side menu that typically default to Program Controlled do NOT work when various Ansys Systems are loaded such as Steady-State Thermal, Explicit Dynamics and so forth. Trying to use the pull downs repeatedly on gra-vdi may crash Ansys in such a way that "pkill -9 ansys" should be run afterward to completely clear any lingering license server connections before restarting workbench. As a workaround, quit out of gra-vdi and then open your project under workbench on a compute node within an salloc session. Make the desired pulldown changes then click Home -> Save Project -> Close Mechanical, File -> Exit then also exit your salloc session. Now return to gra-vdi where the changed settings should appear when you reopen the project under workbench. A fix for this problem is being looked for and this message will be updated at such time one is found.
ELECTRONICS DESKTOP
module load CcEnv StdEnv/2020 ansysedt/2021R2
rm -rf ~/.mw (optionally force First-time configuration)
ansysedt
ENSIGHT
module load SnEnv ansys/2021R2, or
module load SnEnv ansys/2021R1
ensight
------------------------------------------------------------------------------------
module load CcEnv StdEnv/2016 ansys/2020R2
ensight

Particularités selon le site d'utilisation

Licence SHARCNET

Le 31 mai 2020, la licence SHARCNET est passée de CFD (Research CFD) uniquement à MCS (Multiphysics Campus Solution) dont le portfolio Academic comprend pour la recherche les produits suivants : HF, EM, Electronics HPC, Mechanical et CFD. La licence permet l'exécution de 275 tâches dont 25 tâches aa_r à taille de simulation illimitée pour la recherche et 250 tâches aa_t_a à taille de simulation limitée pour l'enseignement. Il n'y a pas de limite au nombre de tâches pouvant être exécutées pour l'enseignement alors que deux tâches sont possibles pour la recherche. Un total de 384 cœurs aa_r_hpc sont disponibles pour exécuter les tâches, avec un maximum de 64 par utilisateur. Nous vous demandons d'utiliser si possible les tâches pour l'enseignement, comme décrit ci-dessus dans la section Préférence pour la licence. Cette licence a été renouvelée depuis 10 ans et rien ne permet de croire qu'elle ne le sera pas dans les prochaines années.

Fichier du serveur de licence

Pour utiliser la licence de SHARCNET, configurez votre fichier ansys.lic comme suit :

[gra-login1:~/.licenses] cat ansys.lic
setenv("ANSYSLMD_LICENSE_FILE", "1055@license3.sharcnet.ca")
setenv("ANSYSLI_SERVERS", "2325@license3.sharcnet.ca")

Interroger le serveur de licence

Pour connaître le nombre de licences utilisées qui sont associées à votre nom d'utilisateur et le nombre de licences utilisées par tous les utilisateurs, lancez

ssh graham.computecanada.ca
module load ansys
lmutil lmstat -c $ANSYSLMD_LICENSE_FILE -a | grep "Users of\|$USER"

Si vous remarquez que des licences sont utilisées sans justification avec votre nom d'utilisateur (ce qui peut se produire si ANSYS n'a pas été correctement fermé sur gra-vdi), connectez-vous au nœud en cause, ouvrez une fenêtre terminal et mettez fin au processus avec pkill -9 -e -u $USER -f "ansys" pour libérer vos licences. Prenez note que gra-vdi possède deux nœuds (gra-vdi3 et gra-vdi4) qui vous sont assignés au hasard quand vous vous connectez avec tigervnc; ainsi, avant de lancer pkill, il est nécessaire d'indiquer le nom complet de l'hôte (gra-vdi3.sharcnet.ca ou grav-vdi4.sharcnet.ca) quand vous vous connectez.

Modules VDI locaux

Utiliser Additive

Modules ansys

  1. Connect to gra-vdi.computecanada.ca with TigerVNC
  2. Open a new terminal window and load a module:
    module load SnEnv ansys/2021R2, or
    module load SnEnv ansys/2021R1, or
    module load SnEnv ansys/2020R2, or
    module load SnEnv ansys/2020R1, or
    module load SnEnv ansys/2019R3
  3. Start an ANSYS program by issuing one of the following:
    runwb2|fluent|cfx5|icemcfd|apdl
  4. Press y then enter to accept the conditions
  5. Press enter to accept the n option and use the SHARCNET license server by default (in the case of runwb2 ~/.licenses/ansysedt.lic will be used if present otherwise ANSYSLI_SERVERS and ANSYSLMD_LICENSE_FILE will be used if set in your environment for example to some other remote license server). If you change n to y and hit enter the CMC license server will be used.

where cfx5 from step 3. above provides the option to start the following components:

   1) CFX-Launcher  (cfx5 -> cfx5launch)
   2) CFX-Pre       (cfx5pre)
   3) CFD-Post      (cfdpost -> cfx5post)
   4) CFX-Solver    (cfx5solve)

Modules ansysedt

  1. Connect to gra-vdi.computecanada.ca with TigerVNC
  2. Open a new terminal window and load a module:
    module load SnEnv ansysedt/2021R2, or
    module load SnEnv ansysedt/2021R1
  3. Start the ANSYS Electromagnetics Desktop program by typing the following command: ansysedt
  4. Press y then enter to accept the conditions.
  5. Press enter to accept the n option and use the SHARCNET license server by default (note that ~/.licenses/ansysedt.lic will be used if present otherwise ANSYSLI_SERVERS and ANSYSLMD_LICENSE_FILE will be used if set in your environment for example to some other remote license server). If you change n to y and hit enter then the CMC license server will be used.

License feature preferences previously setup with anslic_admin are no longer supported following the recent SHARCNET license server update (Sept9/2021). If a license problem occurs try removing the ~/.ansys directory in your home account to clear the settings. If problems persist please open a problem ticket at <support@computecanada.ca> and provide the contents your ~/.licenses/ansys.lic file.

Additive Manufacturing (AM)

Configurez d'abord votre fichier ~/.licenses/ansys.lic pour l'orienter vers le serveur de licence où se trouve une licence valide pour ANSYS Mechanical. Vous devez faire ceci sur tous les systèmes où vous utiliserez le logiciel.

Utiliser Additive

Pour utiliser ANSYS Additive Manufacturing pour votre projet, effectuez les étapes suivantes :

Lancer Workbench

Sur gra-vdi

  • Connectez-vous à gra-vdi.computecanada.ca avec TigerVNC.
  • module load CcEnv StdEnv ansys/2019R3
  • export PATH=/cvmfs/soft.computecanada.ca/nix/var/nix/profiles/16.09/bin:$PATH
  • Allez au répertoire où se trouve votre fichier test.wbpj.
  • runwb2

Installer Extension

  • Cliquez sur Extensions -> Install Extension.
  • Entrez /path/to/AdditiveWizard.wbex et cliquez sur Open : /cvmfs/restricted.computecanada.ca/easybuild/software/2017/Core/ansys/2019R3/v195/aisol/WBAddins/MechanicalExtensions/AdditiveWizard.wbex

Charger Extension

  • Cliquez sur Extensions -> Manage Extensions et cochez Additive Wizard.
  • Cliquez sur l'onglet X de ACT Start Page pour revenir à l'onglet pour votre projet.

Exécuter Additive

Gra-vdi

Vous pouvez exécuter une seule tâche ANSYS Additive Manufacturing sur gra-vdi en utilisant jusqu'à 16 cœurs comme suit :

  • Lancez Workbench sur gra-vdi comme décrit ci-dessus dans Utiliser Additive.
  • Cliquez sur File -> Open et sélectionnez test.wbpj puis cliquez sur Open.
  • Cliquez sur View -> Reset workspace si votre écran est gris.
  • Lancez Mechanical, Clear Generated Data, sélectionnez Distributed, spécifiez Cores.
  • Cliquez sur File -> Save Project -> Solve.

Vérifiez l'utilisation :

  • Ouvrez un autre terminal et lancez top -u $USER.
  • Au besoin, terminez les processus non nécessaires créés par des tâches précédentes avec pkill -9 -e -u $USER -f "ansys".

Grappe

Préparation du projet :

Pour soumettre une tâche Additive à la queue d'une grappe de Calcul Canada, la simulation doit d'abord être préparée pour être exécutée sur une de ces grappes. Pour faire ceci, ouvrez et sauvegardez votre simulation (sur gra-vdi OU dans une session salloc sur la grappe où vous travaillez) pour initialiser la configuration du chemin interne du projet comme décrit ci-dessus dans Utiliser Additive. Créez ensuite un script Slurm dans le répertoire où se trouve le fichier de votre projet (comme ci-dessous) et soumettez-le à la queue avec sbatch script.txt. Assurez-vous que la valeur de --ntasks dans le script correspond à la dernière valeur de Cores définie dans Mechanical, surtout si vous déplacez le projet vers une autre grappe. Pour modifier la valeur de Cores sur une grappe sans ouvrir votre simulation, voyez Lancez Mechanical sur un nœud de connexion ci-dessous.

module load ansys/2019R3

rm -f test_files/.lock
runwb2 -R myreplay.wbjn

Utilisation des ressources

Après quelques minutes, vous pouvez obtenir un instantané de l'utilisation des ressources par la tâche en cours d'exécution sur le ou les nœuds de calcul avec la commande srun. Le script pour 8 cœurs ci-dessous produit le résultat suivant où on remarque que l'ordonnanceur a choisi 2 nœuds.

[gra-login1:~] srun --jobid=myjobid top -bn1 -u $USER | grep R | grep -v top
  PID USER   PR  NI    VIRT    RES    SHR S  %CPU %MEM    TIME+  COMMAND
22843 demo   20   0 2272124 256048  72796 R  88.0  0.2  1:06.24  ansys.e
22849 demo   20   0 2272118 256024  72822 R  99.0  0.2  1:06.37  ansys.e
22838 demo   20   0 2272362 255086  76644 R  96.0  0.2  1:06.37  ansys.e
  PID USER   PR  NI    VIRT    RES    SHR S  %CPU %MEM    TIME+  COMMAND
 4310 demo   20   0 2740212 271096 101892 R 101.0  0.2  1:06.26  ansys.e
 4311 demo   20   0 2740416 284552  98084 R  98.0  0.2  1:06.55  ansys.e
 4304 demo   20   0 2729516 268824 100388 R 100.0  0.2  1:06.12  ansys.e
 4305 demo   20   0 2729436 263204 100932 R 100.0  0.2  1:06.88  ansys.e
 4306 demo   20   0 2734720 431532  95180 R 100.0  0.3  1:06.57  ansys.e

Tests de scalabilité

Une fois la tâche complétée, le temps d'exécution peut être obtenu du résultat de Job Wall-clock time de seff jobid. Cette valeur peut être utilisée pour effectuer des tests de scalabilité (par exemple, en passant de "#SBATCH --ntasks=8" à "#SBATCH --ntasks=16") et vous pouvez poursuivre en doublant le nombre de cœurs. De cette façon, les tâches nécessiteront moins de temps d'exécution, mais le temps d'attente pour être exécutées augmentera de manière importante, à moins que le groupe de recherche ne possède une allocation de ressources par voie de concours.

Documentation

Pour obtenir la dernière version complète de la documentation :

  1. Connectez-vous à gra-vdi.computecanada.ca avec tigervnc tel que décrit dans Nœuds VDI.
  2. Ouvrez une fenêtre terminal et lancez Workbench.
    • module load CcEnv StdEnv ansys
    • runwb2
  3. Dans le menu déroulant du haut, sélectionnez
    • Help -> ANSYS Workbench Help
  4. Lorsque la page ANSYS Help est affichée, cliquez sur
    • Home