Μετάβαση στο περιεχόμενο

Περιγραφή

ANSYS Fluent software is the most-powerful computational fluid dynamics (CFD) tool available, empowering you to go further and faster as you optimize your product's performance. Fluent includes well-validated physical modeling capabilities to deliver fast, accurate results across the widest range of CFD and multiphysics applications.

Διαχείριση αδειών

Το πανεπιστήμιο διαθέτει συγκεκριμένο αριθμό αδειών για τη χρήση του Ansys, επισκόπηση των οποίων μπορεί να γίνει από ένα login node (aristotle.it.auth.gr) μέσω της εντολής:

# module load ansys
# lmutil lmstat -c 1055@ansys.it.auth.gr -f anshpc

Σε αρκετές περιπτώσεις και ιδιαίτερα όταν οι εργασίες που υποβάλλονται απαιτούν πολλούς πόρους (nodes και cores), καθώς ο scheduler (slurm) δεν λαμβάνει υπόψιν τις διαθέσιμες άδειες λογισμικού ενδέχεται μία εργασία να τερματίσει απροσδόκητα λόγω μην επαρκών αδειών anshpc στο license server.

Μια λύση για τη παράκαμψη της συγκεκριμένης ιδιαιτερότητας είναι η χρήση της μεταβλητής #SBATCH --licenses=ansys@ansys.it.auth.gr:X όπου μπορεί να οριστεί και ο απαιτούμενος αριθμός αδειών X που επιθυμούμε για να την εργασία που θέλουμε να υποβάλουμε. Ο αριθμός αυτός υπολογίζεται εαν εκτιμήσουμε τον συνολικό αριθμό των πυρήνων (nodes*tasks_per_node) που ζητάμε απο την εργασία και αφαιρέσουμε τους 4 πυρήνες για τους οποίους δεν χρεώνει ο license manager καμία άδεια.

Παράδειγμα

Για ένα job με τις παρακάτω ρυθμίσεις:

#SBATCH --ntasks-per-node=16
#SBATCH --nodes=2
ο συνολικός αριθμός αδειών που θα χρειαστεί είναι 2*16-4=28, τον οποιο και ορίζουμε με την παρακάτω μεταβλητή:
#SBATCH --licenses=ansys@ansys.it.auth.gr:28
Αυτό δεσμεύει εσωτερικά το slurm από το να ξεκινήσει το job εως ότου υπάρχουν όντως διαθέσιμες άδειες στον license server προκειμένου να ξεκινήσει.

ANSYS Fluent 2024R1

Παλαιότερες εκδόσεις

Για να χρησιμοποιήσετε κάποια παλιότερη έκδοση του ANSYS Fluent θα χρειαστεί να τροποποιήσετε στα παρακάτω την module load εντολή κατάλληλα (π.χ. module load ansys/2022R2 για την έκδοση 2022R2 κοκ)

Παράδειγμα χρήσης

Στο $HOME μας στο login node, δημιουργούμε ένα νέο φάκελο όπου τοποθετούμε τα αρχεία εισόδου και το script υποβολής της εργασίας.

# mkdir FLUENT-2024R1-case
# cd FLUENT-2024R1-case

Μέσα στο φάκελο τοποθετούμε τα αρχεία εισόδου elbow_journal.jou και elbow0.cas.gz.

Το script που θα χρησιμοποιήσουμε εμφανίζεται παρακάτω:

SLURM submission script
#!/bin/bash
#SBATCH --job-name=FLUENT-2024R1-case
#SBATCH --partition=batch
#SBATCH --ntasks-per-node=20
#SBATCH --nodes=1
#SBATCH --licenses=ansys@ansys.it.auth.gr:16
#SBATCH --time=1:00:00

module load ansys/2024R1

fluent 3ddp -g -ssh -t$SLURM_NTASKS -i elbow_journal.jou

Αποθηκεύουμε τα περιεχόμενα σε ένα νέο αρχείο (έστω FLUENT-2024R1-case.sh) και το υποβάλλουμε προς εκτέλεση με την εντολή:

# sbatch FLUENT-2024R1-case.sh

Παρακολουθούμε με squeue την εξέλιξη της εργασίας.

Eφόσον η εργασία έχει εκκινήσει μπορούμε να ελέγχουμε την πρόοδο της επίλυσης μέσω των αρχείων εξόδου. Π.χ.:

# tail -f *.out

Εργασίες Fluent σε περισσότερα από ένα nodes

Για την εκτέλεση εργασιών Fluent σε περισσότερα του ενός nodes, θα χρειαστεί να εφαρμόσουμε ορισμένες τροποποιήσεις στο script υποβολής, δημιουργώντας και ένα hostfile όπου ορίζονται τα hostnames των nodes όπου θα τρέξει το λογισμικό. Αποθηκεύουμε τα περιεχόμενα σε ένα νέο αρχείο (έστω FLUENT-2024R1-distributed-case.sh).

SLURM submission script
#!/bin/bash
#SBATCH --job-name=FLUENT-2021R1-parallel-case
#SBATCH --ntasks-per-node=20
#SBATCH --nodes=2
#SBATCH --licenses=ansys@ansys.it.auth.gr:36
#SBATCH --time=30:00

module load ansys/2024R1

#CREATE HOSTFILE
srun hostname > ${SLURM_JOBID}.hostfile

#RUN FLUENT
fluent 3ddp -g -ssh -t $SLURM_NTASKS -cnf=${SLURM_JOBID}.hostfile -i elbow_journal.in

