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

CUDA Discussion :

Kernel itératif et partage de mémoire


Sujet :

CUDA

  1. #1
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Points : 683
    Points
    683
    Par défaut Kernel itératif et partage de mémoire
    Bonjour tout le monde !!!

    Je vous explique rapidement ce que je fais : J'ai donc pour l'instant un kernel qui s'occupe d'un rayon, qui le fait avancer, lorsqu'il coupe un voxel, il accumule la couleur pas à pas à travers le voxel, lorsqu'il arrive à la fin du voxel le kernel s'arrête et je lance ce kernel de manière parallèle autant que je peux en lancer (donc beaucoup de rayon en même temps).

    Mais il existe d'autre voxel derrière le premier voxel parcouru par un kernel et donc d'autre couleur a accumuler.

    Donc mon idée était de faire un lancer de kernel de manière "itérative", le premier kernel fait ce que je viens de décrire mais à la fin de son parcours il sauvegarde la position du rayon et la couleur accumulé jusque là puis un nouveau kernel est lancé en prenant la position du rayon et la couleur accumulé par le précédent kernel et refait la même chose etc...

    Mais je ne sais pas trop comment faire pour lancer des kernels de manière "itérative" et permettre le partage d'information entre ceux ci.

    Je mets un petit schéma pour mieux expliquer. Donc le but est de pouvoir lancer une multitude de kernel en parallèle (comme je le fais déjà) mais qui eux même lorsqu'il s'arrête lance un autre kernel en lui transmettant deux valeurs : position du rayon (pour reprendre où l'ancien kernel c'est arrêté) et la couleur jusque là accumulé.
    Un bloc de kernel "itératif" s'arrêtera lorsqu'il n'y a plus de voxel à parcourir ou alors que l'opacité est égale ou supérieur à 1.

    Voilà j'espère être assez clair si non vous n'hésitez pas a me poser des questions.

    Merci d'avance

  2. #2
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Points : 683
    Points
    683
    Par défaut
    Je vais reformuler mon problème car peut être n'est il pas assez clair.
    En fait ce que j'aimerais faire c'est : J'ai un kernel de taille suivante :
    Nombre de blocs : 32x32
    Nombre de threads par blocs : 16x16

    A chaque fin d'exécution d'un thread, j'aimerais sauvegarder deux valeurs qui pourront être lu par un autre kernel du même type qui sera lancé après l'arrêt total du kernel précédent.

    En gros j'ai un seul kernel qui fait son affaire, chaque thread dans ce kernel fait son taf et sauvegarde les deux données.

    Je relance le même kernel, je veux qu'il puisse charger les données enregistrés juste avant.

    Mais pour faire ceci, je ne sais pas quel type de mémoire je dois utiliser et comment faire exactement.

    Si je suis toujours pas clair, j'essaierais de faire encore mieux.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 71
    Points : 59
    Points
    59
    Par défaut
    Hello,

    Merci pour ton second message, le premier n'était effectivement pas très clair

    Pour faire ce que tu veux faire, il te suffit d'utiliser la mémoire globale.
    Chaque thread va calculer les X valeurs et tu les stocks dans X tableaux à 1 dimension stocké en mémoire globale.

    Quand tu relances ton kernel, chaque threads va reprendre la valeur qui lui est associé dans chaque tableau.

  4. #4
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Points : 683
    Points
    683
    Par défaut
    Merci pour ta réponse mais j'avais trouvé mon bonheur et maintenant j'ai fini ce que je voulais faire
    Mais merci quand même !!!

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

Discussions similaires

  1. Partage de mémoire entre processus
    Par Didj7 dans le forum Threads & Processus
    Réponses: 3
    Dernier message: 25/05/2008, 23h33
  2. partage de mémoire entre excel et les autres
    Par potili2 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/09/2007, 15h08
  3. Partage de mémoire inter-processus en C#
    Par cinemania dans le forum Framework .NET
    Réponses: 1
    Dernier message: 11/04/2007, 19h21
  4. Réponses: 4
    Dernier message: 10/04/2007, 12h29
  5. Partage de mémoire entre 2 exe
    Par ejaecker dans le forum Delphi
    Réponses: 12
    Dernier message: 09/09/2006, 15h03

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