При вызове ядра CUDA для конкретной конфигурации потока существуют ли какие-либо строгие правила относительно того, в каком пространстве памяти (устройство / хост) должны находиться параметры ядра и какого типа они должны быть?
Предположим, я запускаю одномерную сетку потоков с помощью
kernel<<<numblocks, threadsperblock >>> (/*parameters*/)
Могу ли я передать целочисленный параметр int foo
, который является целочисленной переменной host ,
напрямую в ядро CUDA? Или я должен cudaMalloc
память для одного целого числа, скажем dev_foo
, а затем cudaMemcpy
foo
в devfoo
, а затем передать devfoo
в качестве параметра ядра?