Was auch immer Sie tun, die Berechnung des nächsten Zustands für einen zellularen Automaten erfordert so viele Berechnungen, wie Zellen im Automaten vorhanden sind. Um eine konstante Zeit zu erhalten, benötigen Sie also so viele Rechenkerne, wie Zellen vorhanden sind.
Die Anzahl dieser in der GPU sind derzeit höchstens einige Tausend, während die Berechnung des nächsten Zustands so einfach ist, dass ich erwarte, dass das Ergebnis IO-gebunden ist, dh Sie können eine sehr gute Annäherung an die benötigte Zeit erhalten, indem Sie nur die berücksichtigen Datenverschiebung erforderlich (und wenn es keine gute Annäherung ist, hat entweder die Implementierung eine Ineffizienz oder die Architektur ist nicht geeignet, aber das wäre sehr überraschend).
Für FPGA ist die Frage schwieriger und hängt wahrscheinlich von der Mischung der verfügbaren Speicher- und Recheneinheiten ab. Wenn ich nicht zu weit weg bin, haben Sie nicht genug Speicher, um alle Einheiten beschäftigt zu halten, und wenn Sie sich auf externen Speicher verlassen, befinden Sie sich am selben Platz wie die GPU. Die Speicherbandbreite ist der begrenzende Faktor, und ich würde nicht Seien Sie überrascht, wenn die Schlussfolgerung lautet, dass es keinen Vorteil gegenüber der GPU gibt. (Beachten Sie, dass es, obwohl ich vor Jahren mit FPGA gearbeitet habe, jetzt möglicherweise FPGA-Modelle mit einer richtigen Mischung gibt.)
ASIC bietet mehr Flexibilität. Sie können leicht eine Implementierung haben, die systolisch ist (bei einem bidirektionalen Datenfluss ist jedoch ein Teil der systolischen Daten normalerweise auf einen unidirektionalen Datenfluss beschränkt). Jede physische Zelle ist eine logische Zelle: ein Speicherbit und die für die Berechnung des nächsten Zustands erforderliche Logik damit es ein physischer Nachbar ist, ist es ein logischer. Sie befinden sich offensichtlich in einem konstanten Zeitbereich. Je nachdem, über welche harten Makros Sie verfügen, ist es möglicherweise besser, ein bisschen weniger offensichtlich zu sein und physische Zellen zu haben, die mehrere logische umgruppieren. Das Ziel ist es, das zu maximieren, was in einem Chip getan wird, mit anderen Worten, die Kommunikation mit der Außenseite des Chips zu minimieren, sobald Ihre Kommunikationsanforderungen proportional zur Anzahl der Zellen sind, ist die Bandbreite begrenzt. Ja, das heißt, wenn Sie für jeden Schritt alle Zellen anzeigen müssen, Sie sind wahrscheinlich nicht viel besser als mit GPU. (Full Custom würde nur eine bessere Integration ermöglichen, dh mehr Zellen pro Chip).
Zusammenfassung: - Wenn Sie alle Zwischenzustände betrachten möchten, ist die GPU der effektivste Ansatz. - Wenn Sie dies nicht tun, benötigen Sie das Volumen, um einen ASIC zu rechtfertigen, damit er etwas Besseres bietet. Wenn dies der Fall ist, bietet der FPGA wahrscheinlich nicht genügend Vorteile irgendwelche haben.