===== 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 //