Ouvrons une petite discussion sur la chimie computationnelle!
J'ai installé ce week-end GAMESS sur mon Raspberry Pi (modèle B). J'ai plus ou moins suivi cette procédure mais tout ne s'est pas bien déroulé… Au final, après pas mal de bidouillage, ça tourne. Malheureusement, comme prévu, c'est très lent: 25.6 minutes pour optimiser la géométrie de CH4 en M06-L/DZV… Moi qui voudrais faire des complexes métalliques… Voici mon input, pour ceux qui seraient intéressés:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$contrl runtyp=optimize dfttyp=M06-L $end
$basis gbasis=DZV $end
$scf dirscf=.true. $end
$statpt opttol=0.0005 nstep=50 $end
$system mwords=50 $end
$data
Methane
C1
C 6.0 -5.29 -2.22 0.00
H 1.0 -4.22 -2.22 0.00
H 1.0 -5.65 -2.71 0.88
H 1.0 -5.65 -2.71 -0.86
H 1.0 -5.65 -1.21 -0.01
$end
(je me suis inspiré de ce blog pour les paramètres de statpt et system.
Malgré tout je pense que ça a du potentiel. Si on est patient, on peut faire des belles choses sans mobiliser son ordinateur et en consommant peu d'électricité.
Des retours sur Raspberry Pi, non, j'avoue. Des retours sur GAMESS, par contre, oui, un certainS nombreS (mais je pense que ça embêterai les gens plus qu'autre chose ). Dans tout les cas, si j'ai un jour le temps et l'énergie, j'écrirai un tuto de chimie quantique, et vu que GAMESS est gratuit (même si sous licence), je pense proposer de s'en servir pour faire deux ou trois trucs drôle. Mais … Euh … Pas tout de suite
Dans tout les cas, je trouve l'idée intéressante. Malgré la petite taille du machin et le processeur pas forcément efficace, ça fait toujours plaisir de ne pas manger un cœur de sa machine perso pour faire tourner GAMESS (ou plus). En plus, question refroidissement, tu peux faire des trucs un minimum intéressants, vu la surface à refroidir.
Moi, je dis "pourquoi pas". Et, bien entendu, "je suis jaloux"
J'arrive pas à me rendre compte de ce que représente 25 minutes pour ce calcul puisque je ne suis pas familier avec ces méthodes. Tu pourrais donner quelques points de comparaison ? Par exemple un ordinateur conventionnel, et une simulation sur un node de super-ordinateur ?
J'avais pensé faire ça pour VASP, mais j'avais peur que les limitations en mémoire vive ne permette pas de le faire tourner, indépendamment du temps qu'on lui laisse. Tu penses que ça marchera pour de plus grosses molècules ?
Dans tout les cas, si j'ai un jour le temps et l'énergie, j'écrirai un tuto de chimie quantique, et vu que GAMESS est gratuit (même si sous licence), je pense proposer de s'en servir pour faire deux ou trois trucs drôle.
Un autre code, open-source pour sa part : http://www.quantum-espresso.org/. Ça fonctionne plutôt pas mal, j'ai un petit projet de métadynamique ab initio avec et ça tourne bien.
J'arrive pas à me rendre compte de ce que représente 25 minutes pour ce calcul puisque je ne suis pas familier avec ces méthodes. Tu pourrais donner quelques points de comparaison ? Par exemple un ordinateur conventionnel, et une simulation sur un node de super-ordinateur ?
Pour la simulation en question, je prends 1s par calcul SCF sur 8 cœurs, pour 5 atomes. Donc c'est quand même plutôt lent. Je ne sais pas si GAMESS utilise le GPU des RPi pour ses calculs ?
Je vais relancer le calcul demain sur GAMESS avec mon ordi au boulot (un simple PC de bureau). Malheureusement je n'ai pas d'autres points de comparaison. Concernant le GPU, faut que voie, je ne sais pas.
Je vais essayer un exemple "pratique" et je vous tiens au courant des performances.
Dans tout les cas, si j'ai un jour le temps et l'énergie, j'écrirai un tuto de chimie quantique, et vu que GAMESS est gratuit (même si sous licence), je pense proposer de s'en servir pour faire deux ou trois trucs drôle.
Un autre code, open-source pour sa part : http://www.quantum-espresso.org/. Ça fonctionne plutôt pas mal, j'ai un petit projet de métadynamique ab initio avec et ça tourne bien.
Pas mal, je connaissais pas Ceci dit, ça m'as l'air vachement orienté DFT, et si j'écris un truc, je serai obligé de commencer par Hatree-Fock. Donc je note
D'après la page officielle, si, bien entendu, pour la plupart des codes (tableau au milieu de la page, chercher les "p"). Quand je dit "plus ça aurait été du gâchis", je veux bien entendu dire que je sais pertinemment que ce genre de calcul est tellement court que ça ne sert à rien que je demande 4 coeurs pour le plaisir, d'autant que je suis soumis à un système de priorité et que moins demande mes jobs, plus vite ils passent
Objectivement, j'ai pas trop compris : si je prenais ton input tel quel, il me faisait un calcul d'énergie sans faire d'optimisation. Du coup, j'ai repris m'input, je l'ai repassé dans MacMolPlot, je l'ai ressorti, je l'ai relancé. Les seules différences que je vois, c'est la définition explicite de la multiplicité (et à la limite, d'un peu plus de mémoire, mais il a pas employé tout ça, donc soit). À mon avis, effectivement, sur la version de 2012, MULT est pas par défaut. Par contre, les valeurs de $SYSTEM, comme je te dis, je peux encore mettre ce que je veux, rien de spécifique là derrière
Sinon sais-tu comment inclure un set de base (par exemple téléchargé ici) directement dans le fichier d'input? Il faut normalement le mettre dans $data mais je n'ai pas trouvé la bonne syntaxe…
Oui (mais je viens de passer 20 minutes à me souvenir comment)
Bon, partons du principe que tu ne parle pas d'effective core potential, avec lequel je t'avoue n'avoir jamais joué (je connais quelqu'un qu'il l'as fait, mais avec Gaussian, donc bon). En fait, c'est tout bête: tu télécharges ta base d'orbitale pour les atomes qui t'intéressent en sélectionnant bien le format "GAMESS (US)", et ensuite tu défini à la suite de chaque atome les primitives que tu met et comment tu les définis:
Donc par exemple, pour du H2S avec la base MIDI (je sais absolument pas à quoi elle correspond, je trouvais juste le nom sympa et j'ai vu qu'elle était pas trop grosse), ça donne :
$CONTRL SCFTYP=RHF RUNTYP=ENERGY $END
$DATA
Energy H2S (MIDI)
C1
SULFUR 16.0 -1.86589 1.59826 -0.00000
S 3
1 1201.4584000 0.0657650
2 181.3921200 0.3839480
3 39.4047950 0.6743720
S 3
1 52.1390300 -0.0942320
2 4.5287990 0.6354680
3 1.7549380 0.4315060
S 2
1 2.8404370 0.1900420
2 0.3814330 -0.6855270
S 1
1 0.1387860 1.0000000
P 3
1 54.6440710 0.1036730
2 12.1229020 0.4581900
3 3.2065040 0.6134000
P 2
1 0.8632740 0.2294360
2 0.1086790 0.3537000
P 1
1 0.3181300 1.0000000
HYDROGEN 1.0 -0.50589 1.59826 -0.00000
S 2
1 4.5018000 0.0704520
2 0.6814440 0.4078260
S 1
1 0.1513980 1.0000000
HYDROGEN 1.0 -2.31922 0.84984 1.04114
S 2
1 4.5018000 0.0704520
2 0.6814440 0.4078260
S 1
1 0.1513980 1.0000000
$END
Le truc important, c'est de pas donner de ligne $BASIS, et de bien passer une ligne entre chaque définition d'atome, sinon GAMESS te crie dessus comme un malpropre (ce qu'il a tendance à faire souvent, puisqu'il écrit systématiquement en majuscule). Le gros défaut, c'est que tu dois répéter la même chose pour chaque atome. D'un autre coté , il y a ça, que j'ai pas essayé (la flemme d'aller tripoter mes variables d’environnement et le script rungms qui est juste infâme à configurer).
… Du coup, je me suis pris un trip et j'ai tenté le H2S avec aug-cc-pVQZ. Pour voir
Aaah, je n'avais pas compris qu'il fallait remettre le set pour chaque atome! Merci beaucoup. Du coup on a le même format que le fichier .dat que GAMESS construit en début de run! Merci encore.
C'est la solution que je privilégiais jusqu'à présent. Pour les sets qu'on utilise fréquemment c'est le top! Au final je n'ai changé que la variable EXTBAS dans gms-files.sh (ce n'est pas comme ça qu'on est sensé faire mais ça marche si on donne le nom du fichier complet à EXTBAS)…
Concernant les ECP, prenons par exemple la molécule imaginaire RuCH et le set de base Def2-SVP sur bse.pnl.gov. On constate que seul le Ru possède un ECP. Si on veut l'utiliser, il faut mettre PP=read dans le bloc \$contrl … \$end puis créer un bloc \$ecp … \$end dans le fichier d'input:
Attention: dans \$ecp … \$end, il faut lister tous les atomes dans le même ordre que dans \$data … \$end en spécifiant NONE pour ceux qui n'ont pas d'ECP:
Aaah, je n'avais pas compris qu'il fallait remettre le set pour chaque atome! Merci beaucoup. Du coup on a le même format que le fichier .dat que GAMESS construit en début de run! Merci encore.
C'est ça
Concernant les ECP, ce n'est pas très compliqué: si ton set de base possède un ECP (par exemple Def2-SVP pour le ruthénium tiré de bse.pnl.gov), tu mets cette partie dans le fichier d'input (avant ou après \$data):
J'essaie juste de reproduire une optimisation de géométrie trouvée dans un article d'organique. C'est pour voir si RPi/GAMESS est suffisant pour produire quelque chose d'"utile" dans un temps raisonnable.
Bah j'ai bossé pendant 1 an avec des systèmes qui tournaient autour de 50 atomes, donc j'ai l'habitude de jouer avec ce genre de chose (ceci dit, c'était pas avec GAMESS, donc faut voir l'algo qui est derrière qui est peut être pas optimisé pareil).
Connectez-vous pour pouvoir poster un message.
Connexion
Pas encore membre ?
Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte