Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2017:03_15

Differences

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

Link to this comparison view

Next revision
Previous revision
commit:2017:03_15 [2017/03/15 06:46] – created bomancommit:2017:03_15 [2018/05/04 16:33] (current) – [Commit-2017-03-15] boman
Line 1: Line 1:
-====== Commit ======+====== Commit 2017-03-15 ======
  
 ====== Portage Visual Studio 2015 ====== ====== Portage Visual Studio 2015 ======
  
-Comme je l'avais dit dans mes précédents commits, Je travaille depuis un bon bout de temps sur la mise à jour des bibliothèques & compilateurs utilisés par Metafor. Pour rappel, les buts sont les suivants:+Comme je l'avais dit dans mes précédents commits, je travaille depuis un bon bout de temps sur la mise à jour des bibliothèques & compilateurs utilisés par Metafor. Pour rappel, les buts sont les suivants:
   * **Compilation de Metafor sous MacOSX:** MacOS nécessite les versions les plus récentes de VTK et Qt pour fonctionner correctement. En particulier les versions de VTK et Qt qu'on utilisait n'étaient plus compilables depuis la mise à jour "Sierra".   * **Compilation de Metafor sous MacOSX:** MacOS nécessite les versions les plus récentes de VTK et Qt pour fonctionner correctement. En particulier les versions de VTK et Qt qu'on utilisait n'étaient plus compilables depuis la mise à jour "Sierra".
-  * **Utilisation du C++11 / C++14:** à ce niveau, nous étions limités par le compilateur le plus vieux parmi ceux qu'on utilise sur toutes les machines, c'est-à-dire le compilateur Visual Studio 2012 qui ne supporte que quelques nouvelles fonctionnalités C++11 (auto, fonctions lambdas basiques, etc.).+  * **Utilisation plus généralisée du C++11 / C++14:** à ce niveau, nous étions limités par le compilateur le plus vieux parmi ceux qu'on utilise sur toutes les machines, c'est-à-dire le compilateur Visual Studio 2012 qui ne supporte que quelques nouvelles fonctionnalités C++11 (auto, fonctions lambdas basiques, etc.).
  
 J'ai donc porté le code pour utiliser le Visual Studio 2015 et j'en ai profité pour mettre à jour toutes mes libs. Le code est donc compilable avec les toutes dernières versions de toutes les bibliothèques, sauf python qui reste en 2.7.x. La migration vers python 3 sera effectuée plus tard (c'est un travail énorme). J'ai donc porté le code pour utiliser le Visual Studio 2015 et j'en ai profité pour mettre à jour toutes mes libs. Le code est donc compilable avec les toutes dernières versions de toutes les bibliothèques, sauf python qui reste en 2.7.x. La migration vers python 3 sera effectuée plus tard (c'est un travail énorme).
Line 13: Line 13:
 Le code reste évidemment compilable avec Visual Studio 2012. Le code reste évidemment compilable avec Visual Studio 2012.
  
