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

C++ Discussion :

[Projet] CUDA - memory management


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 148
    Points
    148
    Par défaut [Projet] CUDA - memory management
    Bonjour,

    J'ai pour projet de faire un addon a CUDA.
    Un gestionnaire de mémoire permettant de minimiser les transfert et de les faciliter.
    Exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    coherant_block<int> block(new int);
    block = 4;
    changeValue<<<1,1>>>(block.gpu());
    // la valeur est la même sous le GPU et CPU
    Jusqu'ici implémentation fut simple, mais ce n'est pas assez.
    Le problème de départ est toujours la, les transfert sont toujours présent est lent.
    J'ai donc eu l'idée de faire des memory modifiers.
    En gros l'idée est de ne pas renvoyer toute la mémoire mais de renvoyer des block qui vont modifier la mémoire qui a changé sur le CPU ou le GPU.
    Par exemple j'ai un tableau de 10 000 int mais seulement un a été modifié ; avec le fonctionnement standard il faudrait copier la totalité de la mémoire donc 9 999 copie inutiles. A l'aide des memory modifiers il n'y aurait "que" 12 octets de transfert.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct memory_modifier
    {
    int offset;
    void* data;
    };
    Avec ceci viendrait le count qui donnerait combien de block ont été modifié.
    Grace a ce procédé il serait donc possible avec plusieurs optimisation "on the fly" de réduire la latence GPU <-> CPU de façon considérable.

    Donc revenons en au fait, pourquoi poster ?
    En fait je n'arrive pas a trouver une facon propre de détecter si la fonction est __host__ __device__ ou __global__, ce qui limite mon système a avoir toute la partie CPU compilé par le compilateur VS ou Intel et tout le GPU sur nvcc et rend donc le code peu compréhensible.
    Actuellement je fais sois des defines soit un système de condition gérer dans la classe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // call the cuda func
    test<<<64,64>>>(myBlock.gpu());
    myBlock.enterCPUCycles();
    // the func
    __global__ void test(coherant_block<int>* block)
    {
    // do some work
    }
    Voila, je précise que le memory manager sera aussi atomic sur le CPU.

    Merci d'avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    C'est quoi ces <<< ?
    Boost ftw

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    Juste pour signaler qu'il existe une F.A.Q. Cuda et un excellent tutoriel d'introduction à CUDA.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 148
    Points
    148
    Par défaut
    Oui d'ailleurs elle contient des erreurs au passage ^^
    C'est quoi ces <<< ?
    C'est spécifique a CUDA c'est pour appeler une fonction sur le GPU en spécifiant la taille de la grille et la taille des blocks.

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par yamashi Voir le message
    Oui d'ailleurs elle contient des erreurs au passage ^^
    C'est fort possible. N'hésites pas à les signaler en ouvrant une discussion dans ce forum ou en poursuivant cette discussion.
    C'est grâce aux lecteurs compétents et attentifs comme toi qu'on améliore les ressources proposées.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 148
    Points
    148
    Par défaut
    Impossible d'accéder a tes liens :/
    yamashi, vous n'avez pas la permission d'accéder à cette page.

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par yamashi Voir le message
    Impossible d'accéder a tes liens :/
    Arf. Désolé. Crées une nouvelle discussion dans ce forum où normalement tu dois pouvoir accéder.

Discussions similaires

  1. Projet Jeux Memory
    Par Luffy49 dans le forum C#
    Réponses: 17
    Dernier message: 24/05/2007, 00h28
  2. Memory Managment dans vos programmes
    Par Clad3 dans le forum C++
    Réponses: 11
    Dernier message: 25/07/2006, 01h25
  3. Réponses: 22
    Dernier message: 03/07/2006, 22h22
  4. heap memory manager
    Par flames dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 02/06/2006, 12h17

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