Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:futur:robo

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
commit:futur:robo [2017/10/16 08:36] bomancommit:futur:robo [2018/07/31 18:12] boman
Line 1: Line 1:
 ====== Commit ====== ====== Commit ======
  
-===== Nettoyages =====+===== Parallélisation du contact sur "faces complexes" =====
  
-  * Suppression des **warnings** gcc 6.3.0: ceux-ci correspondaient à des fonctions ''friend'' qui n'étaient pas déclarées dans leur namespace avant d'être déclarée friend d'une classe du namespace +Étonnamment, le S-Rail de la batterie de test ne pouvait pas être lancé en parallèleAprès debugje me suis rendu compte que les classes ''SurrondednessTest2D'' et ''TriangleSurrondednessTest'' n'étaient pas thread safeCeci à cause d'objets géométriques temporaires qui sont définis "statiques" dans ces classes et dans la classe ''Curve'' en vue d'un calcul d'intersections multiples (''Curve::multipleIntersection'').
-  * Suppression de la compatibilité Qt4 et VTK5. Plus aucune machine n'utilisant ces vieilles libson peut supprimer tous les ''#ifdef''/''#endif'' en question. Le code devient plus clair et on évite ainsi des copier/coller tout pourris dans le futur. +
-  * Passage du code à travers ''chkrep.py'' (correction des attributs SVN) +
-  * Powergrep des TABs => 4 espaces (fichiers de Gaëtan et Geoffrey) et suppression des espaces en fin de ligne (beaucoup de fichiers modifiés!). +
-  * Ajout de quelques ''$Id$'' dans des fichiers de Gaëtan. +
-  * Désindentation des déclarations des classes définies dans des namespaces dans des fichiers de Gaëtan. +
-  * Installation de ''dos2unix'' sur les stations. Les ''CPE''/''CRE'' (fichiers coprane sont pas lisibles par notre traducteur lorsqu'ils sont au format DOS.+
  
-===== CGAL =====+Supprimer ces variables statiques entraîne une allocation (coûteuse) des objets à chaque passage dans la routine et une dégradation énorme des perfs. Je n'ai pas gardé les chiffres précis lorsque j'ai testé de supprimer brutalement ces attributs "static", mais on obtient un temps CPU doublé voire triplé sur le S-Rail.
  
-  * Installation de CGAL sur les machines Debian et adaptation du code de Philippe pour pouvoir être compilé avec CGAL 4.8 +Je me suis donc dit qu'il serait peut être inétressant de tester une "nouvelle" fonctionnalité de TBB: le [[https://www.threadingbuildingblocks.org/tutorial-intel-tbb-thread-local-storage|thread local storage]] (TLS). Il s'agit de permettre à chaque thread de créer ses propres variables statiques. En pratique, il s'agit d'une sorte de map qui permet à chaque thread de récupérer son instance particulière de la variable statique qui est donc dupliquée pour chaque thread et d'éviter ainsi les conflits entre threads.
-  * Activation des tests CGAL dans les batteries Linux. Un des 3 tests (''disk3D_LocMort'') ne passe pas... comme avant.+
  
-Voici donc un aperçu des "failed" de la batterie actuelle: +Cette manière de faire est la manière "quick & dirty" de paralléliser des variables statiques. Bien que ça soit la manière qui vienne immédiatement à l'esprit, ce n'est pas la manière à privilégier (cfr nettoyage actuel des matériaux), mais dans des cas bien particuliers comme celui-ci (le "suroundedness test" du contact), c'est l'occasion de voir ce que ce système vaut.
-  abrawal.banc18ER.battery.bladeCasingEngagementFSEGuyan_2 : [TSC-FAILED] +
-  mtExactDataTransfer_CGAL.tests.disk3D_LocMort_2 : [TSC-FAILED] +
-  mtExactDataTransfer_CGAL.tests.disk3D_LocMort_3 : [TSC-FAILED] +
-  mtWear.tests.battery.c3dRuledMu_WBP_CWC : [TSC-FAILED]+
  
 +J'ai donc implémenté ça et les résultats sont plutôt bons puisque le S-Rail ne se voit pénalisé que d'1s sur 53s du test "batterie" par l'ajout de ces maps TBB quand on lance le test en série. Ces bonnes perfs s'expliquent peut-être aussi parce que j'ai supprimé certaines opérations inutiles dans les routines (calcul du numéro de courbe max à chaque passage pour l'assigner aux courbes temporaires!).
  
 +Par contre, le "thread local storage" permet de lancer le modèle en parallèle et d'obtenir un speedup appréciable: 157s sur 6 threads pour l'emboutissage complet au lieu de 446s sur 1 thread pour la version série.
  
- --- //[[r.boman@ulg.ac.be|boman]] 2017/09/06 13:57//+Entretemps, j'ai appris que Gaëtan avait réécrit un S-Rail dont la géométrie n'utilise plus de surrundedness test, c'est-à-dire avec uniquement des patchs de CoonsCe test n'est pas commité alors qu'il permet de simuler également le retour élastiqueJe le commiterai plus tard.
  
 +===== Compilation avec un double python 2/3 =====
 +
 +J'ai adapté les ''CMakeLists.txt'' pour que Metafor cherche exclusivement python 2.7 et ne trouve pas un éventuel python 3.x installé sur la machine (la mienne, en particulier, où les 2 versions coexistent pour des raisons linuxiennes)
 +
 +===== Commit David Thomas =====
 +
 +J'ai récupéré la version Metafor de David Thomas avant qu'il parte pour commiter ses modifs utilisées pour le couplage SU2-Metafor. Il s'agit principalement d'une option du ''TimeStepManager'' qui permet de ne pas afficher les temps d'archivage à l'écran au démarrage d'un calcul. En effet, dans le cas d'un calcul de couplage, il peut y en avoir beaucoup et on se retrouve avec une quantité impressionnante d'infos inutiles dans le fichier de sortie. Pour l'utiliser:
 +  tsm.setVerbose(False)
 +
 +
 +===== gmsh.py =====
 +
 +L'import gmsh sort maintenant un message d'erreur compréhensible quand un ''.geo'' est spécifié mais non présent (gmsh ne fait pas cette vérification et crée un nouveau maillage... vide).
 +
 +===== meshingTools.py =====
 +
 +J'ai ajouté une fonction de fusion d'ugrid VTK pour permettre le maillage des "tresses" de Cédric Laurent, un test qu'il n'a jamais commité et que j'ai retrouvé en fouillant ses backups en triant le fouillis du NAS. Je le commiterai plus tard (il nécessite "un peu" de nettoyage et la définition d'extracteurs pertinents).
 +
 +
 + --- //[[r.boman@ulg.ac.be|boman]] 2018/07/31 17:39//
  
commit/futur/robo.txt · Last modified: 2019/07/10 14:43 by boman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki