• [^] # Re: Intéressant

    Posté par (site web personnel, Mastodon) . En réponse au journal Petit tour d’horizon de la haute performance et du parallélisme. Évalué à 3.

    C'est bien OpenMP et pas MPI.

    C'est vrai que tout est un peu mélangé, je vais essayer de clarifier (si je dis des bêtises, corrigez moi) :

    • hadoop est un environnement HPC, il en existe d'autres notamment MapReduce de Google

    • Map-Reduce est un patron de conception HPC, encore une fois il en existe plein d'autres

    • OpenCL/Cuda sont des langages de programmations dédié au GPU. OpenCL est la norme que tout le monde supporte, Cuda est le langage fait par Nvidia.

    • OpenMP c'est un ensemble de notations permettant une parallélisation automatique du code. Par exemple :

      #pragma omp parallel for
      for (i = 0; i < N; i++)
       a[i] = 2 * i;
      

    A la compilation ET au runtime l'application va être optimisée pour faire cette boucle for en parallèle. Il existe des implémentations d'OpenMP qui transforme le code C en C et OpenCL pour un maximum de parallélisation si l'ordinateur comporte un GPU. Ou encore des implémentations qui font toutes seules un code avec des appels MPI, pour pouvoir profiter de la puissance d'un cluster.

    • OpenGL (ES), DirectX. A part par un markéteux de chez Microsoft, je n'ai jamais entendu quelqu'un faire du HPC en utilisant DirectX (enfin juste la partie graphique de DirectX). Pour OpenGL, cela peut marcher, même si maintenant on préfère utiliser de l'OpenCL. L'OpenCL profitant de la puissance des GPU sans être orienté uniquement graphique. Pour ce qui est de faire des rendus graphiques sur des clusters, OpenGL est utilisé. C'est par exemple le choix de Nvidia pour faire du «Cloud Gaming».

    • Mantle est un futur concurrent à OpenGL et OpenCL, mais comme dit dans le journal, on n'en sait rien pour l'instant.

    • RenderScript, HSAIL, DirectCompute/ComputeShader je ne connais pas.

    Pour t'aider dans ta quête de faire du HPC dans le navigateur, voici mes pistes :
    - webGL et webCL si il y a un GPU dispo
    - web workers
    - tu peux aussi tenter de faire un calcul réparti sur plusieurs navigateurs (et donc plusieurs machines). Il y a une lib js qui permet de faire ça, mais je ne me souviens plus du nom.

    Au passage, pourquoi veux-tu faire du HPC dans le navigateur web ?