IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Affichage des résultats du sondage: Quel est le meilleur langage pour la programmation parallèle ?

Votants
127. Vous ne pouvez pas participer à ce sondage.
  • C

    29 22,83%
  • C++

    45 35,43%
  • Java

    23 18,11%
  • Lisp

    4 3,15%
  • Scala

    14 11,02%
  • F#

    3 2,36%
  • D

    3 2,36%
  • Haskell

    11 8,66%
  • Ruby

    0 0%
  • C#

    21 16,54%
  • Python

    8 6,30%
  • Erlang

    8 6,30%
  • Ada

    2 1,57%
  • MATLAB

    3 2,36%
  • Fortran

    2 1,57%
  • occam

    4 3,15%
  • Autre

    8 6,30%
Sondage à choix multiple
Programmation parallèle, calcul scientifique et de haute performance (HPC) Discussion :

Quel est le meilleur langage pour la programmation parallèle ?


Sujet :

Programmation parallèle, calcul scientifique et de haute performance (HPC)

  1. #61
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Sans hésitation: C#

  2. #62
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sjrd Voir le message
    Bon, autant vous dire franchement ce que je pense : je suis choqué qu'on pense encore à du C pour faire du parallèle
    Je vois deux avantages au C (conception et éxecution) :

    1. En C natif (conçu et réalisé en C sans aucun portage ou méthode d'analyse polluante) on peut écrire un petit kernel multitâche robuste en une 40aine de lignes. C'est dû à l'omniprésence des pointeurs natifs qui pointent aussi bien sur le code que sur les données. Attention car ce type de code est vraiment dur à lire mais cela marche tellement bien qu'il n'est jamais nécessaire de le maintenir. De nombreux jeux ont exploité cette possibilité il y a une dizaine d'années. Aujourd'hui on veut faire le contraire et confier tout traitement parallèle au compilateur, pourtant cette possibilité en dit long sur le degré d'optimisation qu'on peut atteindre en C natif.

    2. L'absence de garbage collection et l'agencement du segment de données ne bloquent pas le partage des données entre threads. Je n'ignore pas que cela peut provoquer des erreurs monstrueuses mais si c'est bien programmé, on oublie les files d'attentes, les boucles d'évenements, sans parler des delegates et autres joyeusetés qui servent à étendre la visibilité d'un code à d'autres threads.


    Je suis parfaitement conscient que cette approche n'a rien de didactique : aucune facilité aucun confort de programmation mais en embarqué, c'est parfois le seul moyen.

    Le corollaire est que la conception à ce niveau est tellement critique qu'il vaut mieux utiliser des plateformes de simulation pour faire la conception. Les autres langages (surtout la garbage collection) sont tellement différents qu'ils ne sont pas vraiment utiles.

    Donc , dans le topic, il vaut mieux parler en bien de ce qu'on connait bien : si on dit que ce qu'on ne connait pas est mauvais, on a presque toujours tort (mais c'est humain et parfois commercialement nécessaire)


    Personnellement j'ai complètement arrêté de faire du C ultra optimisé car plus personne ne me le demande... Mais dire que c'est impossible est inexact

  3. #63
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Points : 17
    Points
    17
    Par défaut
    Occam !

    Langage conçu spécialement pour la programmation // où justement tu n'as pas a te pré-occuper où et comment cela s'exécute.
    Le même programme peut s'exécuter sur un processeur avec un coeur, ou sur un réseau de 100 ou 1000 processeurs de la même manière.

    Le Transputer était un processeur conçu dans la fin des années 80 exprès pour exécuter du code Occam. Il disposait d'un ordonnanceur cablé au niveau de la puce et des liaisons de communication inter-procésseur.
    Dans le code Occam, on utilisait de manière transparent des "pipe" de communication qui pouvait être soit entre des threads s'exécutant sur un même processeur soit des threads sur des processeurs distant et l'ensemble prenait en charge cela de manière entièrement transparente.

    J'avais fait pas mal de traitement d'image la dessus à l'époque. C'est bien adapté.

  4. #64
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par FloMo Voir le message
    C / Objective-C avec Grand Central Dispatch ( libdispatch, Open Source ), c'est le pied. C'est efficace et simple à aborder.

    Sinon, toujours en C, j'ai testé OpenCL : c'est plus complexe à aborder, mais aussi très efficace.
    J'ai cherché dans tout le topic pour trouver un post qui en parle.

    C'est étonnant que ni OpenCL ni CUDA soient proposés dans la liste ni abordés car le facteur performance est en totale rupture avec les langages classiques.
    J'ai essayé de proposer une migration OpenCL l'année dernière sans succès, je l'ai abandonné. Mais depuis, Intel a mis à jour son driver et toutes les cartes (Radeon geForce) sont désormais compatibles même sur portables.

    S'il y a un langage qui pulvérise tous les autres , c'est bien celui là puisqu'il peut mettre 2 teraflops dans un PC.. Pourtant les implémentations sont encore rares et je ne sais pas ce que ça vaut dans un programme qui n'est pas basé sur le calcul (traitement de signal dans mon cas)

    OpenCL peut il acceder à une base SQL ? Gerer un protocole de flux ? .. je l'ignore, mais il fait de belles transformées de Fourier en 3D environ 50 fois plus vite qu'un core 2 duo à 3ghz , je n'en sais pas plus...

  5. #65
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 617
    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 : 26 617
    Points : 188 587
    Points
    188 587
    Par défaut
    Citation Envoyé par unBonGars Voir le message
    OpenCL peut il acceder à une base SQL ? Gerer un protocole de flux ? .. je l'ignore, mais il fait de belles transformées de Fourier en 3D environ 50 fois plus vite qu'un core 2 duo à 3ghz , je n'en sais pas plus...
    Un GPU peut te faire des calculs très rapidement tant qu'il s'agit de calcul parallèle pur et dur, pas trop d'embranchements notamment.

    Accéder à une base de données n'est pas encore possible, il faut transférer les données que tu reçois sur le CPU au bon endroit sur le GPU pour traitement. À noter que certains moteurs de base de données commencent à utiliser les GPU ; à part ces exceptions, ce n'est pas vraiment possible sans trop refaire soi-même...
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou 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. #66
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par dourouc05 Voir le message
    Un GPU peut te faire des calculs très rapidement tant qu'il s'agit de calcul parallèle pur et dur, pas trop d'embranchements notamment.
    Effectivement chez nous on utilise les GPU pour faire des calculs temps réels sur des images vidéo et c'est impressionnant. Par contre ça ne marche pas pour tout et c'est très délicat à programmer (aux dires de mes collègues)

    Pour répondre à la question j'ai commencé la programmation parallèle avec du C++ puis du pascal. Je ne connais pas tous les langages cités mais ce que j'ai constaté c'est que soit on veut quelque chose de très performant et il faut mettre les mains dans le cambouis et oublier la portabilité (sauf sur une machine identique) et bonjour la maintenance du code. Soit on peut se contenter de quelque chose de moins pointu mais qui sera plus facile à programmer. Il existe des utilitaires qui permettent de paralléliser ça peut suffire et l'application est plus facile à maintenir.
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  7. #67
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    Citation Envoyé par TropMDR Voir le message
    Ouais, j'évalue le "pas assez" à moins de 0,1% justement (dommage que personne n'ait pris le risque de répondre). Et non, je ne pense pas que comprendre le modèle mémoire relaxé du x86 soit un concept fondamental pour pouvoir appréhender la programmation parallèle, justement parce qu'il y a des modèle bien meilleurs que la mémoire partagé (genre le passage de message*). Et heureusement, vu la complexité incroyable de la chose (et le fait que ça change d'un proc à l'autre. Genre un algo qui marche sur x86 échouera lamentablement sur powerPC).
    *: C'est l'approche utilisée dans Erlang, qui a motivé son concepteur a créé plus exactement ce langage.

  8. #68
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    je ne pense pas qu'il y ait de modèle meilleur qu'un autre en soit

    je pense qu'un modèle est plus adapté à une situation

    si je prends des extrêmes j'ai d'un côté des chose comme le calcul de contour par moyenne pondère
    ou si j'ai un cpu par point de mon image que que chacun fait la moyenne pondéré des valeur voisine (immédiates)
    le modèle de programmation est particulièrement efficace. tout les cpu (gpu) font le même calcul sur des valeurs locales
    à l'opposé j'ai un système multi agent dont le but est de résoudre un pb d'IA complexe par la collaborations. dans ce cas la chaque agent à un algo qui lui est propre et les échanges de messages sont la base du fonctionnement. on est loin du pb de l'image et de ses contours.

    pour moi il n'y a pas donc de meilleur mais selon le cas un modèle plus adapté qu'un autre.
    je ne vois d'ailleurs rien qui empêche de mixer les approches.

    A+JYT

  9. #69
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 23
    Points : 45
    Points
    45
    Par défaut Et pourquoi un "langage"...
    J'ai mené à bien des projets nécessitant tous les langages cités précédement avec les avantages et inconvéniants que vous avez tous très bien mis en avant. Cependant, comme vous l'avez fait remarqué les programmeurs ayant une "réelle" connaissance et maitrise de leur machine sont rare, et donc l'approche haut niveau et très souvent ce que je recommande aux débutants qui me demande comment accélérer certaines fonctions.

    Mais plus qu'une approche par language, je leur demande d'abord de comprendre comment leur calcul peut être formulé de manière concurrent et ensuite le plus souvent via du OpenMP en C++ on introduit le //isme.

    Ca permet de valider le modèle rapidement. OpenMP est souvent remplacé pour le code de production car bcp trop sensible à des perturabations extérieurs (var d'environnements, etc...).

    En bref, pour bien exploter le //isme, il faut d'abord comprendre les paradigmes sous-jacents.

  10. #70
    Invité
    Invité(e)
    Par défaut
    OpenMB, OpenCL, Haskell, Erlang.

    Simplement car ils sont fait pour ça et ça se ressent. Fini l'époque où je faisais ça en C,C++ ou Java, et passait 99% du temps du projet à régler les problèmes de synchronisation. Préférence pour Erlang dans la liste.

    D'ailleurs avis perso : le modèle acteur va revenir en force.

  11. #71
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2010
    Messages : 1
    Points : 0
    Points
    0
    Par défaut surment
    C#

Discussions similaires

  1. Quel est le meilleur langage pour débuter la programmation ?
    Par Amine Horseman dans le forum Débats sur le développement - Le Best Of
    Réponses: 271
    Dernier message: 26/07/2016, 08h36
  2. Quel est le meilleur langage pour la programmation parallèle en 2015 ?
    Par dourouc05 dans le forum Programmation parallèle, calcul scientifique et de haute performance (HPC)
    Réponses: 7
    Dernier message: 15/05/2015, 12h34
  3. Quel est le meilleur langage pour débuter la programmation ?
    Par Amine Horseman dans le forum Actualités
    Réponses: 144
    Dernier message: 28/11/2014, 17h06
  4. Quel est le meilleur langage pour la portabilité : Windows & Linux (voire Mac) ?
    Par iubito dans le forum Débats sur le développement - Le Best Of
    Réponses: 57
    Dernier message: 26/11/2007, 23h45
  5. Réponses: 4
    Dernier message: 12/05/2007, 00h55

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