Чи здатні сьогодні масивні паралельні блоки обробки ефективно керувати стільниковими автоматами?


20

Мені цікаво, чи є масово паралельні обчислювальні пристрої, які сьогодні є у графічних картах (наприклад, програмований у OpenCL ), достатньо, щоб імітувати 1D стільникові автомати (або, можливо, 2D стільникові автомати?).

Якщо ми виберемо, яка кінцева сітка вміститься всередині пам'яті мікросхеми, чи можемо ми очікувати, що один перехід стільникового автомата, визначеного на цій сітці, буде обчислений у (квазі) постійному часі?

Я припускаю, що 2D стільникові автомати потребують більшої пропускної здатності для зв'язку між різними частинами мікросхем, ніж 1D автомати.

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


Можливо, було б доречніше порівняти з "еквівалентною" мікросхемою, яка імітує ті самі стільникові автомати звичайним способом. (зберігання комірок в пам'яті у звичайній моделі Фон Ньюмана)
jmad

Гарне питання. Я поняття не маю, які алгоритми добре працюють на графічних процесорах, тому я з нетерпінням чекаю відповідей.
Рафаель

1
Незважаючи на FPGA, exp probs є exp probs. Можливо, пов’язані тут і тут .

Відповіді:


7

Відмінне запитання. Я вважаю, що відповідь - так.

Еволюціонування стільникового автомата по суті еквівалентно виконанню трафаретного обчислення. На деяких 1D, 2D або 3D-сітках послідовні значення точок (або комірок) обчислюються виходячи з останнього значення сусідства точки. У простому 1D CA це сусідство може бути осередком і двома клітинками зліва та справа. Є безліч прикладів обчислень трафаретів, що виконуються на графічних процесорах; Наприклад, набір стандартів SHOC ORNL для OpenCL / CUDA містить, наприклад, двовимірний трафарет.

Основна ідея полягає в тому, щоб кожен потік отримав локальну копію мікрорайону на кілька точок, а потім обчислити наступні значення для точок, визначених цим сусідством. Завдяки належному використанню ієрархії пам'яті, наприклад, у CUDA (регістри, спільні, константні, текстурні та глобальні пам'яті) та моделі обробки SIMT (наприклад, відповідним чином обчисливши функцію переходу без введення надмірної розбіжності основи), можна досягти хороших показників.

Ця відповідь була б набагато кращою, якби я наводив приклад, але я зараз занадто зайнятий, щоб писати будь-який код прямо зараз ... Але теоретично, я думаю, це повинно бути доцільним ефективно моделювати CA на графічних процесорах, моделюючи їх після трафарету. обчислення. Однак багато міркувань стосуються написання хорошого трафаретного обчислення для графічних процесорів.


5

Що б ви не робили, обчислюючи наступний стан для стільникового автомата, запитайте стільки ж обчислень, скільки є комірок в автоматі. Таким чином, щоб отримати постійний час, потрібно стільки ж обчислювальних ядер, скільки є комірок.

Кількість таких в GPU наразі становить не більше кількох тисяч, тоді як обчислення наступного стану настільки просте, що я очікую, що результат буде пов'язаний IO, тобто ви можете отримати дуже хороший приблизний час, необхідний, просто врахувавши потрібен рух даних (і якщо це не гарне наближення, або реалізація має неефективність, або архітектура не підходить, але це буде дуже дивно).

Для FPGA питання складніше і, ймовірно, буде залежати від наявної суміші пам’яті та обчислювальних одиниць. Якщо я не надто далеко, у вас не буде достатньо пам’яті для збереження всіх блоків зайнято, і якщо ви покладаєтесь на зовнішню пам’ять, ви перебуваєте на тому ж місці, що і GPU, пропускна здатність пам’яті буде обмежуючим фактором, і я б не дивуйтеся, якщо висновок полягає в тому, що немає переваги перед GPU. (Зауважте, що, коли я працював з FPGA, це було років тому, зараз можуть бути моделі FPGA з правильним поєднанням).

ASIC пропонує більшу гнучкість. Ви можете легко мати подібну систолічну реалізацію (але при двонаправленому потоці даних деякі систолічні зазвичай обмежуються односпрямованим потоком даних), кожна фізична комірка є однією логічною: біт пам'яті та необхідна логіка для обчислення наступного стану та розміщена поза так що це фізичний сусід - це логічно. Ви, очевидно, перебуваєте у постійній царині часу. Залежно від того, які жорсткі макроси у вас є, вам може бути краще бути менш очевидними та мати фізичні клітини, які перегрупують кілька логічних. Мета полягає в тому, щоб максимізувати те, що робиться в одному мікросхемі, інакше кажучи, мінімізувати зв’язок із зовнішньою стороною мікросхеми, як тільки ваші потреби в комунікації будуть пропорційні кількості комірок, ви будете обмежені пропускною здатністю. Так, це означає, що якщо вам потрібно переглянути всі комірки для кожного кроку, ви, мабуть, не набагато кращі, ніж з GPU. (Повний звичай забезпечив би лише кращу інтеграцію, тобто більше комірок на чіп).

Резюме: - якщо ви хочете переглянути всі проміжні стани, GPU - це найефективніший підхід - якщо ви цього не зробите, вам потрібен обсяг, щоб виправдати ASIC, щоб мати щось краще, FPGA, ймовірно, не запропонує достатньо переваги, якщо вони є будь-які.


2

Цікаво, чи досить паралельні одиниці обчислень, надані в графічних картках, досить хороші, щоб ефективно імітувати 1D стільникові автомати (або, можливо, 2D стільникові автомати?).

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

Більш докладно; теоретично, за моделлю PRAM, дійсно, ціна за крок часуО(1), ви це вже знаєте. Однак графічний процесор трохи відрізняється від PRAM, оскільки прискорення пам'яті коштує дорожче, і воно розділене на різні ієрархії (для точного теоретичного аналізу слід розглянути модель PMH). Крім того, нитки працюють у групах або основах , вони є блокувальними кроками, які просуваються SIMD-способом. Модель програмування графічного процесора працює з концепцією сітки (CUDA) або робочої області (OpenCL), яка практично відображається 1 на 1 з простором обчислення стільникових автомати. Це ключова особливість виявлення та усвідомлення того, що графічні процесори зручні для CA. Технічні деталі: Якщо розбіжність основи трактується правильно (замінюючи if-else умовними умовами на закриті математичні вирази), прискорення пам’яті поєднуються інП (н кількість комірок і П кількість процесорів), то можна сказати, що складність обчислень є свого роду О(1).

з боку FPGA та ASIC, я знаю, що є дослідження щодо побудови фізичного CA як сітки логічних воріт із станами, всі зв'язані їх сусідами; тобто систолічні масиви . Ідея полягала б у тому, щоб більше не використовувати глобальну пам'ять, а замість цього покладатися на стан кожного вузла в сітці. Машина такого типу була б революційною, оскільки тоді ми могли перестати говорити про комп'ютер, що імітує ЦА, і почати говорити про ЦА, що працює як комп'ютер (деякі ЦА закінчуються).

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