Вопрос деформации SIMT - PullRequest
0 голосов
/ 05 мая 2011

У меня возникли проблемы с пониманием выполнения SIMT на графическом процессоре.Пока что у меня есть потоки, помещенные в «деформации» (например, 32 потока / деформация).Эти потоки будут одного типа и могут работать параллельно (но могут ветвиться и работать независимо).

Книга, которую я читаю, смущает меня.'It is then up to the instruction unit to select warps that are ready to execute their next instruction, and this instruction is then issued to the active threads of the warp. Each SP core executes an instruction for four individual threads of a warp using four clocks'.

В выбранной архитектуре было 8 SP и 32 потока на основу.Поэтому каждому ИП назначается 4 потока.Почему бы просто не назначить 1 поток / SP?Что значит «использовать четыре часа»?каждая инструкция занимает 1 час и делает это 4 раза (по 1 для каждого потока)?

Другая проблема, с которой я столкнулся, заключается в том, что если у вас есть деформация с 32 потоками, каждый из которых содержит условное выражение.Что, если половина ответвляется в одну сторону, а половина в другую?Из того, что я прочитал, потоки выполняют оба результата?Как это работает?т.е. как он подчиняется правилам программы

1 Ответ

0 голосов
/ 05 мая 2011

Часть «использование четырех тактов» (в контексте семейства графических процессоров NVIDIA g80 / g90 / g200) возникает потому, что каждое ядро ​​фактически является скалярным ALU. Он может обрабатывать только одну инструкцию из одного потока за такт. Таким образом, чтобы удалить инструкцию для деформации 32 потоков, каждая инструкция выполняется четыре раза за четыре такта (или в четыре раза больше тактов для выполнения инструкции, некоторые занимают больше времени, чем один цикл). Это немного сложнее, чем это, потому что определенные комбинации команд могут быть выпущены дважды, но, надеюсь, вы поняли идею. На вычислительных частях 2.0 Fermi два полумарипа выпускаются двойным образом за цикл, поэтому 32 ядра удаляют два перекоса за два цикла. На вычислительных частях 2.1 Fermi имеется 48 ядер с той же схемой двойного выпуска, а также дополнительная инструкция от одного из активных перекосов, если таковые имеются, что приводит к неработоспособности многопроцессорных систем.

Проблемы условного выполнения и расхождения ветвей были рассмотрены в другом вашем вопросе, поэтому я не буду перефразировать его здесь.

...