• Aucun résultat trouvé

EMSL local API

Dans le document Calcul haute performance & chimie quantique (Page 127-131)

4.3.2 Du stockage des données

La prospection scientifique produit un grand nombre de résultats de-vant être stockés de façon pérenne. De plus leur stockage doit être com-plété par des meta-données suffisamment explicites pour se remémorer quelques années plus tard à quoi les données correspondent. L’extrac-tion des données doit également être facile pour pouvoir permettre d’ef-fectuer des calculs de post-traitement sur les jeux de données.

Le cas particulier de notre équipe a été l’application du benchmarkG2, visant à calculer les énergies d’atomisation de 55 molécules. L’énergie d’atomisation est l’énergie nécessaire pour rompre toutes les liaisons chimiques d’une molécule. Il s’agit donc de la différence d’énergie entre l’énergie de la molécule et la somme des énergies des atomes la consti-tuant. La distribution des erreurs par rapport aux valeurs de référence permet de trouver, parmi plusieurs stratégies, celle qui est la plus précise. Ainsi, pour chaque modification du protocole de calcul il est nécessaire de calculer les énergies des 55 molécules, et des différents atomes les constituant.

À l’heure où cette phrase est écrite, nous avons environ 10 000 va-leurs d’énergie. Cet ensemble de vava-leurs correspond à l’ensemble des hypothèses que nous avons testées. Maintenant, nous devons naviguer dans cette océan de données pour récupérer les informations utiles. Vu la quantité de données, l’utilisation de tableurs est illusoire. Heureuse-ment les bases de données relationnelles sont parfaiteHeureuse-ment adaptées à ce type d’utilisation. Elles sont constituées de tableaux reliés entre eux par des règles d’appartenance. Une syntaxe propre aux bases de données a été créée et permet la récupération aisée de données ne satisfaisant que certaines règles.

Ainsi j’ai créé l’utilitaire Python G2_API.py ([6]), utilisant le gestion-naire de base de donnéesSQLite.

Cet utilitaire permet de stocker aussi bien les données de référence que les données issues de différents calculs. Par exemple, les géométries expérimentales de toutes les molécules sont stockées, ainsi que les éner-gies de référence, la multiplicité de spin, les éneréner-gies de point zéro, etc. Ainsi, cet utilitaire permet d’une part de construire de façon automa-tique des fichiers d’entrée pour plusieurs programmes correspondant aux 55 molécules35

, mais il permet également de stocker les résultats des calculs et de filtrer et post-traiter les résultats (pour un exemple de sortie produite par cet utilitaire, voir laFigure 21.).

Un avantage de cet approche est le côté auto-suffisant et portable. En effet, avec cet utilitaire et le fichier de base de données, n’importe quel collaborateur a accès à toutes les données permettant la reproduction et

$ ./schindler.py list_run --method DMC --order_by mad --like_run_id 60

+---+---+---+---+---+---+

| Run_id | Method | Basis | Geo | Comments | mad |

+---+---+---+---+---+---+ | | | | | | kcal/mol | +---+---+---+---+---+---+ | 71 | DMC | cc-pVDZ | Experiment | 1M_Dets_NO_1k_Dets | 11.26+/-1.38 | | 114 | DMC | vtz-BFD | Experiment | 1M_Det | 9.26+/-1.24 | | 52 | DMC | cc-pVDZ | Experiment | Hartree-Fock | 8.48+/-1.04 | | 111 | DMC | vdz-BFD | Experiment | HF tau=0.01 | 8.00(99) | | 70 | DMC | cc-pVDZ | Experiment | 1M_Dets_NO_1_Det | 7.66+/-1.19 |

| 112 | DMC | vdz-BFD | Experiment | FCI, ci_threshold=1.e-4 | 7.39+/-3.68 |

| 108 | DMC | vdz-BFD | Experiment | Quantum Package | 7.18+/-1.00 |

