Выполнение инструкции в GPGPU
Я изучаю аппаратное обеспечение графического процессора (архитектура AMD GCN). Я немного смущен выполнением инструкций. Позвольте мне привести пример:
for(i=0;i<64;i++) c[i] = a[i] + b[i]
для приведенного выше кода. Предполагая, что деформация/волновой фронт имеет 64 потока. Теперь один варп/волновой фронт содержит следующие инструкции:
- PC+0 имеет векторную загрузку a (инструкция simd)
- PC+4 имеет векторную нагрузку b (инструкция simd)
- PC+8 имеет векторное добавление (инструкция simd)
- PC+12 имеет векторное хранилище c в памяти (инструкция simd)
AMD GCN имеет 4 SIM-карты. Теперь только один варп/волновой фронт обрабатывается одним SIMD. Предположим, SIMD0 выполняется над варпом. Каждый SIMD имеет 16 векторов alu.
Согласно техническому документу, они упомянули, что для выполнения 64 потоков требуется 4 цикла. Мой вопрос заключается в том, как работает одна инструкция SIMD. У меня нет ясности в этих понятиях. Пожалуйста, поправьте меня, если я ошибаюсь в объяснении приведенного выше примера.