Понимание архитектуры OpenCL и AMD Gpu - PullRequest
0 голосов
/ 27 июня 2018

Итак, я читал архитектуру для графических процессоров GCN 1-го поколения, предоставленных в документе здесь , и я немного запутался в размере векторных ALU и некоторых других вещах.

1) Согласно этому, каждый вычислительный блок имеет 1 скалярный блок и 4 SIMD. Каждое из этих 4 SIMD имеет 16 ALU для выполнения векторных операций. В документе говорится, что ALU изначально выполняют вычисления с плавающей запятой одинарной точности и 24-разрядное целое число на полной скорости, а также DP и 32-разрядное целое число на пониженной скорости.

Я хочу знать, почему 32-битные целые числа выполняются с пониженной скоростью, когда 32-битная с плавающей запятой SP может выполняться нормально?

2) Во-вторых, мы знаем, что для графических процессоров AMD GCN каждый массив SIMD выполняет четверть волнового фронта за 4 цикла. Когда инструкция назначена на SIMD-блок, реплицируется ли она на все 4? или для получения инструкции от каждого SIMD-блока требуется 4 разных цикла?

Если все 4 SIMD-блока выполняют одну и ту же инструкцию, то теоретически это дает нам 4 волновых фронта за 4 цикла. Если это второй случай, то только 4 волновых фронта будут завершены в 4-м цикле.

Хотя обратите внимание, что согласно техническому документу GCN, Local Data Share (LDS) объединяет 16 линий из 2 разных блоков SIMD в каждом цикле, поэтому мы получаем 2 полных волновых фронта за 4 цикла. Похоже, это намекает на то, что это первый случай, поскольку невозможно получить более 1 волнового фронта за 4 цикла, если инструкции не реплицированы на SIMD-блоки.

3) Наконец, я хочу спросить о сценарии.

Предположим, у меня есть 2D-рабочая группа, назначенная на вычислительную единицу. Рабочая группа состоит из 8x8 = 64 рабочих элементов. Сформирует ли вычислительный блок 1 волновой фронт и выполнит ли это в течение 4 циклов в 1 SIMD-модуле, в то время как остальные 3 SIMD-блока останутся бездействующими? Или что-то еще случится?

1 Ответ

0 голосов
/ 01 июля 2018

почему 32-битные целые числа выполняются с пониженной скоростью, когда 32-битная с плавающей запятой SP может выполняться нормально?

Если вы посмотрите, как представлены 32-битные числа с плавающей запятой, вы заметите, что есть 24-битная мантисса, знаковый бит и 7 битов экспоненты. Предположительно, графический процессор может использовать возможности ALU с плавающей точкой непосредственно для работы с 24-разрядными целыми числами, хранящимися в том, что обычно является мантиссой. Для работы с большими целыми числами необходимо будет выполнить какое-то явное длинное умножение (например, 64-разрядную арифметику на 32-разрядном процессоре), что замедляет процесс.

...