Подтвердить что ты не робот

Есть ли максимальное количество потоков в CUDA?

Существует ли максимальное количество потоков, которые могут быть созданы в CUDA?

Чтобы уточнить, я имею в виду потоки CUDA, как в потоке, который позволяет выполнять операции с ядрами и памятью.

4b9b3361

Ответ 1

Я не видел предела в любой документации, но это не означает, что все потоки будут выполняться одновременно, поскольку это жесткий аппаратный предел (многопроцессоры, регистры и т.д.).

Ответ 2

Не существует реалистичного ограничения количества потоков, которые вы можете создать (не менее 1000). Однако существует ограничение на количество потоков, которые можно эффективно использовать для достижения concurrency.

В Fermi архитектура поддерживает 16-сторонние одновременные запуска ядра, но есть только одно соединение от хоста к GPU. Таким образом, даже если у вас есть 16 потоков CUDA, они в конечном итоге будут перенаправлены в одну очередь HW. Это может создать ложные зависимости данных и ограничить количество concurrency, которое легко получить.

С Kepler количество соединений между Host и GPU теперь составляет 32 (вместо одного с Fermi). Благодаря новой технологии Hyper-Q теперь гораздо проще поддерживать работу GPU с одновременной работой.

Ответ 3

В соответствии с этой презентацией NVIDIA max составляет 16 потоков (на ферми). http://developer.download.nvidia.com/CUDA/training/StreamsAndConcurrencyWebinar.pdf

Чтобы уточнить, я успешно создал более 16 потоков, но я думаю, что аппаратное обеспечение может поддерживать только 16 параллельных ядер, поэтому избыточные траты теряются в терминах concurrency.

Кеплер, вероятно, отличается.