Utilisation de Molcas à l'IDRIS


HD/PC

Introduction

Molcas est un logiciel de chimie quantique de type ab initio développé à l'université de Lund (Suède). Molcas a été conçu pour permettre un traitement très précis des problèmes de structure électronique, aussi bien pour l'état fondamental que pour les états excités, grâce à une approche de type multiconfigurationnelle. Molcas comprend des codes de type Complete Active Space CASSCF et RASSCF, des codes de type Multireference Configuration Interaction MRCI, ainsi que des codes fondés sur la théorie des perturbations au second ordre CASPT2. Molcas comprend également des codes pour l'étude des propriétés moléculaires, la modélisation des effets de solvant, les moments dipolaires de transition en spectroscopie, les transferts d'électrons, etc.

Disponibilité

Les versions 7.2 et 7.6 séquentielles sont disponibles sur la machine IBM Vargas.

Documentation

On dispose :

Distribution

Sur les machines de calcul, les diverses versions de Molcas sont installées sous le répertoire /usr/local/prod/MOLCAS. On trouvera les sous-répertoires correspondant à chaque version (cf. fichier README) et sous chacun d'eux, les sous-répertoires habituels de Molcas :

  1. bin
    contient tout ce qui est nécessaire en vue d'une exécution de Molcas, à savoir :
    • des programmes exécutables, comme caspt2, mrci, etc.,
    • les messages d'information associés à ces programmes, comme caspt2.MsgDB, mrci.MsgDB, etc.
    • des scripts appelant automatiquement ces programmes, comme automolcas, structure, etc.
    • des bases de données comme ABDATA, BASDATA, RYSRW, etc.

  2. doc
    contient entre autres, le manuel au format Pdf mentionné au chapitre précédent.

  3. doc/examples
    contient tous les fichiers associés aux exemples présentés dans le manuel ou le chapitre Molcas Tutorial and Examples.

  4. doc/manual/tutorials
    contient tous les fichiers associés aux exemples du didacticiel présenté dans le manuel Molcas Tutorial and Examples.

  5. basis_library
    contient les bases connues de Molcas.

Utilisation : présentation de la chaîne Molcas

Molcas se présente comme un ensemble de programmes exécutables communiquant entre eux via des fichiers. Une exécution comporte en général plusieurs étapes, par exemple une étape de calcul d'intégrales, une étape SCF, une étape Post-SCF et une étape de détermination de propriétés.

Pour chaque étape, il faut préparer un fichier de données (input) contenant les mots-clé décrivant le travail demandé. La liste des mots-clé correspondant à chaque programme est donnée dans le manuel Molcas User's Guide.

Outre ce fichier de données, d'autres fichiers sont utilisés ; ils sont écrits à une étape et utilisés lors d'une étape ultérieure. Afin que la communication de ces fichiers entre les différentes étapes soit possible, Molcas utilise un nom symbolique pour chacun de ces fichiers. C'est ainsi par exemple que le programme SEWARD crée en sortie le fichier d'intégrales nommé ORDINT qui sera relu sous ce nom par le programme SCF.

La liste des fichiers gérés par Molcas est donnée dans le manuel/chapitre Molcas User's Guide.

Utilisation : variables d'environnement générales

Deux variables d'environnement générales sont utilisées par Molcas :
  1. La variable $MOLCASMEM
    Molcas sait gérer l'allocation dynamique de mémoire : au fur et à mesure des besoins Molcas s'alloue des blocs de mémoire mais il le fait jusqu'à atteindre une certaine limite définie par cette variable :
    • si elle n'est pas définie, Molcas s'alloue 32 mégaoctets de mémoire dynamique,
    • si elle est définie et vaut 0, Molcas s'alloue toute la mémoire disponible, sans toutefois dépasser la limite de 128 mégaoctets,
    • si elle est définie et non nulle, Molcas s'alloue exactement ce nombre de mégaoctets.

    Note : les limites mémoire en batch et en interactif sont généralement indiquées dans la news class de chaque machine de calcul.

    Par exemple, supposons qu'en interactif sur une machine donnée nous soyons limités en mémoire à 64 mégaoctets. On pourrait alors fixer cette variable à 48 (pour laisser un peu de place pour les tableaux alloués statiquement par Molcas). Ainsi pour utiliser 48 mégaoctets de mémoire, en Korn shell, faites :

      export MOLCASMEM=48
      
    En réalité sur les machines récentes, la mémoire disponible est plus importante et on peut donc monter bien plus haut (jusqu'à 16Go sur Vargas en mode d'adressage 64 bits). Pour plus d'information, consultez le document
    "Vargas : gestion de la mémoire".

  2. La variable $MOLCASDISK
    Certains des fichiers écrits par Molcas peuvent atteindre une taille respectable. Or sur la plupart des systèmes courants, il existe une taille limite que ne peuvent pas dépasser les fichiers. Molcas parvient à contourner cette limite en découpant les gros fichiers en morceaux (file splitting), chacun des morceaux étant de taille inférieure à cette taille limite (exprimée en megaoctets).

    En mettant cette variable à la valeur 0, Molcas considérera que la taille limite d'un fichier est de 200 gigaoctets et découpera les fichiers plus gros en morceaux. C'est donc cette valeur qui est recommandée.

    Pour obtenir cette valeur, en Korn shell, on pourra faire :

      export MOLCASDISK=0
      

Utilisation : variables d'environnement propres à un calcul

  1. La variable $WorkDir
    Elle indique le répertoire de travail où se trouveront tous les fichiers intermédiaires. Elle doit être impérativement définie. En général, à l'IDRIS il est recommandé qu'elle pointe sur un répertoire temporaire $TMPDIR pour des raisons d'espace disponible et de performance.
      export WorkDir=$TMPDIR/molcas.$$
      mkdir $WorkDir
      
    Dans cette définition barbare, $$ correspond au numéro du processus courant. On définiera ainsi un sous-répertoire dont le nom est de la forme molcas.12345.

    Note : l'utilisation du sous-répertoire molcas.$$ dont le nom change à chaque fois (puisqu'il dépend du numéro de processus qui change à chaque fois), garantit que l'on n'utilisera pas par erreur des fichiers provenant d'un autre calcul.

  2. La variable $Project
    Elle doit être positionnée impérativement. Elle définit le nom du projet qui est une chaîne de caractères qui caractérise le calcul en cours et dont la valeur est laissée à votre libre choix.

    Par exemple, pour choisir HF comme nom de projet, en bash, on pourra faire :

      export Project=HF
      
    Cette variable permet également de définir le nom véritable des fichiers générés par Molcas. En effet, on a vu ci-dessus que Molcas travaillait avec des noms de fichiers symboliques. En fait, il effectue une correspondance entre ces noms symboliques et des noms véritables, formés de deux qualifieurs.

    La variable $Project définit le premier qualifieur de ces noms de fichiers. Le second qualifieur des fichiers (l'extension) dépend du nom symbolique. Par exemple, si le préfixe choisi est HF, le fichier de nom symbolique ORDINT mentionné ci-dessus correspondra en fait au nom /u/rech/lab/rlab001/HF.OrdInt.

    La liste des extensions utilisées par Molcas est donnée dans le manuel Molcas User's Guide.

  3. La variable $CurrDir
    Elle n'est pas du tout imposée par Molcas, mais il est d'usage de la définir pour désigner le répertoire des fichiers permanents. En effet, le répertoire $WorkDir, défini plus haut, désigne un répertoire de travail, c'est-à-dire un répertoire destiné à contenir tous les fichiers générés par Molcas au cours du calcul, mais qui sera entièrement effacé à la fin de celui-ci. En général, on dispose également d'un répertoire qui contient avant le lancement du calcul les fichiers de données pour les différentes étapes et où l'on rangera à la fin du calcul les fichiers de sortie que l'on veut conserver. C'est le rôle de ce répertoire $CurrDir qui est le plus souvent un sous-répertoire du répertoire $HOME. Par exemple, si on veut utiliser à cette fin le sous-répertoire molcas du répertoire $HOME, en Korn-shell, on fera :
      CurrDir=$HOME/molcas
      

    Note : comme cette variable n'est pas utilisée par Molcas, il est inutile de l'exporter.

Utilisation : exécution d'une étape Molcas

Note: Les différentes versions de ce produit ne sont accessibles qu'en mode mono-processeur. L'installation en mode parallèle présente trop de problèmes et lorsqu'elle aboutit les performances obtenues à l'exécution sont très médiocres.

Avant toute utilisation de Molcas, il est nécessaire de l'activer au moyen de la commande :
vargas-rlab000> module load molcas
La commande précédente permet de charger la version par défaut de Molcas. Si vous désirez connaître les différentes versions disponibles, consultez la notice de la commande
module.

Utilisation : exemple récapitulatif en interactif

Comme tout cela est un peu complexe, nous allons l'illustrer sur un exemple complet portant sur la molécule HF où nous allons enchaîner les étapes suivantes : nous allons calculer les intégrales à l'aide de seward, nous allons effectuer un calcul SCF à l'aide de scf, puis un calcul de type RASSCF à l'aide de rasscf et enfin un calcul CASPT2 à l'aide de caspt2, à l'issue duquel nous sauvegarderons les orbitales moléculaires générées. Nous supposons que nous avons préparé dans le répertoire $HOME/molcas des fichiers de données pour les différentes étapes (et que nous les avons nommés selon la terminologie suivante : projet.etape.input, par exemple HF.scf.input) et que c'est dans ce répertoire que nous voulons récupérer le fichier d'orbitales.
#---Phase 1 : activation de molcas
module load molcas

#---Phase 2 : Préparation de l'environnement

# On demande 256 mégaoctets de mémoire dynamique
export MOLCASMEM=256

# Les fichiers de plus de 20   gigaoctets seront découpés
export MOLCASDISK=20000

# Le répertoire de travail
export WorkDir=$TMPDIR/molcas.$$

# Le nom du projet
export Project=HF

# Le répertoire permanent
CurrDir=$HOME/molcas

# On crée le répertoire de travail et on s'y place
mkdir $WorkDir
cd $WorkDir

#--- Phase 3 : Exécution proprement dite des 4 étapes Molcas

molcas $CurrDir/$Project.seward.input
molcas $CurrDir/$Project.scf.input
molcas $CurrDir/$Project.rasscf.input
molcas $CurrDir/$Project.caspt2.input

# Sauvegarde du fichier d'orbitales dans le répertoire permanent
cp $Project.Pt2Orb $CurrDir

# Liste des fichiers du répertoire temporaire
ls -lrt

Utilisation : soumission d'un travail en traitement par lot

Molcas étant un gros consommateur de ressources, à la fois au niveau temps de calcul, entrées-sorties et mémoire, les limitations du mode interactif à l'IDRIS ne permettent de traiter que des petits tests. Dès que l'on devra traiter un cas réaliste, il faudra passer par le système NQS ou LoadLeveler suivant la machine.

Il faut commencer par préparer un script analogue à celui présenté au-dessus. Il commence par quelques directives spéciales destinées au système LoadLeveler sur machine IBM.

Voici un exemple complet sur la machine IBM Vargas.

# @ job_name         = Test_Vargas
# @ wall_clock_limit = 01:00:00
# @ data_limit       = 2Gb
# Fichier de sortie standard du travail       
# @ output           = $(job_name).$(jobid)
# Fichier de sortie d'erreur du travail
# @ error            =  $(job_name).$(jobid)
# Pour recevoir un message informatif de fin de job
# @ notification     = complete 
# @ queue                   
# Mode "bavard" du shell
#set -v
echo "Job batch de test de MOLCAS sur Vargas via LoadLeveler"
echo "====================================================="
date
#
# Activation de molcas
module load molcas
#
#
# Préparation de l'environnememt
#
#------------------ Définitions impératives ------------------------
#
#---Le nom du projet
export Project=water
#
#---Répertoire de travail 
export WorkDir=$TMPDIR/MOLCAS.$$
echo  "WorkDir=$WorkDir"
mkdir $WorkDir
#-------------------- Définitions recommandées ----------------------
#
#---Sauvegarde du répertoire courant de travail
export CurrDir=$LOADL_STEP_INITDIR
echo  "CurrDir=$CurrDir"
#
#---On demande 256Mb de mémoire
export MOLCASMEM=256
#
#---Découpage des fichiers de plus de 200Gb
export MOLCASDISK=0 
#
cd $WorkDir
#
#-----------------------------------------------------------
#---Première étape (génération des intégrales)
molcas $CurrDir/$Project.seward.input
#
#---Deuxième étape (Hartree-Fock Self-Consistent Field -SCF)
molcas $CurrDir/$Project.scf.input
#
#---Troisième étape (Restricted Active Space Self Consistent Field calc.)
molcas $CurrDir/$Project.rasscf.input
#
#---Quatrième étape (Dynamic molecular correlation energy calc.)
molcas $CurrDir/$Project.caspt2.input
#
ls -ltr
cd $CurrDir
rm -r $WorkDir
date
echo "Fin du job de test de MOLCAS"

Une fois ce script préparé, il n'y a plus qu'à le soumettre par la commande llsubmit et à attendre que le travail correspondant soit sélectionné et terminé.

llsubmit mon_script
Pour en savoir plus sur le système le système de soumission au batch et plus généralement sur les modalités d'utilisation des machines de calcul de l'IDRIS, consultez :


© CNRS - IDRIS, 13/01/2012