Базовая архитектура графического процессора - PullRequest
0 голосов
/ 04 июля 2018

Я использую CUDA в течение нескольких недель, но у меня есть некоторые сомнения относительно распределения блоков / warps / thread.

Прежде всего, я хотел бы понять, правильно ли я понял эти факты:

  1. В GPU есть несколько потоковых процессоров, которые могут работать параллельно.

  2. Каждый SM имеет блоки, а каждый блок имеет собственную разделяемую память.

  3. Внутри блоков у нас есть ядра CUDA.

  4. И внутри каждого SM у нас также есть планировщики Деформации.

  5. Каждая основа состоит из 32 нитей. и деформации внутри блока, работающего в серийном режиме. Это означает, что одна Деформация должна закончиться, а затем может начаться следующая Деформация.

  6. Все блоки в графическом процессоре не могут работать параллельно одновременно. а количество параллельных блоков ограничено. (Но я не знаю, как и сколько)

Теперь мой главный вопрос:

Предположим, у нас есть 2 разные ситуации:

  1. Сначала у нас 32 потока на блок (1 деформация) и 16384 объекта (или операнда).

  2. Во-вторых, у нас есть 64 нити на блок (2 деформации) с одинаковым количеством объектов.

Почему первый занимает больше времени для запуска программы? (Другие условия такие же, и даже если у нас 128 потоков на блок, это быстрее, чем эти два)

Заранее спасибо

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