===== 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 [[https://software.intel.com/en-us/mkl-developer-reference-c-mkl-set-threading-layer|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 (portabilité VTK 6.3) * computeGravityCenterAndMass : //return {posCG, mass};//gcc 5.4 ne supporte pas encore le constructeur par liste return std::tuple(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 --- //[[L.Papeleux@ulg.ac.be|Luc Papeleux]] 2018/01/11 //