int idx = threadIdx.x + blockIdx.x * blockDim.x;
Краткий ответ: приведенная выше строка кода полностью подходит для функций __device__
.
Однако он не "создает" темы.Он просто вычисляет индекс в idx
для текущего потока, используя значения этого потока: threadIdx.x
, blockIdx.x
и blockDim.x
.
Единственный способ создать потоки в CUDA - это запустить ядроиспользуя синтаксис <<<>>>
, чтобы указать количество и группировку потоков, используя размеры блока и сетки:
int blockSize = 128;
int gridSize = (N + blockSize - 1) / blockSize;
myKernel<<<gridSize, blockSize>>>();