#AS SOON AS RUN IS COMPLETE, DELETE HOSTFILE
rm -f ${SLURM_JOBID}.hostfile
Επιλογή δικτυακής διασύνδεσης των nodes

Το Ansys Fluent επιτρέπει στην υλοποίηση του MPI να επιλέξει το βέλτιστη διαθέσιμη δικτυακή διασύνδεση μεταξύ των nodes. Στην περίπτωση των partitions rome και batch, επιλέγεται η διασύνδεση InfiniBand που επιτρέπει επικοινωνίες υψηλής ταχύτητας μεταξύ των nodes. Μπορούμε εναλλακτικά να επιλέξουμε απευθείας την διασύνδεση InfiniBand, προσθέτοντας στην εντολή του fluent το option -pib.

Εργασίες Fluent σε GPU node

Fluent GPU Solver

  • Ο Fluent GPU Solver επεκτείνεται σε κάθε νεότερη έκδοση ώστε να ενσωματώσει τις λειτουργίες που υπάρχουν στον αντίστοιχο CPU Solver.
  • Ξεκινώντας το Fluent με ενεργοποιημένο τον Native GPU Solver, εμφανίζονται μη-διαθέσιμα ακόμη πεδία (grayed-out). Επιπλέον, το Fluent θα αλλάξει σε default ορισμένα settings και θα το εμφανίσει στην console (terminal).
  • Με δοκιμή και σφάλμα και ελέγχοντας τα errors/warnings που εμφανίζονται, μπορείτε να κρατήσετε μόνο τα boundary conditions/models/report definitions/κλπ που υποστηρίζονται.

Για την εκτέλεση εργασιών Fluent σε GPU μπορούμε να χρησιμοποιήσουμε το αρχείο εισόδου pipe.cas.h5 και το παρακάτω journal file pipe_journal_gpu.jou:

Fluent GPU journal
parallel/gpgpu/select 0
parallel/gpgpu/show
rc pipe.cas.h5
it 150 
wd pipe.dat.h5 
exit 
yes

Επιπλέον, για να επιλέξουμε να εκτελεστεί η εργασία σε ένα GPU node, θα πρέπει να τροποποιήσουμε το script υποβολής FLUENT-2024R1-gpu-case.sh, όπως φαίνεται παρακάτω:

SLURM submission script
#!/bin/bash
#SBATCH --job-name=FLUENT-2024R1-gpu-case
#SBATCH --partition=gpu
#SBATCH --gres=gpu:4
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=1
#SBATCH --time=1:00:00

module load ansys/2024R1

time fluent 3ddp -g -gpu -ssh -i pipe_journal_gpu.jou

ΠΡΟΣΟΧΗ

Στο παραπάνω παράδειγμα, το Fluent εκτιμά σωστά τον αριθμό των δεσμευμένων GPU και τις χρησιμοποιεί όλες. Αν διαπιστώσετε ότι αυτό δεν συμβαίνει στην εργασία σας, μπορείτε να αντικαταστήσετε το flag -gpu στην τελευταία εντολή με ένα από τα εξής: - -gpu=0,1,2,3, δίνοντας τα ID των GPU που θα χρησιμοποιηθούν. Η αρίθμηση αναμένεται να ξεκινά από το 0 και να αυξάνεται κατά 1, όμως καλό είναι να επιβεβαιώσουμε τα ID προσθέτοντας στο journal την γραμμή parallel/gpgpu/show. - -t4 -gpgpu=4-t$SLURM_GPUS -gpgpu=$SLURM_GPUS, χρησιμοποιώντας την αντίστοιχη παράμετρο slurm). Προσοχή, τα flag -t και -gpgpu χρειάζονται υποχρεωτικά τον αριθμό των GPU, αλλιώς θα χρησιμοποιηθεί μόνο μία. Σε κάθε περίπτωση, προκειμένου να αποφευχθεί η σπατάλη πόρων, προτείνεται πριν στείλετε κάποιο μεγάλο job να στείλετε μια μικρή δοκιμαστική εργασία για να ελέγξετε την χρήση των GPU με την βοήθεια της εντολής nvidia-smi όπως περιγράφεται στο Ερώτημα 14 του FAQ.

Γραφικό Περιβάλλον

Για να χρησιμοποιήσουμε το γραφικό περιβάλλον του Ansys στην συστοιχία μπορούμε να επισκεφτούμε με έναν browser την σελίδα: https://hpc.auth.gr και να ακολουθήσουμε τα παρακάτω βήματα:

  1. Από το menu επιλέγουμε Interactive Apps -> ANSYS Workbench

  2. Στην συνέχεια επιλέγουμε στην φόρμα την έκδοση του Ansys, το χρονικό διάστημα (σε ώρες) και τον αριθμό των CPU cores που θέλουμε να χρησιμοποιήσουμε:

    Ansys Workbench Form

  3. Eφόσον η εργασία ξεκινήσει, μπορούμε να επιλέξουμε Launch ANSYS Workbench.

  4. Αφού ανοίξουμε το Workbench, μπορούμε να επιλέξουμε το Fluent από το Toolbox menu με drag and drop στο Project Schematic.

    Ansys Fluent

  5. Με double clik στην επιλογή setup θα ξεκινήσει το Fluent Launcher. Σε περίπτωση που επιλέξουμε Parallel processing, ο αριθμός των Solver Processes θα πρέπει να συμφωνεί με τον αριθμό των αριθμό των CPU cores που έχουμε καθορίσει στο βήμα 2.

    Ansys Fluent