Распределение потоков CUDA - PullRequest
       2

Распределение потоков CUDA

1 голос
/ 15 октября 2010

Я ознакомился с руководством по программированию CUDA и не могу понять метод распределения потоков, показанный ниже:

dim3 dimGrid( 2, 2, 1 );
dim3 dimBlock( 4, 2, 2 );
KernelFunction<<< dimGrid, dimBlock >>>(. . .);

Может ли кто-нибудь объяснить, как потоки выделяются для вышеуказанного условия?

1 Ответ

5 голосов
/ 17 марта 2011

Интуитивно понятное представление о сетке и блоке заключается в их визуализации:

  • Сетка : Сетка - это решетка из горизонтальных и вертикальных линий. Таким образом, он имеет только 2 измерения.
  • Блок : Подумайте о деревянном блоке. Он имеет все 3 измерения: длина, ширина и высота.
  • Блок состоит из нитей.
  • Сетка состоит из блоков.

Ваш dimBlock( 4, 2, 2 ) означает, что каждый блок имеет 4 x 2 x 2 = 16 потоков. Ваш dimGrid( 2, 2, 1 ) означает, что сетка имеет 2 x 2 x 1 = 4 блоков. Таким образом, ваше ядро ​​запускается в сетке из 4 блоков, где каждый блок имеет 16 потоков. В заключение, ваше ядро ​​будет запущено с 16 x 4 = 64 потоков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...