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

Περιγραφή

The Dakota (Design Analysis Kit for Optimization and Terascale Applications) toolkit provides a flexible, extensible interface between analysis codes and iteration methods.

Dakota 6.12

Massively Serial

Για το Massively Serial παράδειγμα θα χρησιμοποιήσουμε το Dakota toolkit για την παραμετρική υποβολή μίας σειριακής εργασίας Matlab.

Το script υποβολής της εργασίας θα έχει την ακόλουθη μορφή:

SLURM submission script
#!/bin/bash
#SBATCH --job-name=dakota-case1
#SBATCH --partition=batch
#SBATCH --time=10:00
#SBATCH --nodes=1
#SBATCH --tasks-per-node=8

module load gcc/9.2.0 mvapich2/2.3.4 dakota/6.12
module load matlab/R2022b

# Case 1: Run DAKOTA in parallel and launch M-1 = 5 parallel analysis
# jobs at once (use default scheduling; to run M = 6 jobs, see
# dakota_pstudy.in for peer static or peer dynamic scheduling)

srun dakota -i dakota-matlab.in -o dakota-matlab.out

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

# mkdir DAKOTA-6.12-case1
# cd DAKOTA-6.12-case1

Θα χρειαστεί να μεταφέρουμε στο directory DAKOTA-6.12-case1 τα παρακάτω αρχεία:

  • dakota-matlab.in: Input file για το Dakota toolkit, το οποίο περιγράφει την εργασία όσον αφορά τις μεταβλητές που θα χρησιμοποιηθούν, το πώς αυτές θα τροποποιούνται καθώς και την μέθοδο και το interface που θα χρησιμοποιηθεί. Αναλυτικές πληροφορίες σχετικά με τα αρχεία εισόδου του Dakota toolkit υπάρχουν διαθέσιμες στο Dakota Input Spec Summary.
  • driver-matlab.sh: Το script που περιγράφει την παραμετρική εργασία σε 3 στάδια (Pre-processing Phase, Execution Phase, Post-processing Phase).
  • mymfile.template: Template M-file με τις εντολές που θέλουμε να τρέξει το matlab, το οποίο θα τροποποιηθεί από το Dakota toolkit ώστε να τρέξει για τις παραμέτρους που θέλουμε να χρησιμοποιήσουμε.
  • myfact.m: Matlab function

Η υποβολή της εργασίας γίνεται με την εντολή sbatch <filename.sh> ως εξής:

# sbatch DAKOTA-6.12-case1.sh

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

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

# tail -f slurm-*.out
# cat dakota-matlab.out
# ls workdir*

Sequantial Parallel

Για το Sequantial Parallel παράδειγμα θα χρησιμοποιήσουμε το Dakota toolkit για την εκτέλεση μίας παράλληλης εργασίας OpenFOAM που θα τρέξει με μία διαφορετική παράμετρο εισόδου η οποία θα τροποποιείται με βάση το βήμα που καθορίζουμε στο input file του Dakota toolkit.

Το script υποβολής της εργασίας θα έχει την ακόλουθη μορφή:

SLURM submission script
#!/bin/bash
#SBATCH --job-name=dakota-case2
#SBATCH --partition=batch
#SBATCH --time=10:00
#SBATCH --nodes=1
#SBATCH --tasks-per-node=8

module load gcc/9.2.0 mvapich2/2.3.4 dakota/6.12

module load openfoam/1906_200312

dakota -i dakota-of.in -o dakota-of.out

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

# mkdir DAKOTA-6.12-case2
# cd DAKOTA-6.12-case2

Θα χρειαστεί να μεταφέρουμε στο directory DAKOTA-6.12-case2 τα παρακάτω αρχεία κατά αντιστοιχία με το προηγούμενο παράδειγμα:

Επιπλέον, θα χρειαστεί να αντιγράψουμε ένα από τα παραδείγματα (tutorials) του OpenFoam. Για το σκοπό αυτό διαμορφώνουμε κατάλληλα το περιβάλλον χρήσης και αντιγράφουμε τα δεδομένα εισόδου του παραδείγματος cavity μέσα στο φάκελο:

# module load gcc/9.2.0 mvapich2/2.3.4 openfoam/1906_200312
# cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity/* .

Η υποβολή της εργασίας γίνεται με την εντολή sbatch <filename.sh> ως εξής:

# sbatch DAKOTA-6.12-case2.sh

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

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

# tail -f slurm-*.out
# cat dakota-of.out
# ls workdir*

Dakota toolkit examples

Για να χρησιμοποιήσουμε τα παραδείγματα του Dakota toolkit, μπορούμε να ενεργοποιήσουμε τα αντίστοιχα modules:

# module load gcc/9.2.0 mvapich2/2.3.4 dakota/6.12

και στην συνέχεια να χρησιμοποιήσουμε τα αρχεία εισόδου που βρίσκονται στα directories:

  • $DAKOTA_ROOT/share/dakota/examples/users.
  • $DAKOTA_ROOT/share/dakota/examples/training/exercises