Вопросы, касающиеся Fermi-Architecture, Warps и Performance

Как следует из документации fermi, существует 16 SM (потоковых мультипроцессоров), тогда как каждый из них состоит из 32 ядер. Графический процессор выполняет поток группы из 32 потоков, называемый warp.

Первый вопрос: прав ли я, предполагая, что каждое искривление можно рассматривать как что-то вроде ширины вектора, что означает: я мог бы выполнить одну инструкцию для 32 «данных» параллельно?

И если да, значит ли это, что всего ферми-архитектура позволяет выполнять операции над 16 * 32 = 512 данными параллельно, тогда как 16 операций могут различаться соответственно?

Если да, то сколько раз он может выполнять 512 данных параллельно за одну секунду?

1 ответ

Первый вопрос: прав ли я, предполагая, что каждый варп можно рассматривать как что-то вроде ширины вектора, что означает: я мог бы выполнить одну инструкцию для 32 «данных» параллельно?

Да.

И если да, значит ли это, что всего ферми-архитектура позволяет параллельно выполнять операции над 16 * 32 = 512 данными, тогда как 16 операций могут различаться соответственно?

Да, возможно, в зависимости от типа операции. SM GPU включает в себя функциональные блоки, которые обрабатывают различные типы операций (инструкций). Например, целочисленное сложение не может обрабатываться тем же функциональным блоком, что и сложение с плавающей запятой. Поскольку разные операции обрабатываются разными функциональными блоками, а также ввиду того, что нет особого требования, чтобы SM GPU содержал 32 функциональных блока для каждой инструкции (типа), конкретная пропускная способность будет зависеть от инструкции. Однако 32 функциональных блока, о которых вы говорите, могут обрабатывать floatдобавить, умножить или умножить-сложить. Таким образом, для этих конкретных типов операций ваш расчет верен.

Если да, то сколько раз он может выполнять 512 данных параллельно за одну секунду?

Это определяется тактовой частотой, деленной на количество тактов для обслуживания инструкции. Например, при добавлении 32 единиц FP графический процессор теоретически может удалить одну из них для 512 «данных» за один такт. Если бы существовала другая операция, такая как сложение целых чисел, для обслуживания которой требовалось бы всего 16 функциональных блоков, то для обслуживания всего варпа потребовалось бы 2 такта. Таким образом, мы разделили бы число на 2. И если бы у вас было сочетание операций, скажем, 8 добавлений с плавающей запятой, выполненных на 8 SM, и 8 добавлений с целыми числами, выполненных на других 8 SM, тогда у вас был бы более сложный расчет, возможно. .

Теоретическая максимальная пропускная способность с плавающей запятой вычисляется таким образом. Например, у Fermi M2090 включены все 16 SM, и заявлено , что его пиковая теоретическая пропускная способность составляет 1332 GF/s для операций FP32. Этот расчет выглядит следующим образом:

       16 SMs * 32 functional units/SM * 2 ops/functional unit/hotclk * 2 hotclock/clk * 651M clks/sec = 1333GF/s FP32
Другие вопросы по тегам