Можете ли вы создавать темы вне __ global __? - PullRequest
2 голосов
/ 30 июня 2011

Могу ли я создавать потоки в _ устройстве _ , например:

__device__ float func() 
{
  int idx = threadIdx.x + blockIdx.x * blockDim.x;

  // do stuff

  return some_float;
}

Или же вы можете создавать потоки только в _ глобальных _ ядрах?

1 Ответ

4 голосов
/ 30 июня 2011
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>>>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...