Quoi que vous fassiez, le calcul de l'état suivant pour un automate cellulaire demande autant de calculs qu'il y a de cellules dans l'automate. Ainsi, pour obtenir un temps constant, vous avez besoin d'autant de cœur de calcul qu'il y a de cellules.
Le nombre de ceux-ci dans le GPU est actuellement au plus de quelques milliers, tandis que le calcul de l'état suivant est si simple que je m'attends à ce que le résultat soit lié à IO, c'est-à-dire que vous pouvez obtenir une très bonne approximation du temps nécessaire en considérant simplement le le déplacement des données est nécessaire (et si ce n'est pas une bonne approximation, soit l'implémentation a une inefficacité, soit l'architecture n'est pas appropriée, mais ce serait très surprenant).
Pour FPGA, la question est plus difficile et dépendra probablement du mélange de mémoire et d'unités de calcul disponibles. Si je ne suis pas trop loin, vous n'aurez pas assez de mémoire pour occuper toutes les unités et si vous comptez sur la mémoire externe, vous êtes au même siège que le GPU, la bande passante mémoire sera le facteur limitant et je ne le ferais pas soyez surpris si la conclusion est qu'il n'y a aucun avantage sur le GPU. (Notez que bien que j'ai travaillé avec FPGA, c'était il y a des années, il peut maintenant y avoir des modèles FPGA avec un bon mélange).
ASIC offre plus de flexibilité. Vous pouvez facilement avoir une implémentation de type systolique (mais avec un flux de données bidirectionnel, une partie systolique est généralement limitée à un flux de données unidirectionnel), chaque cellule physique est une logique: un bit de mémoire et la logique nécessaire pour calculer son état suivant et est disposée de sorte que son voisin physique soit logique. Vous êtes évidemment dans le domaine du temps constant. Selon les macros dures que vous avez, il vaut peut-être mieux être un peu moins évident et avoir des cellules physiques qui en regroupent plusieurs logiques. L'objectif est de maximiser ce qui se fait dans une puce, c'est-à-dire de minimiser la communication avec l'extérieur de la puce dès que vos besoins de communication sont proportionnels au nombre de cellules, vous aurez une bande passante limitée. Oui, cela signifie que si vous avez besoin de regarder toutes les cellules pour chaque étape, vous n'êtes probablement pas beaucoup mieux qu'avec le GPU. (Une personnalisation complète ne fournirait qu'une meilleure intégration, c'est-à-dire plus de cellules par puce).
Résumé: - si vous voulez regarder tous les états intermédiaires, le GPU est l'approche la plus efficace - si vous n'en avez pas, vous avez besoin du volume pour justifier un ASIC pour avoir quelque chose de mieux, le FPGA n'offrira probablement pas assez d'avantages s'il en avoir.