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

Python Discussion :

Utiliser le gpu simplement


Sujet :

Python

  1. #1
    Membre à l'essai
    Utiliser le gpu simplement
    Bonjour ,

    voila j'aimerais juste lancer mon programme avec mon GPU

    genre tout simplement :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    a=0
    for i in range(10):
        a = a+1
        print(a)


    faire sa avec mon gpu se fait 3 jours je cherche mais ça parle de ce que de machine learning ou de matrix etc.
    moi je veux juste lancer des calculs longs mais pour l'instant un calcul aussi simple que ci-dessus merci d'avance

  2. #2
    Expert éminent sénior
    Salut,

    Citation Envoyé par kzx712 Voir le message
    voila j'aimerais juste lancer mon programme avec mon GPU
    L'utilisation d'un GPU n'est pas dans les fonctionnalités de base du langage. Donc pour l'utiliser, il va falloir trouver une bibliothèque externe adaptée à votre matériel.

    mais ça parle de ce que de machine learning ou de matrix etc.
    moi je veux juste lancer des calculs longs mais pour l'instant un calcul aussi simple que ci-dessus merci d'avance
    GPU c'est pour Graphic Processing Unit, çà sait paralléliser un certain nombre d'opérations sur des tableaux de pixels et il n'y a intérêt à l'utiliser que pour des problèmes qu'on saura reformuler en opérations qu'il sait faire sur les types de données qui vont bien.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    J'ai tester pycuda tensorflow etc etc je veux juste faire
    a+b avec mon GPU tout simplement

    Dans tout les exemples il créer des graph ou des matrice

    Comment faire a+b il y a bien un moyen

  4. #4
    Expert éminent sénior
    Salut,

    Citation Envoyé par kzx712 Voir le message
    je veux juste faire a+b avec mon GPU tout simplement

    Dans tout les exemples il créer des graph ou des matrice
    On va trouver des exemples pour lesquels utiliser un GPU apporte quelque chose. Et si vous voulez juste ajouter 2 scalaires, ben, il va falloir ouvrir la documentation du GPU, de Cuda,... pour imaginer comment faire çà avant de voir comment le traduire en Python avec pyCUDA.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai
    j'aimerais juste faire 1+2 mais avec mon GPU svp

    je test plein de chose a chaque fois sa utilise pas mon GPU je vais dans gestionnaire de tache le PU n'est pas utilisé

    j'ai tester cupy numba etc avec des array des float32 etc etc sa utilise pas le GPU

    dasn les doc il a juste l'ajout de 2 array mais moi je test sa utilise pas le GPU je comprend pas

  6. #6
    Membre éclairé
    vous dites avoir fait plein de test mais vous ne dites pas quoi exactement ...
    quel code ? dans quel contexte ? ect ...

    on ne peux pas vous dire pourquoi ça ne marche pas comme vous voulez si on ne sais même pas ce que vous faites,

    De plus cette discussion tourne un peu en problème XY , on pourrais croire que (attention c'est une spéculation, peut être c'est le problème de départ peut être pas, mais à défaut ça permet de donner un exemple au problème XY) vous avez un code qui est trop long à s’exécuter et que vous pensez que utiliser une carte graphique résoudra le problème, peu être que oui, peu être que non, mais une chose est sur si le problème est "le code est long à s’exécuter" alors vous devez demander "comment le faire tourner sur ma carte graphique" alors ce n'est pas la bonne démarche.

  7. #7
    Expert éminent sénior
    Salut,

    Citation Envoyé par kzx712 Voir le message
    je test plein de chose a chaque fois sa utilise pas mon GPU je vais dans gestionnaire de tache le PU n'est pas utilisé
    Utiliser un GPU n'est pas pour les débutants.

    Vous devez savoir chercher sur Internet pour regarder (tout seul) les problèmes qui se rapportent à votre OS, votre GPU,... simplement pour savoir si le gestionnaire de tâches Windows est capable de visualiser l'utilisation du GPU et dans quelles conditions, trouver des outils plus efficaces, ou voir si la taille du problème est assez importante pour faire travailler assez le GPU,...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre averti
    je test plein de chose a chaque fois sa utilise pas mon GPU je vais dans gestionnaire de tache le PU n'est pas utilisé
    Alors je ne sais pas comment tu fais pour voir que le GPU n'est pas sollicité en faisant une simple addition, mais va falloir quelque chose de plus costaud pour voir quelque chose sur le gestionnaire de tâches windows et ça ne sera certainement pas sur les procs du GPU

    De plus, lorsque tu lances Python il apparaîtra forcément dans le gestionnaire de tache et utilisera forcément du CPU pour interpréter ton code, la partie GPU est géré par ton code, c'est toi qui dis quand tu souhaites utiliser le GPU.

    Sinon avec les bons mots clés je suis tombé sur ça : pyCUDA

    Si ça peut t'aider.

  9. #9
    Membre à l'essai
    Oui oui pycuda , tensorflow ,cupy-cuda ,numba

    En gros faire :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    a=0
    for i in range (1000000000):
        a+=1


    Plus rapidement

    Sinon merci pour les code exemple j'ai pas tester avec alloc memory mais là je suis en déplacement je vois sa dimanche
    Sinon si pour quelq'un lui sa marche je veux bien des screen
    Avec le code si dessus merci les gars

  10. #10
    Membre éclairé
    pouvez vous exprimer clairement quel est le problème de départ ?

    en faites ... qu' attendez vous de votre GPU ? si vous pensez que votre code tournera sur le GPU mieux vous vous tromper...

  11. #11
    Membre à l'essai
    Pourquoi je le trompe ?
    J'aimerai juste avoir plus de puissance de calcul c'est tout
    Déjà la python prend que 13% du CPU
    Je cherche juste un moyenne de calculer plus rapidement soit prendre 100% du CPU ou du coup avec le GPU


    Le problème c'est faire plus rapidement sa :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    a=0
    for i in range (1000000000):
        a+=1


    Merci d'avance

  12. #12
    Membre éclairé
    ce n'est pas comme ça que ça marche

    non votre carte graphique n'est pas forcément plus adapté que votre CPU
    non quand un programme n'est pas assez rapide on n'augmente pas la puissance de calcul en 1er pour aller plus vite
    si python ne prends que 13% de cpu alors c'est que vous avez un cpu avec 8 coeurs (4 avec l'hyper threading / SMT)


    Si vous comme votre code fonctionne plus vite il faut (plus ou moins dans l'ordre):
    • identifier les goulots d’étrangement
    • optimiser votre code
    • repenser votre algorithme
    • utiliser le multi thread (et bien sur comprendre comment marche le GIL)

    vous êtes en plein XY (cf un de mes posts du dessus)

  13. #13
    Expert éminent
    salut,

    Citation Envoyé par kzx712 Voir le message
    Le problème c'est faire plus rapidement sa :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    a=0
    for i in range (1000000000):
        a+=1
    alors ça c'est facile :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    a = 1000000000  # code optimal

    0 boucle, à peine quelques cycles de traitement, passe très bien sur n'importe quel CPU, et ça répond au code que tu donnes.

    sinon je rejoins les commentaires précédents, à savoir que ça ne sert pas à grand chose d'avoir les plans d'une bombe atomique si on n'y connait rien en physique nucléaire juste au prétexte que "oui mais c'est vachement puissant"

    mais après tout, tu peux toujours regarder du côté de la fonction SourceModule et des exemples qui trainent sur le net, comprendre comment ça fonctionne et arriver à l'utiliser sont laissés en exercice.

  14. #14
    Expert éminent
    Bonjour,

    A mon avis, le recours au GPU ne peut apporter un réel avantage que pour les calculs d'images en parallèle.

    Pour prendre un exemple concret, je travaille actuellement sur un programme graphique (PyQt5) de recherche et d'affichage de photos jpeg sur différents critères (y compris les exifs), et la partie critique est le calcul des vignettes 300x200 qui prend... un certain temps (plusieurs minutes pour 1000 photos). Pour accélérer, je fais ces calculs en parallèle en utilisant le module multiprocessing, qui me permet d'exploiter les 8 cœurs (en fait 4x2) de mon CPU, et ça marche plutôt bien.

    Si je voulais aller plus loin, je pense que l'utilisation du GPU de ma carte NVIDIA m'apporterait un avantage. Mais ça me demanderait un investissement en temps qui je n'ai pas envie de mettre pour l'instant.

    Pour simplement accélérer des calculs d'expressions, et dans la mesure où on peut les "paralléliser", l'exploitation des cœurs du CPU avec "multiprocessing" ou "concurrent.futures" marche très bien.

    Et, bien sûr, comme cela a déjà été dit, il faut travailler avant sur l'algorithme: c'est en général la manière la plus élégante d'accélérer les calculs. On peut en plus traduire en C ou C++ le code Python avec Cython (https://pypi.org/project/Cython/) uniquement pour les parties critiques. Ou même écrire directement cette partie critique en C ou C++ et le présenter à Python sous forme de module à importer (voir la doc).
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  15. #15
    Expert éminent sénior
    Salut,

    Citation Envoyé par kzx712 Voir le message
    Pourquoi je le trompe ?
    J'aimerai juste avoir plus de puissance de calcul c'est tout
    Essayez d'imaginer ce que le CPU doit faire pour exécuter a = a + 1.
    Pour rester simple:
    • il va charger le contenu de la case mémoire a dans un registre,
    • puis incrémenter le registre,
    • puis stocker le contenu du registre dans la case mémoire a.

    Plutôt que de faire 1000 fois cette opération sur un CPU, on pourrait imaginer en faire faire la moitié par 2 CPU.

    Déjà on est embêté car si tous deux incrémentent la même case mémoire, à la fin et avec beaucoup de chance on récupèrera 500 (au lieu de 1000). Pour avoir 1000, il faudrait que la séquence des opérations charger, incrémenter, stocker soit exécutée par un seul CPU à la fois (on dit de façon "atomique"). Et pour faire çà, il va falloir que le 2ème CPU attende que le premier ait terminé ces 3 opérations pour enclencher ses 3 opérations à lui.
    Au bilan, si les CPU travaillent la moitié du temps pour faire moitié moins de calculs, on ne gagne rien!

    Pour aller plus vite il faudrait que chaque CPU travaille en parallèle sur sa propre case mémoire... puis qu'à la fin on fasse la somme du résultat de chacun.... Ce qui ne se fera pas sans écrire le code qui va avec.

    Cela fait vous allez vous prendre la loi de Amdahl dans les dents.... Loi qui vous explique les propriétés que doit avoir votre programme pour qu'il puisse aller plus vite si on ajoute des CPU. Çà date de 1967. C'est pas tout jeune! Mais si vous preniez le temps de comprendre ce qu'elle raconte, vous comprendriez peut être pourquoi vous vous trompez.

    En tout cas, çà ne marchera pas juste parce que "vous le valez bien"!

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  16. #16
    Membre à l'essai
    D'accord merci pour tout
    A la base moi je me suis dit peut être que mon GPU est plus puissant que mon CPU je veux pas lancer en parallèle etc juste comme si j'achetais un processeur plus puissant voilà donc merci les gars je v utiliser le multi process psk j'ai 8core
    Donc si j'ai bien compris je peut lancer 8programme en parallèle sur mes 8core et un autre a la fin pour traiter les output des mes 8programme

  17. #17
    Expert éminent sénior
    Citation Envoyé par kzx712 Voir le message
    Donc si j'ai bien compris je peut lancer 8programme en parallèle sur mes 8core et un autre a la fin pour traiter les output des mes 8programme
    Voilà. Cà c'est ce qu'on peut faire.
    Et si vous y arrivez, vous aurez commencé à comprendre un peu quelque chose.

    Bon courage.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

###raw>template_hook.ano_emploi###