-En pratique, voici les versions utilisées sur mon PC: +En pratique, voici les versions utilisées sur mon PC (voir aussi [[:devel:configordisservice]])
-  * **Visual Studio 2015 Community:** appelé aussi "VS14" ou "msvc19". Supporte le C++11 et est gratuit! voir [[https://www.visualstudio.com/fr/downloads/|site microsoft]]. La version 2015, qui est difficile à trouver depuis la mise à jour 2017, est conservée sur le NAS. Au niveau du code source, tout a compilé du premier coup, sauf la visu des outils Abrawal où le compilateur ne s'en sort pas de manière assez étonnante (j'ai dû ajouter des accolades {} autour d'un bloc ''for'' alors que celles-ci ne sont pas nécessaires). +  * **Visual Studio 2015 Community:** appelé aussi "VS14" ou "msvc19". Supporte le C++11 et est gratuit! Il est aussi assez joli, et semble avoir intégré des capacités de déboguage accrues (codes parallèles). Voir [[https://www.visualstudio.com/fr/downloads/|site microsoft]]. La version 2015, qui est difficile à trouver depuis la mise à jour 2017, est conservée sur le NAS. Au niveau du code source, tout a compilé du premier coup, sauf la visu des outils Abrawal où le compilateur ne s'en sort pas de manière assez étonnante (j'ai dû ajouter des accolades ''{}'' autour d'un bloc ''for'' alors que celles-ci ne sont pas nécessaires). 
-  * **Intel Parallel Studio 2017 Update 2 (MKL, TBB):** On a maintenant la possibilité d'utiliser TBB comme threading model avec le Pardiso (à tester!).  +  * **Intel Parallel Studio 2017 Update 2 (MKL, TBB):** On a maintenant la possibilité d'utiliser TBB comme threading model avec le Pardiso (à tester!). Pour ceux qui ne compilent pas les libs, la version Community gratuite (MKL+TBB sans les compilateurs ni les outils de debug et profilage) est suffisante. 
   * **zlib 1.2.11:** rien de neuf, mis à part des bug fixes.   * **zlib 1.2.11:** rien de neuf, mis à part des bug fixes.
-  * **python 2.7.13+:** compilable grâce au travail de [[https://github.com/kovidgoyal/cpython|Kovid Goyal]], le développeur principal de Calibre,  qui maintient la compatibilité VS14 au fil des versions de python. Sans lui, je ne sais pas comment j'aurais fait pour éviter la migration python 3.+  * **python 2.7.13+:** compilable grâce au travail de [[https://github.com/kovidgoyal/cpython|Kovid Goyal]], le développeur principal de [[https://calibre-ebook.com/|Calibre]],  qui maintient la compatibilité VS14 au fil des versions de python. Sans lui, je ne sais pas comment j'aurais fait pour éviter la migration python 3.
   * **CMake 3.7.2:** génère de nombreux warnings qu'il faudra traiter correctement (je ne l'ai pas encore fait - j'attends que tout le monde ait migré).   * **CMake 3.7.2:** génère de nombreux warnings qu'il faudra traiter correctement (je ne l'ai pas encore fait - j'attends que tout le monde ait migré).
-  * **Qt 5.8.0:** compatible avec notre nouveau code Qt 5.6.x (voir mes commits précédents). L'avantage d'utiliser cette version est qu'on peut maintenant simplement installer les binaires Qt à partir de l'installeur officiel (sauf sous Mac où l'installeur officiel freeze - no comment) +  * **Qt 5.8.0:** compatible avec le nouveau code Qt 5.6.x (voir mes commits précédents). L'avantage d'utiliser cette version est qu'on peut maintenant simplement installer les binaires Qt à partir de l'installeur officiel (sauf sous Mac où l'installeur officiel freeze - no comment) 
-  * **VTK 7.1.0:** petits problèmes de changement de syntaxe dans les tests "longBone". J'ai également corrigé un problème de création des lumières de la scène 3D. A part ça, le gros changement de VTK7 par rapport à VTK6 est le support d'un OpenGL récent (l'option ''VTK_RENDERNING_BACKEND'' vaut ''OpenGL2'' par défaut, ce qui correspond à de l'OpenGL 3.4 si j'ai bien compris) qui devrait améliorer grandement les perfs générales de VTK. En particulier, tous les glyphs devraient être rendus à l'aide de vertex shaders au niveau du GPU. Malheureusement (pour moi) cette nouvelle implémentation moderne n'est pas utilisable sous Virtualbox qui ne gère que de l'OpenGL 1.1. J'ai donc dû compiler 2 versions; une pour ma VBox sous linux à l'ULg et une pour ma machine Windows à la maison.+  * **VTK 7.1.0:** petits problèmes de changement de syntaxe dans les tests "longBone". J'ai également corrigé un problème de création des lumières de la scène 3D. A part ça, le gros changement de VTK7 par rapport à VTK6 est le support d'un OpenGL récent (l'option ''VTK_RENDERNING_BACKEND'' vaut ''OpenGL2'' par défaut, ce qui correspond à de l'OpenGL 3.4 si j'ai bien compris) qui devrait améliorer grandement les perfs générales de VTK sur nos machinesPar exemple, tous les glyphs devraient être rendus à l'aide de "vertex shadersau niveau du GPU (c'est-à-dire du code qui tourne directement sur le GPU chaque fois qu'un vertex est affiché). Malheureusement (pour moi) cette nouvelle implémentation moderne n'est pas utilisable sous Virtualbox qui ne gère que du vieux OpenGL 1.1. J'ai donc dû compiler 2 versions; une pour ma VBox sous linux à l'ULg et une pour ma machine Windows à la maison.
   * **SWIG 3.0.12:** aucun problème.   * **SWIG 3.0.12:** aucun problème.
-  * **Parasolid 29.1:** dernière version en date. Visual Studio 2012 nous bloquait définitivement à la v28.1. On espère obtenir les projections parallèles en restant à jour (c'est peut-être déjà OK avec cette nouvelle version? j'ai pas testé).+  * **Parasolid 29.1:** dernière version en date. Visual Studio 2012 nous bloquait définitivement à la version 28.1. On espère obtenir les projections parallèles en restant à jour (c'est peut-être déjà OK avec cette nouvelle version? j'ai pas testé, je compte sur vous).
   * **numpy 1.11.2 + dépendances:** compilent comme un charme avec tous ces outils récents.   * **numpy 1.11.2 + dépendances:** compilent comme un charme avec tous ces outils récents.
  
-Evidemment, il y a toutes sortes de petits "trucs" pour construire les libs (la liste est très courte par rapport à ce qu'il fallait savoir avant). J'ai fait un mémo que je donnerai à Luc lorsqu'il aura le temps de migrer ses libs. D'ici là, ne changez pas de compilateur à moins que vous vouliez compiler votre propre set de libs. +Evidemment, il y a toutes sortes de petits "trucs" pour construire les libs (bien que la liste soit très courte par rapport à ce qu'il fallait savoir avant). J'ai fait un mémo que je donnerai à Luc lorsqu'il aura le temps de migrer ses libs. D'ici là, **ne changez pas de compilateur à moins que vous vouliez compiler votre propre set de libs**Si c'était le cas, n'hésitez pas à me le dire et je vous aiderai. J'ai fait un petit schéma qui permet de voir les dépendances d'un coup d'oeil: 
 + 
 +{{ :commit:2017:libs-vs2015.png?600 |Les libs}}
  
 Une fois que tout le monde aura migré vers VS14 on pourra envisager de supprimer le vieux code VTK5 / Qt4 (après update des stations) et on pourra nettoyer pas mal de choses (boucles peu lisibles utilisant explicitement des itérateurs par exemple) avec le C++11. Une fois que tout le monde aura migré vers VS14 on pourra envisager de supprimer le vieux code VTK5 / Qt4 (après update des stations) et on pourra nettoyer pas mal de choses (boucles peu lisibles utilisant explicitement des itérateurs par exemple) avec le C++11.
 +
  
 ====== Compilation MacOSX ====== ====== Compilation MacOSX ======
  
   * Correction mineure du code source (un ''inline'' en trop dans un fichier CPP qui provoquait un "unresolved" avec ''clang'').   * Correction mineure du code source (un ''inline'' en trop dans un fichier CPP qui provoquait un "unresolved" avec ''clang'').
-  * Problème de l'écran Retina de l'iMac du service. Le widget Qt-VTK ne supporte pas ce "nouveau" type d'écran haute résolution. L'image est dessinée dans le quart inférieur gauche de la fenêtre graphique. Pour résoudre le problème j'ai dû ajouter un appel vers une fonction ObjectiveC qui désactive explicitement la haute résolution de la fenêtre (''mtQt/osxHelper.mm''). J'espère que ce problème sera résolu dans les prochaines versions de VTK.+  * Problème de l'écran Retina de l'iMac du service. Le widget Qt-VTK ne supporte pas ce "nouveau" type d'écran haute résolution. L'image est dessinée dans le quart inférieur gauche de la fenêtre graphique (voir ci-dessous). Pour résoudre le problème j'ai dû ajouter un appel vers une fonction ObjectiveC qui désactive explicitement la haute résolution de la fenêtre (''mtQt/osxHelper.mm''). J'espère que ce problème sera résolu dans les prochaines versions de VTK. 
 + 
 +{{ :commit:2017:vtk-6.3-retina.png?600 |Steve Jobs, on ne te regrette pas}}
  
 ====== longBone ====== ====== longBone ======
commit/2017/03_15.1489556817.txt.gz · Last modified: 2017/03/15 06:46 by boman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki