Какое максимальное количество блоков возможно в CUDA? - PullRequest
13 голосов
/ 23 марта 2012

Теоретически вы можете иметь 65535 блоков на размерность сетки, до 65535 * 65535 * 65535.

Мой вопрос: если вы вызываете ядро, подобное этому kernel<<< BLOCKS,THREADS >>>() (без объектов dim3), какое максимальное количество доступно для БЛОКОВ?

В моем приложении я установил его на 192000 и, похоже, работает нормально ... Проблема в том, что используемое ядро ​​изменяет содержимое огромного массива, поэтому, хотя я проверил некоторые части массива и, казалось, все в порядке, я не могу быть уверен, что ядро ​​в других местах вели себя странно.

Для записи у меня 2,1 GPU, GTX 500 ti.

Ответы [ 4 ]

12 голосов
/ 23 марта 2012

С вычислительной возможностью 3.0 или выше вы можете иметь до 2 ^ 32 - 1 блоков в измерении x и не более 65535 блоков в измерениях y и z. Смотрите таблицу H.1. Поддержка функций на вычислительные возможности Руководства по программированию CUDA C Версия 9.1 .

Как указывал Паван, если вы не предоставите dim3 для конфигурации сетки, вы будете использовать только x-измерение, поэтому здесь применяется ограничение по размеру.

10 голосов
/ 26 марта 2017

В случае, если кто-нибудь приземлится здесь на основе поиска Google (как я только что сделал):

Nvidia изменила спецификацию, так как этот вопрос был задан. С вычислительной возможностью 3.0 и новее, x-размерность сетки потоковых блоков может быть до 2'147'483'647 или 2 ^ 31 - 1 .

См. Ток: Технические данные

2 голосов
/ 24 марта 2012

65535 в одном измерении.Вот полный стол

0 голосов
/ 06 декабря 2018

Я вручную проверил на своем ноутбуке (MX130), программа падает, когда #blocks> 678 * 1024 + 651. Каждый блок с 1 потоком. Добавление еще одного блока дает SegFault. Кернальный код не имеет сетки, только линейная структура.

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