Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    23 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 23 614
    Points : 147 486
    Points
    147 486

    Par défaut Sortie de OpenMP 5.0 TR7

    OpenMP 5.0 est prévu pour novembre 2018,
    avec l'ajout d'interfaces pour le débogage et l'analyse poussée de la performance

    OpenMP est la norme actuelle pour la programmation parallèle à mémoire partagée, c’est-à-dire sur les différents cœurs d’une même machine. Ce genre de technologie permet de tirer parti des machines actuelles, dont le nombre de cœurs ne cesse d’augmenter, même si OpenMP a d’abord été développé pour exploiter les supercalculateurs. La version 4.5 de la norme a étendu les possibilités vers un déchargement de l’exécution du code sur un accélérateur, comme un processeur graphique, disponible dans la machine.

    La version 5.0 est annoncée pour la fin de l’année et un nouveau brouillon public est disponible (TR7). Elle apporte bon nombre de nouveautés, comme deux nouvelles interfaces pour la définition d’outils : OMPT pour ceux fournis par l’implémentation d’OpenMP, OMPD pour les outils tiers. Ces outils sont prévus pour inspecter l’état d’OpenMP pendant l’exécution : quand l’objectif d’OMPT est de faciliter l’analyse poussée de la performance du code OpenMP (pourquoi un cœur doit-il attendre ?), celui d’OMPD est plutôt orienté vers le débogage d’applications (pour afficher plus précisément la pile au niveau d’un point d’arrêt, par exemple).


    OpenMP 5.0 se focalise aussi sur les accélérateurs. Notamment, la norme introduit des constructions pour gérer les systèmes qui disposent de plusieurs niveaux de mémoire, sous la forme d’espaces de mémoire différents. La clause map sert à transférer les données entre les banques de mémoire. Également, la synchronisation a été revue afin de gérer plus de mécanismes pour acquérir et libérer les droits d’écriture.

    Toujours au niveau de la mémoire, la programmation orientée objet est mieux gérée, grâce à la directive declare mapper : elle sert à déclarer la manière de transférer les données d’une structure complexe, c’est-à-dire d’un objet, par exemple vers un accélérateur.

    La clause depend gère des dépendances entre tâches plus précises : outre les types entrée-sortie, l’exclusion mutuelle et des dépendances dynamiques ont été ajoutées.

    Sources : Technical Report 6 is a preview of OpenMP 5.0, expected in November 2018, OpenMP ARB Releases Technical Report with Support for a Tool Interface, OMPT and OMPD: Emerging Tool Interfaces for OpenMP.

    Et vous ?

    Qu'en pensez-vous  ?
    Quelles nouveautés souhaiteriez-vous avoir dans cette nouvelle version d'OpenMP ?

    Voir aussi
    La spécification complète.
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Membre éclairé Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    mars 2013
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2013
    Messages : 488
    Points : 709
    Points
    709

    Par défaut

    OpenMP c'est une bibliothèque C++ et Fortran ?

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    23 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 23 614
    Points : 147 486
    Points
    147 486

    Par défaut

    Non, c'est une norme qui permet d'annoter du code C, C++ ou Fortran ("la boucle qui suit doit être parallélisée"), si le compilateur l'implémente.
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Membre éclairé Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    mars 2013
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2013
    Messages : 488
    Points : 709
    Points
    709

    Par défaut

    Mais donc il y a un compilateur qui va avec ? Ça fonctionne avec G++, Clang, Visual C++ ?

  5. #5
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    23 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 23 614
    Points : 147 486
    Points
    147 486

    Par défaut

    C'est plutôt le contraire : certains compilateurs gèrent OpenMP, d'autres pas. Par exemple, Clang, GCC et Visual C++ l'implémentent tous (mais pas la même version : VC est limité à OpenMP 2.0, les deux autres étant plus à jour). Liste officielle : https://www.openmp.org/resources/ope...mpilers-tools/
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  6. #6
    Membre éclairé Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    mars 2013
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2013
    Messages : 488
    Points : 709
    Points
    709

    Par défaut Solution miracle ou non ?

    Et c'est beaucoup utilisé ? Es-ce vraiment avantageux ? Désolé de poser tous ces questions mais je ne connais pas du tout alors que ça ressemble une solution miracle :
    On met une instruction pré-processeur devant toutes les boucles for et paf le code et beaucoup plus rapide !
    Genre dans ma library de réseaux de neurones ça serait bien pour paralléliser le travail sur une couche ?

    Si c'est si bien que ça pourquoi n'en ai-je jamais entendu parler ?

  7. #7
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    23 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 23 614
    Points : 147 486
    Points
    147 486

    Par défaut

    Du côté calcul scientifique/HPC, oui, c'est très utilisé. Maintenant, côté apprentissage profond, sûrement moins, vu qu'il est déjà courant de réinventer la roue, puis aussi de paralléliser à l'échelle de plusieurs serveurs plutôt que "seulement" plusieurs cœurs.

    Dans ton cas, ça permettra de paralléliser facilement des boucles si les itérations n'ont pas d'interaction entre elles (donc pas les différentes itérations de la descente de gradient, mais plutôt les multiplications matricielles).
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  8. #8
    Membre éclairé Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    mars 2013
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2013
    Messages : 488
    Points : 709
    Points
    709

    Par défaut

    Merci pour tes réponses, cela m'aide grandement.

    Actuellement je suis mets 21 secondes pour effectuer pour 1 itération d'apprentissage des 60000 images de la MNIST + les 10000 images de test avec 2 couches cachée de 150 et 80 neurones. (Avec un Intel Core i-7 + RAM DDR4)
    Ce week-end je vais implémenter OpenMP et je te dirais combien je gagne en terme de performance mais si déjà je gagne un fois 2 ça sera juste génial.

  9. #9
    Membre éclairé Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    mars 2013
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2013
    Messages : 488
    Points : 709
    Points
    709

    Par défaut BIZARRE BIZARRE

    J'ai testé OpenMP 2.0 mais pourtant je ne gagne absolument rien en performance, exactement le même temp de calcul.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #pragma omp parallel for num_threads(7)
    for (int n = 0; n < numberOfNeurons; ++n)
    {
        // ...
    }
    Pourtant cela fonction car avec ce #pragma je vois les 8 cœurs de mon pc tourner à 100% au lieu d'un seul en temps normal, extrêmement bizarre. Va falloir que j’investigue....

  10. #10
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    août 2008
    Messages
    23 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2008
    Messages : 23 614
    Points : 147 486
    Points
    147 486

    Par défaut

    Ça peut beaucoup dépendre de ce qu'il y a dans ta boucle : si tes cœurs doivent se synchroniser, ils perdent du temps plutôt que de calculer. Enfin, mieux vaut créer un sujet de discussion juste pour ça .
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

Discussions similaires

  1. Réponses: 16
    Dernier message: 18/07/2003, 17h16
  2. Comment rediriger la sortie vers /dev/null
    Par dclink dans le forum C
    Réponses: 4
    Dernier message: 24/06/2003, 18h23
  3. [LG]Entrées et sorties redirigée
    Par Lady dans le forum Langage
    Réponses: 17
    Dernier message: 10/05/2003, 18h33
  4. Rediriger le plux de sortie
    Par Groove dans le forum C
    Réponses: 5
    Dernier message: 17/04/2003, 17h16
  5. récupérer la valeur de sortie d'un thread
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2002, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo