У меня есть сомнения новичка относительно того, как работают ядра 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
Я не могу понять, как ядро может прочитать правильное значение параметра, который я передаю, разве он не размещен в памяти хоста?Может ли графический процессор читать из памяти хоста?
Спасибо,
Андреа