Сколько «параллельных блоков» у GPU?

8

Я хотел бы знать, сколько параллельных блоков для обработки вершин имеет графический процессор.

На этой странице Википедии указаны GFLOPS и тактовая частота, например, для Radeon 5850 "Broadway PRO" вы получаете 1000 GFLOPS. Предположим, что запуск вершинного шейдера составляет 100 флопов, тогда это означает, что вы можете обрабатывать 1000e9 / 100 = 10e9 вершин в секунду.

Существует ли у изготовителя опубликованное количество параллельных процессоров или способ узнать это число?

bobobobo
источник
8
Это варьируется от каждой модели карты к следующей. Какова цель этого вопроса?
AttackingHobo
Я согласен с AttackingHobo, это не имеет значения количества ядер, потому что каждый чип имеет разное количество, а также они работают по-разному, поэтому в модели 30 ядер могут быть более мощными, чем одно с 60 ядрами. Также вам придется ссылаться на каждую спецификацию микросхемы от производителя, если вы не доверяете информации в википедии (что, вероятно, точно)
Пабло Ариэль
1
stackoverflow.com/questions/6490572/…
Сиро Сантилли 冠状 病毒 审查 六四 事件 法轮功

Ответы:

27

Предположим, что запуск вершинного шейдера составляет 100 флопов, тогда это означает, что вы можете обрабатывать 1000e9 / 100 = 10e9 вершин в секунду.

Нет, это, безусловно, нет.

По сути, вы должны рассматривать любые вычисления скорости выполнения любого кода, основанные исключительно на числе «FLOPS», как подозрительные. В самом деле, лучше всего, если вы полностью игнорируете FLOPS.

Вы не определили термин «параллельная единица»; без этого определения мы могли бы только догадываться о том, что вы хотите.

Возьмите Radeon 5870. У него 1600 единиц с плавающей запятой. Это означает, что для каждого цикла он может выполнять одновременно 1600 скалярных операций с плавающей точкой. Однако каждый код операции VLIW работает с 5-сторонними векторными математическими регистрами. Таким образом, наименьшая возможная степень детализации реального кода составляет 1600/5 или 320 (примечание: это огромное упрощение). Это 320 потоков.

Однако это не совсем так. У вас нет 320 отдельных путей исполнения. Вы не можете иметь 320 различных частей кода, выполняющихся на 320 различных модулях. Видите, 5-сторонние VLIW сами сгруппированы в 4-сторонние SIMD-ядра. Каждая SIMD может иметь свой собственный путь выполнения и собственный исходный код. Каждый VLIW в ядре SIMD может иметь отдельные данные, так что они вычисляют отдельные значения. Но каждый VLIW в ядре SIMD выполняет те же инструкции на шаге блокировки, что и другие VLIW в этом ядре.

Так что на самом деле у вас всего 320/4, или 80 общих потоков. Но опять же, это зависит от того, о каком «параллельном блоке» вы говорите. Технически, 1600, 320 и 80 - все законные ответы.

И это только для одной конкретной архитектуры. Линейка NVIDIA Fermi (GeForce 4xx и выше) использует совершенно другую архитектуру. Линия ATI Cayman (Radeon 69xx) изменяет VLIW с 5 путями на VLIW с 4 путями. Их следующая архитектура также может иметь некоторые существенные различия.

Не зная, что вы ищете, просто невозможно ответить на вопрос.

Николь Болас
источник
Отлично. Я также нашел эту статью об архитектуре графического процессора, но где вы нашли число единиц с плавающей запятой? Это то, что я искал.
Бобобобо
@bobobobo: Это было на странице Википедии, на которую вы ссылались. Кроме того, эта статья о GPU Gems относится только к линейке GeForce 6-7. Ему тоже 6 лет.
Николь Болас
Интересно, что вы произносите SIMD отдельными буквами. VLIW вызывает путаницу во всем, кроме букв, но большинство (на самом деле) системных программистов, с которыми я работал, говорят «sim dee».
Андон М. Коулман
@NicolBolas, Чувак, 80 одновременных инструкций? Этот блин все еще бьет обычные 8 или 16, которые вы получаете от процессора.
Pacerier
3

Я не понимаю, что вы подразумеваете под параллельным процессором? шейдерные блоки? Поскольку в настоящее время процессор и процессор в основном одно и то же, я имею в виду, что процессор - это процессор, если мы говорим об ATI Radeon.

Я полагаю, вы имеете в виду функциональные блоки, вы должны прочитать Config coreполе в Википедии:

Config Core – The layout of the graphics pipeline, in terms of functional units. Over time the number, type and variety of functional units in the GPU core has changed significantly; before each section in the list there is an explanation as to what functional units are present in each generation of processors.

так что для Radeon вы говорите, что это будет иметь:

Unified Shaders (Vertex shader/Geometry shader/Pixel shader) : Texture mapping unit : Render Output unit

который для бродвейского про это: 800:40:16

это означает, что у него есть 800 шейдерных блоков, 40 блоков отображения текстуры и 16 блоков вывода рендеринга.

РЕДАКТИРОВАТЬ: Ну, нет, кажется, что параллельный процессор также применяется к тому, что вы имеете в виду, так что я думаю, это немного запутанно называть их таким образом. Я бы назвал их шейдерными модулями или сим-ядрами.

Пабло Ариэль
источник
Что такое ППУ?
Pacerier