Commit 2014-10-02
Performance entre TBB &
MKL Blas
UPDATE : mettez à jours vos libs (une variable d'enum des mkl a changé de nom entre la version 10 et 11 !!!) ⇒ /ftpDisk/metafor/bin/VS2012_X64/LibsVS2012_2014-09-30.zip
TBB/MKL
Utilisation d'un queuing_mutex
en remplacement du spin_mutex
dans StrMatrixLoopBody
Définition d'un typedef MatrMutexType pour facilement définir et changer de mutex (developpement)
Définition d'un typedef VectMutexType dans StrVectorLoopBody
(défini à spin_mutex
pour l'instant)
mtBlas.cpp :
StrMatrixLoopBody :
Modification de l'assemblage de la matrice de raideur (en séparant la recherche de la position de la valeur à ajouter dans la matrice globale de l'assemblage proprement dit)
activation de la lock
sur la phase d'assemblage uniquement (le plus tard possible)
IOMP
Je n'ai pas pu vérifier toutes les configuration de machines ⇒ en cas de soucis de configuration sur votre machine, vérifier que les répertoires par défaut machine.cmake correspond bien à la configuration de votre machine !!!
CSRMatrix
Correction de l'affichage du nombre d'éléments de la matrices
CSR (qui affichait des valeurs négatives suite à un overflow)
Modification de la recherche d'index de la matrice
CSR (en remplacant la recherche linéaire sur la ligne par une recherche dichotomique sur cette même ligne)
split de la fonction d'assemblage en
la recherche de l'index dans le tableau des valeurs : int CSRMatrix::findIndex(int i, int j)
l'assemblage proprement dit (d'une liste de valeurs sur une liste d'index): void CSRMatrix::append(std::vector<int> index, std::vector<double> vals)
La fonction d'assemblage par composante reste présente : void CSRMatrix::assemble(int i, int j, double val)
SkylineMatrix
Même split de l'assemblage en deux fonctions findIndex
& append
Afin de différencier si le terme appartient à situ ou sitl dans le solveur non symétrique, j'ai utilisé la technique pourrie “PUT A MINUS SIGN” sur les termes de la triangulaire inférieure (sitl). Faites donc attention si vous devez modifier ces fonctions.
nb: dans le solveur symétrique, la diagonale est stoquée dans SITL, alors que dans le non sym, elle est dans SITU !!!
Batterie
Ajout d'une catégorie de tests “parallel” (oo_meta/apps/parallel) contenant des tests qui tournent 1 à la fois, mais en parallèle sur les blas & tbb (le nombre de threads = nombre de tests tournant en même temps pour les tests “normaux”)
ajout de tests dérivés de apps.iso.tubeT (en isotherme & maillage plus dense pour tester le parallèle)
machine | Solveur | Tbb | Blas (mkl) | Real | User |
corto | DSS | 1 | 1 | 374 | 375 |
Thorgal (gomp) | DSS | 1 | 1 | | |
Thorgal (iomp) | DSS | 1 | 1 | | |
blueberry | DSS | 1 | 1 | 608 | 610 |
corto | DSS | 1 | 6 | 150 | 528 |
Thorgal (gomp) | DSS | 1 | 8 | 171 | 800 |
Thorgal (iomp) | DSS | 1 | 8 | 171 | 849 |
blueberry | DSS | 1 | 4 | 264 | 818 |
corto | DSS | 6 | 6 | 114 | 549 |
Thorgal (gomp) | DSS | 8 | 8 | 284 | 1982 |
Thorgal (iomp) | DSS | 8 | 8 | 126 | 863 |
blueberry | DSS | 4 | 4 | 220 | 822 |
corto | DSS | 6 | 1 | 339 | 386 |
Thorgal (gomp) | DSS | 8 | 1 | 641 | 705 |
Thorgal (iomp) | DSS | 8 | 1 | 552 | 608 |
blueberry | DSS | 4 | 1 | 565 | 612 |
corto | SymDSS | 1 | 1 | 231 | 232 |
Thorgal (gomp) | SymDSS | 1 | 1 | | |
Thorgal (iomp) | SymDSS | 1 | 1 | | |
blueberry | SymDSS | 1 | 1 | 358 | 359 |
corto | SymDSS | 6 | 6 | 76 | 324 |
Thorgal (gomp) | SymDSS | 8 | 8 | 162 | 1026 |
Thorgal (iomp) | SymDSS | 8 | 8 | 86 | 551 |
blueberry | SymDSS | 4 | 4 | 136 | 494 |
Divers
Correction de toolbox.utilities pour que les tests qui tournent en “execfile” puissent profiter des disques locaux sur le cluster (application correcte du _theWDirRoot
sur le wdir de la fonction setDir
)
Correction des tests & methodes de
apps.remeshing
/
apps.welding.complex
/
apps.biomec.complex
/
apps.XFEM.complex
pour que tous les résultats / fichiers temporaires soient contenu dans un répertoire relatif au test du workspace
il reste encore marcus.msh, mesh.msh & papillon.msh dans baseDir … (si qqn a l'occasion de régler le probleme …)
idem workspace/toothPDLMesh qui traine aussi …
Ajout de areaInContact & paramétrisation de apps.iso.tubeT
MiscValueExtractor : ajout de 3 extracteurs : EXT_USER_CPU, EXT_REAL_CPU, EXT_KERNEL_CPU
Suppression du timer TSC-OMP (qui renvoyait toujours 0.0)
Nouvelle version des libs VS2012 X64 sur le ftp :
mise à jour des tbb (versio 4.3) / cmake (3.0.2) / mkl (11.1.2.1)
ajout ghostscript / imageMagick
/ftpDisk/metafor/bin/VS2012_X64/LibsVS2012_2014-09-30.zip
Fichiers ajoutés/supprimés
A : oo_meta\CMake\FindIOMP.cmake
R : oo_meta\CMake\natacha.cmake
Tests ajoutés/supprimés
A : oo_meta\apps\parallel\largeTubeDssTbb1Blas.py
A : oo_meta\apps\parallel\largeTubeDssTbbBlas.py
A : oo_meta\apps\parallel\largeTubeDssTbbBlas1.py
A : oo_meta\apps\parallel\largeTubeSymDssTbbBlas.py
R :
— Luc Papeleux 2014/09/16