Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Cours] Introduction à la prog. sur GPU avec CUDA

    11 mai 2017 à 2:29:54

    Bonjour à toutes et à tous :D

    Je suis en train de travailler sur ce cours, "Introduction à la programmation sur GPU avec CUDA".
    Ceci est mon premier cours sur le site, et je suis d'ailleurs un nouveau venu, je me suis inscrit à l'occasion.

    J'ai décidé de le mettre disponible sur le CourseLab, même s'il n'est pas terminé, afin de recevoir des retours de la part de la communauté. Ceci me permettra, notamment, de pouvoir bénéficier d'une certaine expérience sur les attentes et les habitudes des utilisateurs d'OpenClassrooms lorsque je rédigerai les prochains chapitres, puisque je serai alors fort des modifications que j'aurai eu à faire sur ceux qui sont déjà rédigés.

    Le lien CourseLab (il fonctionne sur mon navigateur lorsque je suis connecté, j'espère que ce sera également le cas pour vous) :

    [CourseLab] Introduction à la programmation sur GPU avec CUDA

    J'ai actuellement "terminé" les trois premiers chapitres en termes de rédaction et de code présenté. De la relecture et de la reformulation seront, je suppose, toujours nécessaires.
    Je prévois au minimum deux chapitres additionnels (ce sont actuellement de petits chapitres, j'ai préféré fonctionner ainsi pour structurer mon cours et permettre aux utilisateurs de le suivre par petites étapes si c'est qu'ils souhaitent), mais je me ferai une joie de compléter par d'autres chapitres plus "avancés" (techniquement parlant) si celui-ci reçoit de bons retours et surtout si cela intéresse la communauté.

    Je vais tâcher de présenter un peu mieux ce cours, et me présenter moi-même.

    Pour qui ? :o

    Pour les programmeurs à l'aise avec les langages C et/ou C++, qui ont l'habitude de réaliser des applications en console classiques sur CPU.
    Si le développement CUDA est possible sur Linux, j'ai choisi pour mon cours l'utilisation de Visual Studio sous Windows. Cela ne devrait vous poser aucun problème, si vous êtes un habitué (ouverture et compilation de projets, rien de bien sorcier) sauf bien sûr si vous rencontrez des soucis pour installer et configurer CUDA sur votre machine. L'installation de CUDA sous Linux n'est pas l'objet de ce cours, qui se concentre sur l'introduction aux programmeurs à ce merveilleux monde de la programmation sur GPU.
    En revanche, il est nécessaire de disposer dans sa machine d'une carte graphique Nvidia.

    Pour quoi faire ? :o

    Pour apprendre à réaliser des applications qui seront capables de destiner certains calculs au GPU.
    Pour en découvrir plus sur votre hardware et la façon dont vous pouvez exploiter ses capacités en calcul parallèle.
    Pour aller plus loin dans la programmation en C, pour étendre vos domaines de compétences, pour découvrir de nouvelles choses tout simplement.

    Pourquoi ce cours ? :o

    J'ai déjà pu réaliser une introduction à la programmation GPU, toujours avec CUDA, auprès de développeurs et d'autres professionnels du monde du jeu vidéo. J'ai un grand intérêt pour l'enseignement et j'ai déjà été qualifié de pédagogue durant mon parcours professionnel. C'est un compliment que je reçois avec beaucoup de plaisir, car j'aime transmettre des connaissances dès lors que cela est possible.

    Mon parcours ? :-°

    Initialement issu de la filière Scientifique au baccalauréat, j'ai ensuite officiellement entamé mon parcours dans le domaine du développement en allant en IUT pour un parcours de DUT Informatique. Je dis officiellement, car officieusement, j'avais fait mes premiers pas en classe de 4ème avec un livre pour débuter en programmation avec Ruby.

    Malheureusement, ce cursus était un DUT Informatique de gestion (volontairement déguisé, je suppose, car cette appellation ne figurait que sur les feuilles d'examens, et nulle part ailleurs). L'emploi du temps était représentatif, autant de comptabilité-gestion que d'algorithmique. Très peu de pratique, à mon grand dam. Beaucoup de théorie rébarbative. Des langages à la fois vieux et dépassés.

    Ma redirection se fait suite à cette première année décevante. J'entre en BTS Iris, une formation aujourd'hui disparue. Derrière son appellation un peu pompeuse, "Informatique et réseaux pour l'industrie et les services techniques", se cache un programme assez simple : développement orienté objet, web, installation et configuration de réseaux. Si le programme exige de travailler en C++, les professeurs estiment que nous ne pourrons détrôner des seniors travaillant avec ce langage depuis bien avant notre naissance. Nous l'étudirons succinctement, pour pouvoir faire face aux examens, mais nous travaillerons en réalité essentiellement avec Java et C#.
    La formation est concrète, structurée, et en 6 mois je me sens beaucoup plus à l'aise en développement qu'après une année complète à l'IUT.

    Suite à cette formation, j'effectue un entretien et un examen d'entrée pour une école de jeu vidéo dans le sud de la France (parce que Paris est impensable à la fois en termes de logement/budget et de santé). Mes résultats sont bons, j'entre en deuxième année, la formation s'étalant en principe sur deux ans (mais il est commun pour les BTS d'entrer en deuxième année directement).
    J'y étudie le C/C++ plus en profondeur, le multithreading de façon bien plus approfondie, et la performance en général (optimisation, notamment). Je développe une passion pour ce milieu et je m'intéresse alors à la programmation sur GPUs en auto-didacte avec un livre qui me sera offert par une personne de ma famille proche.

    Quelques mois après ces deux années en école spécialisée "jeux vidéos", je décroche mon premier emploi en tant que programmeur CUDA dans une startup parisienne du domaine des télécoms.
    J'ai quitté ce poste depuis, et n'ai pas encore eu l'occasion à nouveau de travailler avec cette technologie, mais j'espère y revenir tôt ou tard, que ce soit pour implémenter des applications ou former des collègues.

    Voilà, j'espère que vous y voyez plus clair maintenant ! :)
    Sinon, n'hésitez pas à venir poser vos questions ici, je me ferai une joie d'en discuter avec vous.

    • Partager sur Facebook
    • Partager sur Twitter
      13 mai 2017 à 10:07:28

      Lu'!

      J'ai passé mes deux années de Master à bosser avec CUDA (et un stage à paralléliser une simulation astrophysique dessus) et j'ai encore pas joué avec par la suite (à la base je comptais aussi faire un tutoriel mais je n'ai finalement jamais trouvé le temps). Si tu veux je peux relire ça et te donner des retours, par contre je te préviens je suis un tortionnaire avec les cours rédigés ;) .

      Par contre je suis un poisson rouge avec ce que je prévois de faire, donc hésite pas à m'envoyer un MP si tu n'as pas encore eu de message de moi mardi soir.

      • Partager sur Facebook
      • Partager sur Twitter

      Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

        14 mai 2017 à 0:47:58

        Salut,

        Ben oui, n'hésite pas à lire le début du cours et faire tes retours. Je ne sais pas ce que tu entends par "tortionnaire", mais en ce qui me concerne tant que c'est constructif et que c'est dit gentiment tous les retours sont les bienvenus. Si c'est un peu trop violent, je me réserve le droit de laisser les remarques rentrer par une oreille et sortir par l'autre. ;)

        Après je ne pense pas qu'il y ait suffisamment de matière pour faire naître des débats techniques, vu que le cours est pensé pour fournir une introduction tout en douceur. Pour l'instant il n'est pas prévu d'y aborder toute la partie réellement technique (mémoires, registres, warps, SIMD, optimisations par architecture, etc). Pour l'instant, dans le plan du cours, ce que j'ai prévu d'aborder de plus "avancé" c'est l'utilisation du profiler pour consulter le code PTX/SASS.

        Si le cours rencontre suffisamment de "succès" je suis sûr que ça me motivera pour aborder des aspects plus avancés, mais pour démarrer je voulais vraiment le concevoir comme une introduction accessible et qui nécessite "seulement" un background correct en C et en threading CPU.

        Quelque part on pourrait juger que c'est mensonger de présenter la programmation CUDA en faisant abstraction du hardware, vu que c'est le cœur du sujet, mais je pense que ce sera plus difficile pour le cours de trouver un public et pour moi de le rédiger si je vais trop loin dans les notions abordées.

        En tout cas je suis content d'avoir un premier signe de potentiel futur retour, tu es le seul à t'être manifesté pour le moment !

        • Partager sur Facebook
        • Partager sur Twitter

        [Cours] Introduction à la prog. sur GPU avec CUDA

        × 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