Сетка потоковых блоков и мультипроцессора

Руководство по программированию CUDA гласит:

Архитектура CUDA построена на масштабируемом массиве многопоточных потоковых мультипроцессоров (SM). Когда программа CUDA на хост-процессоре вызывает сетку ядра, блоки сетки перечисляются и распределяются среди многопроцессорных систем с доступной производительностью. Потоки блока потоков выполняются одновременно на одном мультипроцессоре, а несколько блоков потоков могут выполняться одновременно на одном мультипроцессоре. По мере того как блоки потоков завершаются, новые блоки запускаются на свободных мультипроцессорах.

Означает ли это, что если у меня есть видеокарта с 2-мя многопроцессорными ядрами x n-cuda и если ядро ​​запускается как

MyKernel<<<1,N>>>(sth);

Один из мультипроцессоров будет простаивать, так как я запускаю один блок из N потоков?

1 ответ

Ты прав.

Во всех точных архитектурах CUDA блок только когда-либо запланирован и выполняется на одном мультипроцессоре. Если вы запускаете один блок на устройстве с несколькими мультипроцессорами, все эти мультипроцессоры, кроме одного, будут простаивать.

Другие вопросы по тегам