2013-06-29 7 views
2

Как обрабатывать GPU многопоточность?Как работает многопоточность в графических процессорах?

В CPU, например, для каждого потока будут созданы независимые копии файла регистра. Но с большими регистрационными файлами, как в GPU, это будет невозможно. Итак, как графические процессоры обрабатывают потоки? Соответствуют ли они им в одном регистре? Что делать, если некоторые регистры используются более чем в одном потоке? Как это работает ?

+0

Если количество общих потоков кратно номеру ядра (n.thread = n.core * X), ​​то потоки выдаются в волновых фронтах, как 1 поток за другим, а конвейеры более заняты, чем версия одного потока (n. thread = n.core) Они имеют один и тот же файл реестра, по крайней мере, в моем hd7870. Таким образом, если вы добавляете еще больше потоков, вы должны уменьшить использование регистров на поток. Возможно, он может начать проливать их на основную память gpu. В программе Nbody я использовал 51200 потоков для 1280 ядер, каждый поток использовал более 20 переменных с плавающей запятой. Для нескалярных (векторных) типов архитектуры это может ограничить maxthreads –

+0

Если gpu извлекает переменные потока из основной памяти, это будет очень медленным. Файл регистра может быть в 20-100 раз больше полосы пропускания основной памяти. Возможно, разные в больших кеш-картах, например, тесла. –

ответ

4

Графические процессоры NVIDIA имеют 1-4 планировщика перекосов в потоковом многопроцессорном процессоре (SM). Каждый планировщик SM warps имеет локальный файл регистров. Деформации назначаются планировщику warp, а регистры выделяются из файла регистра. Распределение длится в течение всего срока службы основы. В каждом цикле каждый планировщик деформаций выбирает подходящий warp (не застопорился) из своего активного списка деформаций и выдает 1-2 инструкции (CC < = 2.0 может только один выпуск).

Это отличается от процессоров SMT, которые имеют отдельные копии некоторых ресурсов, но совместно используют интерфейсы и пути выполнения. Процессоры Intel, поддерживающие HyperThreading, могут отправлять инструкции из обоих аппаратных потоков каждый цикл в зависимости от арбитража портов отправки.

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