Передача параметра ядра в CUDA?

У меня есть сомнения новичка относительно того, как работают ядра CUDA.

Если у вас есть следующий код (который использует функцию cuPrintf , взятую из здесь ):

#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();
}

Результат выполнения:

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

Я не могу понять, как ядро ​​может считывать правильное значение параметра, который я передаю, разве оно не размещено в памяти хоста? Может ли графический процессор читать из памяти хоста?

Спасибо,

Андреа

16
задан karlphillip 1 July 2011 в 21:10
поделиться