Чому в GPU все ще є растризатори?


14

Незважаючи на досягнення, сучасні графічні процесори все ще мають фіксовані растризатори. Високо налаштовується, з програмованими шейдерами, але, проте, не повністю програмований.

Чому так?

Чому GPU не можуть бути просто масово паралельними пристроями з універсальними обчислювальними одиницями, де rasterizer - це лише програмне забезпечення для цього пристрою, яке надає користувач?

Чи настільки вигідне виконання апаратних засобів з фіксованою функцією, що такий підхід неможливий?


1
"Чому блок обробки графіки не є універсальним процесорним блоком", це питання?
Андреас

1
@Andreas Ні, моє запитання так, як сказано в дописі. Чому растризатори все ще є апаратною частиною, коли їх можна зробити за допомогою програмного забезпечення (адже вони вже можна було б зробити з OpenCL або обчислити шейдери). Питання, чому це не часто ... можливо, це просто вистава, я не знаю, тому я прошу ...
mrpyo

Ви можете обійти растерізацію та реалізувати власний растерізатор за допомогою обчислювальних підрозділів на сучасних GPU, і я насправді знаю людей, які роблять це для конкретних цілей.
JarkkoL

Растеризатори перетворюють векторний поліс у купу пікселів, які ми можемо запалити. Коли у нас більше немає пікселів або припинимо використовувати векторну геометрію, нам більше не потрібні растризатори. Незалежно від того, як виглядає решта вашого трубопроводу, наприкінці дня (або кадру) вам потрібні пікселі. Растерізатор просто повідомляє нам про те, які пікселі нас турбують для даного трикутника. Все це можна програмувати - якщо ви хочете відрізнятись від растризатора, надсилайте різні трикутники на своєму шляху. Або просто намалюйте все до текстури візуалізації у обчислювальній шейдері та промальовуйте її до екрана за допомогою квадрата, орієнтованого на перегляд.
3Dave

Відповіді:


15

Коротше кажучи, причини продуктивності - це те, що вони не програмовані.

Історія та ринок

Раніше існували окремі ядра для вершинних та фрагментальних процесорів, щоб уникнути роздутих конструкцій ПЗУ. Були деякі математичні операції, які ви могли виконувати, наприклад, у фрагменті шейдерного коду (наприклад, вони здебільшого стосувалися лише фрагментів шейдерів). Це призвело б до серйозних технічних вузьких місць для програм, які не збільшували потенціал кожного типу ядра.

По мірі того, як програмовані шейдери стали більш популярними, були введені універсальні блоки. Все більше і більше етапів графічного конвеєра реалізовувались апаратно, щоб допомогти в масштабуванні. За цей час GPGPU також став більш популярним, тому постачальникам довелося включити частину цієї функціональності. Але все ж важливо зазначити, що більшість доходів від графічних процесорів все ще були відеоіграми, тому це не може заважати продуктивності.

Зрештою великий гравець, Intel вирішив інвестувати в програмованих растризаторів зі своєю архітектурою Larrabee . Цей проект повинен був бути новаторським, але ефективність була, очевидно, меншою, ніж бажано . Його було вимкнено, а його частини були виправлені для процесорів Xeon Phi. Варто зазначити, що інші постачальники цього не реалізували.

Спроби програмного розпорошувача

Були кілька спроб растеризації за допомогою програмного забезпечення, але, схоже, всі вони мають проблеми з продуктивністю.

Одне помітне зусилля - спроба Nvidia у 2011 році у цій статті . Це було випущено близько до припинення Ларрабі, тому дуже можливо, що це було відповіддю на це. Незалежно від цього є деякі показники продуктивності, і більшість з них показують продуктивність у багато разів повільніше, ніж апаратні растризатори.

Технічні проблеми програмного забезпечення

У статті Nvidia зіткнулися багато питань. Ось декілька найважливіших проблем із програмними растризаторами:

Основні питання

  • Інтерполяція: Апаратна реалізація генерує рівняння інтерполяції у спеціалізованому обладнання. Для рендерінга програмного забезпечення це повільно, оскільки це потрібно було зробити в шейдері фрагментів.

  • Антизбудження: Існували також проблеми з функцією згладжування (зокрема з пам'яттю). Інформація щодо зразків субпікселів повинна зберігатися в пам'яті мікросхеми, що недостатньо для її зберігання. Жюльєн Герто зазначив, що кеш / кеш текстури може бути повільнішим для програмного забезпечення. MSAA, безумовно, має тут проблеми, тому що він переповнює кеш (нетекстурні кеші) і йде в пам'ять від чіпа. Растеризатори стискають дані, які зберігаються в цій пам'яті, що також допомагає тут.

  • Споживання енергії: Саймон Ф зазначив, що споживання електроенергії буде нижчим. У статті згадувалося, що користувацькі АЛУ є у растризаторах (що зменшило б споживання електроенергії), і це мало б сенс, оскільки в одиницях обробки фрагментів та вершин раніше використовувались спеціальні набори інструкцій (так, швидше за все, і власні ALU). Це, безумовно, було б вузьким місцем у багатьох системах (наприклад, мобільних), хоча це має наслідки поза продуктивністю.

Підсумок

TL; DR: Занадто багато неефективності, через яку візуалізація програмного забезпечення не може пройти, і ці речі складаються. Існує також багато великих обмежень, особливо коли ви маєте справу з пропускною здатністю VRAM, проблемами синхронізації та додатковими обчисленнями.


Я не думаю, що вам потрібно зберігати зразки субпікселів, якщо фільтрація в коробці достатня, тоді ви можете просто робити середні показники.
joojaa

2
Я підозрюю, що вибірки текстур та кеш-пам'яті, ймовірно, також є сферами, де реалізація апаратних засобів дозволяє продуктивність, інакше неможливо досягти за допомогою програмного забезпечення.
Жюльєн Гурто

3
@aces Ще один предмет, який варто згадати - це влада. Виділене обладнання буде виконувати ту саму роботу, як правило, з частиною бюджету на енергоспоживання, і, якщо вже не виникає проблем із зменшенням потужності, особливо на мобільних пристроях, повне програмування може зробити це значно гірше.
Simon F

@JulienGuertault Справедливий момент, але я думаю, що це здебільшого стосується MSAA. Там, здається, результати тестів вказують, що це не величезна проблема, коли все вписується в оперативну пам'ять (хоча це може мати певний вплив на продуктивність незалежно).
тузи

@SimonF Я думаю, що це також чудовий момент. Я включив це у відповідь.
тузи
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.