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