Attention ! Seuls certains calculs bénéficient avantageusement de la parallélisation. Mal employée, elle peut engendrer un surplus significatif de votre consommation en temps CPU (lire le chapitre consacré à l'utilisation de Gaussian en parallèle ainsi que le document reprenant les tests performances de Gaussian03 sur l'ancienne IBM Power4 Zahir).
module load gaussian
Attention ! Pour accéder à ce logiciel, il est nécessaire que votre login soit autorisé.A un instant donné, plusieurs versions de Gaussian peuvent être accessibles. Pour activer, connaître la version par défaut ou bien basculer d'une version à une autre utilisez la commande module.
Ci-dessous, un exemple de script permettant d'activer le logiciel Gaussian vous est proposé.
Pour pouvoir ensuite le soumettre en mode batch via LoadLeveler il sera évidemment nécessaire de
l'habiller à l'aide de directives.
Des exemples généraux de soumission en mode batch sont accessibles aux endroits suivant :
# Mode "bavard" du ksh
set -x
# Commande d'initialisation de Gaussian (version par défaut)
module load gaussian
# On se place dans le répertoire temporaire TMPDIR
cd ${TMPDIR}
# Copie dans le TMPDIR le ou les fichiers d'entrée situés
# dans le répertoire de soumission du job.
cp ${LOADL_STEP_INITDIR}/test.com ./test.com
# Appel de Gaussian g09 pour une simulation
time g09 < test.com > test.log
# Appel de Gaussian g03 pour une simulation
time g03 < test.com > test.log
# Liste les fichiers du répertoire de travail
ls -rtl
# Recopie le ou les fichiers de sortie dans le repertoire
# de soumission et sur la machine fichier Gaya.
cp test.log ${LOADL_STEP_INITDIR}/.
mfput test.log test.log
# Sauvegarde du fichier checkpoint sur la
# machine Gaya. On suppose ici que le fichier test.com
# comporte la directive
# %chk=/workgpfs/rech/lab/rlabNNN/test.chk
# où rlabNNN sont les sept caractères qui
# composent votre login (par ex. : rgau000)
mfput ${WORKDIR}/test.chk test.chk
RemarqueIl s'avère que Gaussian 09/03 n'est généralement pas très efficace sur plus de 4 processeurs. On vous demande donc de travailler avec un nombre maximum de 4 processeurs. Si vous souhaitez en utiliser plus, il est fortement conseillé de réaliser des tests pour en vérifier la pertinence. Vous trouverez plus d'informations dans ce document.
On veillera à ce que la directive Gaussian %NProcShared dans le fichier d'entrée
(test.com dans l'exemple) ait comme valeur la même que celle indiquée au niveau de la directive
LoadLeveler
#@ parallel_threads = n.
Pour connaître la mémoire disponible sur cette machine, on consultera le chapitre "Accès aux classes monoprocessus
multi-processus légers : (OpenMP/Pthreads)" de la
description des classes. La mémoire nécessaire au travail
est déclarée à LoadLeveler à l'aide des directives data_limit et stack_limit.
La mémoire consommée par Gaussian comprend une partie allouée dynamiquement, contrôlée par la
ligne de commande %mem
de Gaussian. Celle-ci fait partie de la catégorie "data" du point de vue de LoadLeveler.
Gaussian gère de façon interne un fichier dit checkpoint contenant différentes informations concernant un calcul :
Ce fichier est d'autant plus précieux qu'il est petit (sa taille est de quelques mégaoctets). On l'utilise en général comme fichier de redémarrage, afin de :
GUESS,
De nombreux mots-clé contrôlent le type d'informations qu'il est possible d'aller relire sur ce fichier
(par ex. : RESTART, GEOM=CHECKPOINT, GUESS=READ, CHKBAS, etc...).
Par défaut, ce fichier est créé, puis effacé ! Pour qu'il ne le soit pas et soit copié dans votre espace
${WORKDIR}, il suffit d'insérer en tête du fichier d'input adressé au logiciel
Gaussian la ligne suivante :
%chk=/workgpfs/rech/lab/rlabNNN/toto.chk
où rlabNNN sont les sept caractères qui composent votre login (par ex. : rgau000)
et toto.chk est un nom à choisir. Il est recommandé de sauvegarder ce fichier à la fin du travail
sur la machine Gaya (serveur de fichiers).
La fois d'après, il suffira de copier le fichier précédemment sauvegardé dans le répertoire de travail et d'insérer en tête du fichier de données une ligne comme celle indiquée ci-dessus pour pouvoir y relire les informations.
Exemple d'utilisation très simple :
On commence une étude en effectuant une optimisation de géométrie sur la molécule d'eau.
On prépare le fichier d'input water-opt.in suivant :
%chk=/workgpfs/rech/lab/rlabNNN/test.chk
#P OPT STO-3G TEST
Gaussian 03 Test Job 09
STO-3G BERNY OPTIMIZATION OF WATER
0 1
O
H 1 R
H 1 R 2 A
R 0.96
A 109.471221
N'hésitez pas à positionner le mode bavard dans le jeu de données de Gaussian (#P), utile à des fins de diagnostic
en cas de problèmes lors du déroulement du travail.
Le script de soumission comporte les commandes de sauvegarde des fichiers output et checkpoint sur la machine fichier Gaya :
# Commande d'initialisation de Gaussian en ksh (version par défaut)
module load gaussian
# On se place dans le répertoire temporaire TMPDIR
cd ${TMPDIR}
# Copie dans le TMPDIR le ou les fichiers d'entrée situés
# dans le répertoire de soumission du job.
cp ${LOADL_STEP_INITDIR}/water-opt.in ./water-opt.in
# Appel de Gaussian pour une simulation
g09 (ou g03) < water-opt.in > water-opt.out
# Liste les fichiers du répertoire de travail
ls -rtl
# Sauvegarde du fichier checkpoint sur la machine Gaya
mfput ${TMPDIR}/test.chk test.chk
# Sauvegarde du fichier output sur la machine Gaya
mfput water-opt.out water-opt.out
...
À la fin de l'exécution, on a dans le répertoire ${WORKDIR} de la machine de calcul et dans le
${HOME} de la machine fichier Gaya un fichier de checkpoint test.chk qui servira à
relancer la suite de la simulation.
Le logiciel Gaussian permet pour certains calculs d'utiliser en parallèle plusieurs processeurs de la machine de façon à diminuer le temps de restitution du travail. Les gains pouvant être obtenus dépendent fortement des calculs réalisés. Nous vous conseillons fortement de lire le document reprenant les tests de performances de Gaussian 03 sur l'ancienne machine Power4 Zahir.
Il est nécessaire de positionner (dans le fichier d'input de Gaussian) la directive %NProcShared
(Gaussian 03) pour définir le nombre maximum de processeurs disponibles pour ce travail (ou job).
%NProcShared ou %NProc doit être en accord avec le nombre de processeurs demandés dans
votre script de soumission :
#@ parallel_threads = 4
Si dans votre fichier de retour Gaussian, la ligne suivante apparaît :
PrsmSu: requested number of processors reduced to:
X ShMem 1 Linda.
où X prend une valeur entière, il faudra réduire le nombre de processeurs demandés dans
le travail Gaussian et accorder les directives de soumissions, ou parfois augmenter la mémoire demandée dans le
fichier d'input adressé au logiciel Gaussian.
Dans tous les cas, vérifiez le bon déroulement de votre travail et en particulier le nombre de processeurs réellement utilisés par rapport à celui demandé.
.