Fire Dynamics Simulator est un logiciel de dynamique des fluides numérique (CFD) open source utilisé pour simuler la propagation du feu et de la fumée. Il utilise un modèle de simulation des grandes échelles (LES) appliqué aux écoulements à faible vitesse avec transport thermique. Il est également fourni avec Smokeview, un module de visualisation.
Voici les versions actuellement disponibles sur Qarnot :
Si vous êtes intéressé par une autre version, veuillez nous envoyer un e-mail à qlab@qarnot.com.
Avant de démarrer un calcul avec le SDK Python, quelques étapes sont nécessaires :
En plus du SDK Python, Qarnot fournit des SDKs pour C# et Node.js ainsi qu'une ligne de commande.
Ce cas test est basé sur une simulation d'incendie du Temple romain de Portonus.
Vous pouvez télécharger le dossier du cas ici, qui contient le cas test sous forme de fichier .fds
. Vous devez le placer dans le même dossier que le script pour lancer le calcul. Veuillez noter qu'il doit être décompressé avant de pouvoir être utilisé sur Qarnot.
Une fois que tout est configuré, le script suivant doit être utilisé pour démarrer le calcul.Assurez-vous d'avoir copié votre jeton d'authentification dans le script (à la place de YOUR_SECRET_TOKEN
) pour pouvoir lancer la tâche sur Qarnot.
fds.py
#!/usr/bin/env python
"""Script to run an FDS sample computation on Qarnot cloud"""
import qarnot
from qarnot.scheduling_type import OnDemandScheduling
# =============================== Setup Variables =============================== #
# To change
CLIENT_TOKEN="YOUR_SECRET_TOKEN"
# If needed
TASK_NAME=f"RUN SAMPLE FDS"
FDS_VERSION="6.7.9"
NB_INSTANCES=1
# =============================================================================== #
# Create a connection, from which all other objects will be derived
conn = qarnot.connection.Connection(client_token=CLIENT_TOKEN)
# Create a task
task = conn.create_task(TASK_NAME, "fds", NB_INSTANCES)
# Create the input bucket and synchronize with a local folder
input_bucket = conn.create_bucket('fds-temple')
input_bucket.sync_directory('temple')
task.resources.append(input_bucket)
# Create a result bucket and attach it to the task
output_bucket = conn.create_bucket(f'fds-temple-out')
task.results = output_bucket
# Configure task parameters
task.constants["DOCKER_TAG"] = FDS_VERSION
task.constants["FDS_CMD"] = "mpiexec -np 16 fds temple_16_MPI_PROC.fds"
# Number of processes per node in the mpihost file, e.g. "26" out of 28 cores.
# task.constants['SETUP_CLUSTER_NB_SLOTS'] = "26"
# Define interval time in seconds when your simulation will be saved to your bucket.
task.snapshot(900)
# OnDemand setup
# task.scheduling_type=OnDemandScheduling()
# ---------- Optional ----------
OUTPUT_DIR="temple-out"
task.submit()
# The following will download result to the OUTPUT_DIR
# It will also print the state of the task to your console
LAST_STATE = ''
SSH_TUNNELING_DONE = False
while not SSH_TUNNELING_DONE:
if task.state != LAST_STATE:
LAST_STATE = task.state
print(f"** {LAST_STATE}")
# Wait for the task to be FullyExecuting
if task.state == 'Success':
print(f"** {LAST_STATE}")
task.download_results(OUTPUT_DIR, True)
SSH_TUNNELING_DONE = True
# Display errors on failure
if task.state == 'Failure':
print(f"** Errors: {task.errors[0]}")
SSH_TUNNELING_DONE = True
Pour lancer ce script, copiez simplement le code précédent dans un script Python, placez-le au même niveau que le dossier temple. Votre arborescence de fichiers devrait ressembler à ceci :
├─ temple/
│ ├─ temple_16_MPI_PROC.fds
├─ run-fds.py
Launching the test-case
Voici un exemple de la manière d'exécuter une simulation FDS avec SSH et VNC activés sur la plateforme.Avec SSH, vous pouvez interagir avec vos nœuds via la ligne de commande, et avec VNC, vous pouvez avoir une visualisation graphique.
Si vous souhaitez vous connecter via SSH, vous aurez besoin d'une clé publique SSH. Vous pouvez en créer une en suivant ce tutoriel.
#!/usr/bin/env python
"""Script to run an FDS sample computation on Qarnot cloud"""
import qarnot
from qarnot.scheduling_type import OnDemandScheduling
# =============================== Setup Variables =============================== #
# To change
CLIENT_TOKEN="YOUR_SECRET_TOKEN"
SSH_PUBLIC_KEY="YOUR_SSH_PUBLIC_KEY"
# If needed
TASK_NAME=f"RUN SAMPLE FDS VNC"
FDS_VERSION="6.7.9"
NB_INSTANCES=1
NO_EXIT="false"
# =============================================================================== #
# Create a connection, from which all other objects will be derived
conn = qarnot.connection.Connection(client_token=CLIENT_TOKEN)
# Create a task
task = conn.create_task(TASK_NAME, "fds-vnc-ssh", NB_INSTANCES)
# Create the input bucket and synchronize with a local folder
input_bucket = conn.create_bucket('fds-temple')
input_bucket.sync_directory('temple')
task.resources.append(input_bucket)
# Create a result bucket and attach it to the task
output_bucket = conn.create_bucket(f'fds-temple-out')
task.results = output_bucket
# Configure task parameters
task.constants["DOCKER_TAG"] = FDS_VERSION
task.constants["FDS_CMD"] = "mpiexec -np 16 fds temple_16_MPI_PROC.fds"
task.constants['DOCKER_SSH'] = SSH_PUBLIC_KEY
# Set to 'true' to keep cluster alive once your simulation is done.
task.constants['NO_EXIT'] = NO_EXIT
# Number of processes per node in the mpihost file, e.g. "26" out of 28 cores.
# task.constants['SETUP_CLUSTER_NB_SLOTS'] = "26"
# Define interval time in seconds when your simulation will be saved to your bucket.
task.snapshot(900)
# OnDemand setup
# task.scheduling_type=OnDemandScheduling()
task.submit()
Pour lancer le calcul sur Qarnot, enregistrez le code ci-dessus en tant que script Python dans votre répertoire de travail. Avant de l'exécuter, assurez-vous de mettre à jour les constantes suivantes au début du script :
MY_SECRET_TOKEN
par votre jeton d'authentification réel.SSH_PUBLIC_KEY
par votre clé SSH réelle.Et maintenant, vous pouvez exécuter python3 run-vnc-ssh.py
.
Sur la page de la simulation, vous pouvez surveiller l'état de vos instances, les journaux ou le temps d'exécution et vérifier la configuration de votre tâche, telle que le nom du profil, la version de FDS ou votre clé SSH.
Dans le cas d'une tâche SSH, l'adresse IP et le port se trouvent dans la section "Port Forward".
Vos résultats seront stockés dans le bucket fds-temple-out et peuvent être récupérés de trois manières :
download_results
du SDK Python.Vous devriez également avoir un dossier de résultats dans le bucket de sortie et sur votre ordinateur, contenant tous les résultats numériques. Vous pouvez ouvrir le fichier IMP_TEMPLE.smv
dans Smokeview.
Que ce soit avec VNC sur Qarnot ou sur votre ordinateur, utilisez simplement la commande suivante dans un terminal : smokeview IMP_TEMPLE.smv
.
Veuillez noter le lien VNC dans la section des journaux, que vous pouvez utiliser pour accéder à votre tâche avec une visualisation graphique.
Pour générer des images des résultats, utilisez simplement l'option render
dans Smokeview.
C'est tout ! Si vous avez des questions, veuillez contacter qlab@qarnot.com et nous vous aiderons avec plaisir !