Qualunque cosa tu faccia, calcolare il prossimo stato per un automa cellulare richiede altrettanti calcoli quante sono le cellule nell'automa. Pertanto, per ottenere un tempo costante, sono necessari tanti core di elaborazione quante sono le celle.
Il numero di questi nella GPU è attualmente al massimo di poche migliaia, mentre il calcolo dello stato successivo è così semplice che mi aspetto che il risultato sia legato all'IO, ovvero è possibile ottenere un'ottima approssimazione del tempo necessario semplicemente considerando spostamento dei dati necessario (e se non è una buona approssimazione, l'implementazione ha un'inefficienza o l'architettura non è adatta, ma sarebbe molto sorprendente).
Per FPGA, la domanda è più difficile e probabilmente dipenderà dal mix di unità di memoria e di calcolo disponibili. Se non sono troppo lontano, non avrai abbastanza memoria per tenere occupate tutte le unità e se fai affidamento sulla memoria esterna, sei nella stessa sede della GPU, la larghezza di banda della memoria sarà il fattore limitante e non lo farei essere sorpreso se la conclusione è che non vi è alcun vantaggio rispetto alla GPU. (Nota che mentre ho lavorato con FPGA, è stato anni fa, ora potrebbero esserci modelli FPGA con il giusto mix).
ASIC offre maggiore flessibilità. Puoi facilmente avere un'implementazione simile a sistolica (ma con il flusso di dati bidirezionale, alcuni sistolici sono generalmente limitati al flusso di dati unidirezionale), ogni cella fisica è una logica: un po 'di memoria e la logica necessaria per calcolare il suo stato successivo ed è disposta in modo che il suo vicino fisico sia logico. Ovviamente sei nel regno del tempo costante. A seconda di quali macro hai, potresti essere meglio essere un po 'meno ovvio e avere celle fisiche che raggruppano diverse logiche. L'obiettivo è massimizzare ciò che viene fatto in un chip, in altre parole per ridurre al minimo la comunicazione con l'esterno del chip non appena le esigenze di comunicazione sono proporzionali al numero di celle, la larghezza di banda sarà limitata. Sì, ciò significa che se devi esaminare tutte le celle per ogni passaggio, probabilmente non sei molto meglio che con la GPU. (La personalizzazione completa fornirebbe solo una migliore integrazione, ovvero più celle per chip).
Riepilogo: - se si desidera esaminare tutti gli stati intermedi, la GPU è l'approccio più efficace - in caso contrario, è necessario il volume per giustificare un ASIC per avere qualcosa di meglio, FPGA probabilmente non offrirà abbastanza vantaggio se essi avere qualche.