Η υποβολή εργασιών επίλυσης που χρησιμοποιούν το λογισμικό Abaqus προϋποθέτει ότι υπάρχει ήδη ένα διαμορφωμένο μοντέλο στον τοπικό σας υπολογιστή και ενδεχομένως μια υπορουτίνα σε Fortran. Στο παράδειγμα παρακάτω το μοντέλο είναι το αρχείο plate_impact.inp
και η υπορουτίνα της Fortran είναι το αρχείο uniFiber.for
. Πρέπει λοιπόν να διαμορφώσετε ένα αρχείο με κάποιο όνομα, π.χ. abaqus-multi.sh
και να το προσαρμόσετε στα δεδομένα που αφορούν στο πρόβλημά σας.
#$ -M chfrag ΑΤ central.ntua.gr
βάζοντας το δικό σας email για να λαμβάνετε ειδοποιήσεις σχετικά με την πορεία της επίλυσης.WDIR=/mnt/home/chfrag/sge-tests/abaqus-multiprocessor
με τον κατάλογο εργασίας όπου θα βρίσκονται το μοντέλο, η υπορουτίνα και το αρχείο abaqus-multi.sh
.INPUT_FILENAME=$WDIR/plate_impact.inp
αντικαθιστώντας το plate_impact.inp
με το δικό σας μοντέλο.SUBROUTINE=uniFiber.for
με τη δική σας υπορουτίνα Fortran.JOBNAME=abaqus-test_${JOB_ID}
αντικαθιστώντας το abaqus-test_
με ένα άλλο όνομα που έχει νόημα για την επεξεργασία σας.CPUS=24
με τον αριθμό των επεξεργαστών που θα θέλατε να απασχοληθούν με την επίλυση. Προς το παρόν ο μέγιστος αριθμός είναι το 24, όμως για να μπορέσει αυτό να ισχύσει πρέπει υπάρχουν διαθέσιμες οι απαραίτητες άδειες (19 analysis tokens). Λιγότεροι επεξεργαστές χρειάζονται λιγότερα tokens αδειοδότησης (1 επεξεργαστής χρειάζεται 5 tokens). Ένημέρωση για τον τρέχοντα αριθμό των διαθέσιμων tokens υπάρχει εδώ. Ο τύπος που υπολογίζει τα απαραίτητα tokens \(t\) για \(n\) επεξεργαστές είναι \(t = \lfloor 5 \cdot n^{0.422} \rfloor \).#!/bin/bash
#
#$ -cwd
#$ -M chfrag ΑΤ central.ntua.gr
#$ -m bae
#$ -S /bin/bash
#$ -o out.txt
#$ -e err.txt
#$ -notify
source /usr/local/INTEL/composer_xe_2011_sp1.6.233/bin/compilervars.sh intel64
export LD_LIBRARY_PATH=/usr/local/INTEL/composer_xe_2011_sp1.6.233/composer_xe_2011_sp1.6.233/compiler/lib/intel64
PATH=/usr/local/ABAQUS/Commands/:$PATH
WDIR=/mnt/home/chfrag/sge-tests/abaqus-multiprocessor
INPUT_FILENAME=$WDIR/plate_impact.inp
JOBNAME=abaqus-test_${JOB_ID}
SUBROUTINE=uniFiber.for
CPUS=24
ABAQUS_ARGS=""
SCRATCH_DIR=/tmp
exit_gracefully() {
abaqus terminate job=$JOBNAME
echo Abaqus job $JOBNAME terminated
exit
}
trap exit_gracefully SIGUSR2
cd $WDIR
abaqus job=$JOBNAME input=$INPUT_FILENAME user=$SUBROUTINE cpus=$CPUS scratch=$SCRATCH_DIR $ABAQUS_ARGS
/bin/uname \-a
sleep 60
while [ -f ${JOBNAME}.lck ]; do
sleep 5
done