Début de mon boulot fabuleux.
Je suis en train de regarder par où commencer la parallélisation du code. La première étape est une parallélisation sur machine SMP, c'est-à-dire la possibilité d'utiliser plusieurs CPUs sur une même machine. Suivra une parallélisation avec MPI lorsqu'on aura acheté notre super cluster.
Pour la première étape, voici mes premières conclusions:
pthreads
, etc.) icc
(Window ou Linux). Si j'ai bin compris, cette nouvelle version apporte principalement la possibilité de définir des “tasks” (gestion plus souple de la distribution des tâches dans les boucles).Bref, j'ai installé Parallel Studio et j'ai compilé Metafor avec le compilateur d'intel. Surprise: ca marche presque tout seul!! (mise à part une chiée de nouveaux warnings).
Au niveau de la batterie, par contre, ça n'a pas vraiment marché tout seul: j'ai dû faire des modifs dans l'élément de contact thermomec du second degré en défo défo, dans la création des matrices défo-défo.
Il reste au moins un BUG: le test newac.tests.enim.enimWear2D
plante au pas 324 en optimisé… Il faudra donc le débuguer avant de pouvoir utiliser le compiateur intel pour la batterie (ma batterie est donc toujours VC++).
J'ai remplacé les sets hachés de Google par leur équivalent Qt dans les objets Locinv
et DofSet
. Ceci dans le but de faciliter la compilation du code. On peut donc supprimer cette lib du projet. Il est toujours possible de compiler sans ces sets (il suffit de supprimer la définition de _WITH_QHASH_
). On se retrouve alors avec les implémentations du Visual C++ ou du gcc. Par contre la google hash n'est plus disponible.
Au niveau des perfs, on constate rapidement que les hash de google sont plus légères: les tests paramétriques sont fortement pénalisés (CPUx2!). Pour les autres tests, les diffs ne sont pas énormes (parfois on gagne, parfois on perd). Il faudra voir si les tables de hashage de l'intel c++ sont intéressantes.
Aucune obligation d'utiliser le compilateur d'intel à la place du Visual C++, d'autant plus que la batterie ne passe pas complètement avec ce compilateur.
Si vous voulez le faire quand même (avec mes encouragements):
C:\Program Files (x86)\Intel\Parallel Studio\Composer\bin\IA32_Intel64
dans mon PATH
pour que Metafor démarre (bug du Parallel Studio?)
Pour utiliser QHash
et QSet
:
_WITH_QHASH_
(au lieu de _WITH_GOOGLE_SPARSEHASH_
) dans votre entête de config (je l'ai déjà fait pour Luc).google
du projet pour les remplacer par un truc du genre “$(MYLIBS)\qt-4.3.2\include\QtCore”; “$(MYLIBS)\qt-4.3.2\include”
.QtCore4(d).lib
les DLLs mtFEMBase
et mtFEM
. Ça devrait suffire.google
de vos libs.Les projets linux sont déjà modifiés.
→ Faut-il merger _WITH_QHASH_
avec _WITH_GUI_
?? … ben c'est ce que je suis en train de me demander… (et tant qu'on y est on mergerait _WITH_ZLIB_
aussi)… A discuter.
(j'ai supprimé les résultats de la batterie alpha-linux)
— Romain BOMAN 2010/03/18 09:00