| 75 | DMC | cc-pVDZ | Experiment | 1M_Dets_NO_1k_Dets(0.95Norme) | 7.01+/-1.95 | | 77 | DMC | cc-pVDZ | Experiment | 1M_Dets_NO_0.75Ecorr | 6.70+/-2.89 | | 64 | DMC | ANO-Roos-aug-DZ | Experiment | Hartree-Fock | 6.60+/-2.28 | | 72 | DMC | cc-pVDZ | Experiment | 1M_Dets_NO_1k_Dets(NO_det_atoms) | 5.32+/-1.35 |

| 116 | DMC | vtz-BFD | Experiment | 0.75_106_115 | 4.27+/-2.06 |

| 60 | DMC | ANO-GS_3z | Experiment | Toulouse Table 8 U 12 | 1.25(7) | +---+---+---+---+---+---+

Figure 21 –The API for the G2 in action

la vérification des résultats : les géométries, les méthodes utilisées, et les énergies obtenues36

.

La visualisation graphique via le site web plotly [117] a aussi été im-plémentée permettant une visualisation rapide et portable des données. 4.3.3 Interface graphique

Un assez grand nombre d’heures fut passé à la création d’une inter-face graphique. Plus exactement au choix technologique pour créer cette interface graphique. Les interfaces graphiques sont souvent écrites sui-vant le modèle MVC (modèle-vue-contrôleur). La vue est l’interface gra-phique en elle-même, ce que voit l’utilisateur, le modèle quant à lui cor-respond à l’ensemble des données – dans notre cas –, et le contrôleur fait la liaison entre les deux. Soit trois questions à se poser :

– Quel langage utiliser ?

– Quelle bibliothèque gèrera la partie graphique ?

– Comment faire communiquer entre elles les différentes parties de l’interface graphique ?

Nous avons en plus de ces points une contrainte supplémentaire assez forte : cette interface graphique doit pouvoir être lancée via un super-calculateur. Ce qui n’est pas une sinécure car d’une part les logiciels disponibles ne sont pas forcément des plus récents, et d’autre part nous n’avons pas les droits d’administrateur pour en installer de nouveaux.

langage. Au vu de mes affinités, il fut décidé de développer le ser-veur en Python. De plus l’interpréteur est disponible sur tous les super-calculateurs37

.

bibliothèque graphique. La technologie « standard » permettant la création d’interfaces graphiques enPythonestTkInterqui repose sur la technologieTcl/Tk. Malheureusement, cette technologie est assez primi-tive, rendant le développement assez long et fastidieux si l’on n’est pas maître de toutes ses arcanes ; ce qui était mon cas. De plus, d’un point de vue graphique cette bibliothèque crée des interfaces que le précédent millénaire n’aurait pas renié. Si l’on veut une interface plus graphique il faut se rabattre sur la technologie bien nommée Qt [119]38

. Les deux plus grands bindings sont les bibliothèquesPyQT[104] etPySide. Une pre-mière version de cette interface graphique fut écrite grâce à PyQT, avant que je ne m’aperçoive que la version deQtsur les supercalculateurs était suffisamment antédiluvienne pour rendre impossible l’exécution du pro-gramme et Qt est très difficilement installable – et c’est un euphémisme – sans droits d’administrateur.

Technologie web C’est à ce moment que j’ai réalisé qu’il existe une technologie d’interface graphique qui s’installe très rapidement, partout et sans heurts : les navigateurs web. En effet, les navigateurs servent avant tout à afficher de bien belle façon des éléments visuels. De plus

Firefox, comme d’autres, propose des versions portables utilisables à peu près n’importe où. Il nous suffit donc de créer un serveur web en Python afin de bénéficier de tous ces avantages ; ceci est facilité grâce aux web frameworks développés : l’un des plus populaire est Django [47]. Néanmoins, nous avons choisiFlask[105], car il s’agit d’un microframework et de ce fait il ne pèse pas bien lourd, a peu de dépendances et sa prise en main est très rapide (Code 15).

37. À partir de la version 2.6 du moins. 38. Prononcer "cute". . .

from flask import Flask app = Flask(__name__) @app.route(’/’)

def hello_world():

return ’Hello World!’ if __name__ == ’__main__’:

app.run()

(a)PythonFile $ python hello.py

* Running on http://127.0.0.1:5000/ (b)Execution trace

Dans le document Calcul haute performance & chimie quantique (Page 127-131)

Documents relatifs