Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2014:10_02

This is an old revision of the document!


Commit 2014-10-02

  • Performance entre TBB & MKL Blas

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 <note warning>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 !!!</note> ===== 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) ===== 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 des .msh dans baseDir …
  • 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)

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

commit/2014/10_02.1412181162.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki