2016-07-15 3 views
2

Какова связь между рабочим элементом и потоковым процессором (ядро cuda). Я где-то читал, что количество рабочих элементов ДОЛЖНО значительно превышать количество ядер, в противном случае нет улучшения производительности. Но почему это так? Я думал, что 1 основной репресент 1 работает. Может ли кто-нибудь помочь мне понять это? Рабочие станции Opencl и потоковые процессоры

ответ

0

Причина в основном заключается в планировании - один ядро ​​/ процессор/блок обычно может запускать несколько потоков и переключаться между ними, чтобы скрыть задержку памяти (SMT). Таким образом, для каждого ядра обычно хорошая идея иметь несколько потоков, стоящих в очереди за него.

Поток обычно соответствует хотя бы одному рабочему элементу, хотя в зависимости от драйвера и оборудования несколько рабочих элементов могут быть объединены в один поток, чтобы использовать возможности SIMD/vector для ядра.

1

Графические процессоры и большинство других аппаратных средств имеют тенденцию делать арифметические операции намного быстрее, чем они могут получить доступ к большей части доступной памяти. Имея намного больше рабочих элементов, чем у вас есть процессоры, позволяет планировщику размахивать памятью, а те рабочие элементы, которые уже прочитали свои данные, используют аппаратное обеспечение ALU для выполнения обработки.

Here is a good page about optimization in opencl. Прокрутить вниз до « 2.4. Извлечение« дорогого »доступа к глобальной памяти GPU», где оно входит в эту концепцию.

Смежные вопросы