Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calcul sur GPU

openMP ? openCL ? GCC ?

    17 juillet 2019 à 21:53:03

    Bonjour à tou.te.s

    J'aimerais m'initier à la programmation sur GPU mais j'ai vraiment du mal, je n'ai rien trouvé d'autres que des slides ou des conférences avares d'exemples concrets. J'aimerais donc obtenir quelques renseignements et pour ce faire j'aimerais poser quelques questions. N'hésitez pas à me renvoyer vers un cours que vous trouvez bien fait si toutefois vous en connaissez un.

    Je précise que je suis sous debian avec le compilateur GCC, carte graphique Nvidia. En outre je ne suis pas informaticien, mais mathématicien ayant quelques connaissances pratiques sur la programmation.

    - J'ai cru comprendre qu'il est possible de programmer sur GPU avec openMP, grace à la la directive

    #pragma omp target

    je crois comprendre que celle ci crée une zone de directives de calcul qui peut ensuite être executée sur un gpu (entre autres). mais supposez qu'on ait le fichier main.cpp :

    #include <cmath>
    
    int main()
    {
      const int size = 256;
      double sinTable[size];
    
      #pragma omp target teams distribute parallel for map(from:sinTable[0:256])
      for(int n=0; n<size; ++n)
      {
        sinTable[n] = std::sin(2 * M_PI * n / size);
      }
    
      // the table is now initialized
    
      return 0;
    }

    puis qu'on compile avec la commande :

    g++ -fopenmp main.cpp -o exec

    comme ce serait le cas pour un programme qui s'execute en parallele sur le CPU. Dans une telle situation je crois qu'il serait bien naïf de croire que lancer la commande

    ./exec

    executerait le programme sur mon GPU (d'ailleurs je ne sais pas trop comment controler si mon programmer s'execute effectivement sur mon GPU). Alors comment faire pour recoller les morceaux et executer effectivement une partie du programme sur mon GPU ?

    - J'ai cru comprendre que dans le domaine de la programmation sur GPU les API OpenCL et CUDA jouent un rôle. Je me doute bien qu'elles ont chacune leur particularité mais sont-elles substituables ? J'ai par exemple vu que CUDA contenait un compilateur (nvcc), est-ce que GCC est inadapté pour le calcul sur GPU ?

    - Est-il possible de programmer sur GPU en utilisant uniquement des outils open sources ? Typiquement : OpenMP, OpenCL, GCC.

    Je vous remercie d'avance pour vos réponses

    Bien cordialement




    • Partager sur Facebook
    • Partager sur Twitter

    Calcul sur GPU

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown