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

Threads & Processus C++ Discussion :

[CUDA] Problème avec des matrices supérieures à 22x22


Sujet :

Threads & Processus C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Points : 6
    Points
    6
    Par défaut [CUDA] Problème avec des matrices supérieures à 22x22
    Bonjour,

    Dans le cadre d'un stage, je dois parallèliser une appli en utilisant entre autre CUDA. Je dois également faire des tests de performance pour montrer l'intérêt d'utiliser GPGPU. Pour ce test, je fais une simple multiplication de 2 matrices carrées de flottants, rien de bien compliqué.

    Malheureusement, je suis confronté à un petit souci : lorsque je fais des matrices plus grandes que 22x22, la matrice résultat ne contient que des 0. Voici les specs de la carte graphique en utilisant cudaGetDeviceProperties() :
    Name: GeForce 8400 GS
    Memory: 255 MB
    Memory/Blck: 16 kB
    Clock: 1250 MHz
    Multiproc. Count: 1
    Max Threads/Block : 512
    MaxThreadsDim : 512 512 64
    MaxGridSize: 65535 65535 1
    Voici les portions de code importantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    #define MATRIX_WIDTH 22 // Si > 22, problème
    #define MEMSIZE MATRIX_WIDTH*MATRIX_WIDTH * sizeof( float )
     
    __global__ void multMatrixKernel( float* A, float* B, float* R )
    {
       float res = 0;
       for( unsigned int i = 0; i < MATRIX_WIDTH; ++i )
       {
          float e1 = A[threadIdx.y * MATRIX_WIDTH + i];
          float e2 = A[i                 * MATRIX_WIDTH + threadIdx.x];
          res += e1 * e2;
       }
     
       R[threadIdx.y * MATRIX_WIDTH + threadIdx.x] = res;
    }
     
    void multMatrixGPU( float* A, float* B )
    {
       float* dA;
       float* dB;
       float* dR;
     
       float* R = (float*) malloc( MEMSIZE );
     
       cudaMalloc( (void**) &dA, MEMSIZE );
       cudaMalloc( (void**) &dB, MEMSIZE );
       cudaMalloc( (void**) &dR, MEMSIZE );
     
       cudaMemset( dR, 0x00, MEMSIZE );
     
       cudaMemcpy( dA, A, MEMSIZE, cudaMemcpyHostToDevice );
       cudaMemcpy( dB, B, MEMSIZE, cudaMemcpyHostToDevice );
     
       multMatrixKernel<<<1, dim3( MATRIX_WIDTH, MATRIX_WIDTH )>>>( dA, dB, dR );
     
       cudaMemcpy( R, dR, MEMSIZE, cudaMemcpyDeviceToHost );
     
       cudaFree( dA );
       cudaFree( dB );
       cudaFree( dR );
     
       writeMatrix( "GPU.out", R );
     
       free( R );
    }
    Précisions supplémentaires : la machine est sous Ubuntu x64 et l'utilisation d'un plus grand nombre de blocks est la prochaine étape ;-)

    Merci d'avance pour votre aide!
    S.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Une étourderie...

    Nombre max de threads par block : 512.
    Or 22*22 = 484 et 23*23 = 529 > 512 d'où Configuration incorrecte.

    Désolé ;-)

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

Discussions similaires

  1. Réponses: 43
    Dernier message: 14/06/2007, 17h56
  2. Problème avec des composants non déclarés
    Par vbcasimir dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/01/2005, 11h17
  3. Réponses: 5
    Dernier message: 19/08/2004, 11h11
  4. [STRUTS] Problème avec des ActionForm
    Par zarbydigital dans le forum Struts 1
    Réponses: 2
    Dernier message: 29/03/2004, 13h49
  5. Problèmes avec des vues
    Par dady dans le forum MFC
    Réponses: 22
    Dernier message: 09/01/2004, 16h26

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