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

Python Discussion :

Utiliser le gpu simplement [Python 3.X]


Sujet :

Python

  1. #1
    Invité
    Invité(e)
    Par défaut 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
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    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
    Invité
    Invité(e)
    Par défaut
    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
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    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
    Invité
    Invité(e)
    Par défaut
    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é
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    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
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    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 Avatar de nekcorp
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2006
    Messages : 592
    Points : 383
    Points
    383
    Par défaut
    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
    Invité
    Invité(e)
    Par défaut
    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é
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    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
    Invité
    Invité(e)
    Par défaut
    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é
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    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 Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    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
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    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
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    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
    Invité
    Invité(e)
    Par défaut
    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
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser le GPU en c#.
    Par fred61 dans le forum C#
    Réponses: 5
    Dernier message: 17/10/2017, 10h06
  2. Utilisation des GPU ?
    Par Mouams dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 23/07/2010, 14h00
  3. Utilisation MPI et GPU
    Par moomba dans le forum Fortran
    Réponses: 6
    Dernier message: 01/12/2008, 19h28
  4. Monitorer l'utilisation du GPU
    Par nyaman dans le forum DirectX
    Réponses: 6
    Dernier message: 12/11/2008, 22h08
  5. Utiliser simplement un JDialog
    Par piotrr dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 19/02/2008, 09h49

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