===== 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 :
* modification du ''set_num_threads(n)'' en ''mkl_domain_set_num_threads ( 1, MKL_DOMAIN_ALL )'' et ''mkl_domain_set_num_threads ( n, MKL_DOMAIN_PARDISO )'' (soit les blas ne seront parallèles QUE sur le solveur PARDISO)
* Ajout d'une option ''kmp_set_blocktime(0)'' qui défini le temps durant lesquels les threads OPENMP "tournent à vide" avant de s'éteindre (défaut 200ms) qui était la cause principale du ralentissement de Metafor
* 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 =====
* Séparation dans les makefiles des IOMP_LIB_PATH & IOMP_INCLUDE_PATH (qui étaient auparavant insérées dans les MKL_LIB_PATH & MKL_INCLUDE_PATH)
* Ajout du fichier findIOMP.cmake cherchant les variables IOMP
* Ajout d'une option : MKL_USE_IOMP selon que les mkl utilisent la librairies de threading de intel (iomp) ou de gnu (gomp). Option à True par défaut, obligatoire si on compile avec le compilateur intel ou le visual, optionnelle avec le gcc (restera à tester les perfs...).
* Correction de tous les cmake pour chaque machine
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 index, std::vector 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)
|< 100% 10em - - - >|
^ 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 :
--- //[[L.Papeleux@ulg.ac.be|Luc Papeleux]] 2014/09/16 //