Paramètre du noyau passant dans CUDA?

J'ai un newbie doute sur comment puis-noyaux CUDA travail.

Si vous avez le code suivant (qui utilisent la fonction cuPrintf prises de ici):

#include "cuPrintf.cu"

__global__ void testKernel(int param){
    cuPrintf("Param value: %d\n", param);
}

int main(void){

    //initialize cuPrintf
    cudaPrintfInit();

    int a = 456;    

    testKernel<<<4,1>>>(a);

    //display the device's greeting
    cudaPrintfDisplay();

    //clean up after cuPrintf
    cudaPrintfEnd();
}

La sortie de l'exécution est:

Param value: 456
Param value: 456
Param value: 456
Param value: 456

Je n'arrive pas à la façon dont le noyau peut lire la valeur correcte du paramètre que je passe, n'est-il pas alloué dans la mémoire hôte? Peut le GPU lire à partir de l'hôte de la mémoire?

Merci,

Andrea

source d'informationauteur Andrea | 2011-06-27