Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2018:01_11

Commit 2018-01-11

Initialisation des Threads MKL - Divers

Initialisation des Threads :

  • Depuis la migration de Metafor sous VS2015 et le link des librairies mkl en utilisant le modèle “Single Dynamic Library” (soit le link via la lib “libmkl_rt.lib” qui détermine au RunTime quelle modèle de thread utiliser), j'avais noté que Metafor réutilisait la lib OpenMp de intel (iomp) pour les blas en plus de Tbb. Le choix de la lib de thread n'était donc pas fonctionnel.
  • Il se fait que le choix du modèle de thread doit se faire avant tout autre appel à la moindre routine mkl et ne peut plus être modifié par la suite (voir mkl_set_threading_layer)
  • En remontant le choix du modèle de thread au plus tôt de l'execution de Metafor (au chargement de la dll mtMath), la sélection redevient effective. Elle se fait à travers l'argument -k nbThread :
    • nbThreads == 1 ⇒ librairie Séquentielle : MKL_THREADING_SEQUENTIAL
    • nbThreads > 1 ⇒ librairie Threading Building Blocks : MKL_THREADING_TBB
    • nb : j'ai ajouté une option de metafor -mklThreadLayer MTL avec MTL :
      • SEQ : MKL_THREADING_SEQUENTIAL
      • TBB : MKL_THREADING_TBB
      • IOMP : MKL_THREADING_INTEL (intel OpenMp)
      • GNU : MKL_THREADING_GNU (si compilé avec gcc)
  • La définition du nombre de threads devant être fixé au démarrage de Metafor, toutes les fonctions de définition du nombre de threads ne sont plus interfacées vers python (via SWIG). ⇒ suppression de toutes les commandes Blas/IntelTBB.setNumThreads(n) des cas tests
  • Le nombre de threads TBB et MKL est définitivement unifié (les MKL utilisant les threads TBB définis d'autre part, …). Les tests de apps/parallel effectué avec un nombre de threads différents entre TBB et Blas ont été supprimés.
  • Pour continuer à tester gen4 en parallèle, j'ai déplacé quelques tests gen4 dans gen4.tests.parallel
  • Correction des scripts battery.py, ExperimentsClasses.py (opti) et we

Divers :

  • Ajout d'exemples d'utilisation des extracteurs valeurs moyenne sur éléments IFElementValueExtractor et valeurs aux Points d'intégration IFGaussPointValueExtractor (dans cont2.py)
  • BVHTreeDrawer.cpp : Ajout de #include <vtkSmartPointer.h> (portabilité VTK 6.3)
  • computeGravityCenterAndMass :
    //return {posCG, mass};//gcc 5.4 ne supporte pas encore le constructeur par liste
    return std::tuple<mtMath::Vect3, double>(posCG, mass);

Fichiers ajoutés/supprimés :

A : 

Tests ajoutés/supprimés

Deleted : apps\parallel\tubeDssTbb1Blas.py/tsc
Deleted : apps\parallel\tubeDssTbbBlas1.py/tsc
Deleted : apps\parallel\tubeIssTbb1Blas.py/tsc
Deleted : apps\parallel\tubeMumpsTbb1Blas.py/tsc
Deleted : apps\parallel\tubeMumpsTbbBlas1.py/tsc
Moved : gen4\tests\meshme.py/tsc -> gen4\tests\parallel\meshme.py/tsc
Moved : gen4\tests\Robo.png -> gen4\tests\parallel\Robo.png
Moved : gen4\tests\geo1.py/tsc -> gen4\tests\parallel\geo1.py/tsc
Moved : gen4\tests\marcus.py/tsc -> gen4\tests\parallel\marcus.py/tsc
Moved : gen4\tests\papillon.py/tsc -> gen4\tests\parallel\papillon.py/tsc
Moved : gen4\tests\papillon_polygon.txt -> gen4\tests\parallel\papillon_polygon.txt

Luc Papeleux 2018/01/11

commit/2018/01_11.txt · Last modified: 2018/05/04 16:48 by boman