Что бы вы ни делали, вычисление следующего состояния для клеточного автомата требует столько вычислений, сколько ячеек в автомате. Таким образом, чтобы получить постоянное время, вам нужно столько вычислительных ядер, сколько имеется ячеек.
Их в GPU в настоящее время не более нескольких тысяч, в то время как вычисление следующего состояния настолько просто, что я ожидаю, что результат будет привязан к вводу-выводу, т.е. вы можете получить очень хорошее приближение времени, которое нужно просто рассмотреть необходимо перемещение данных (и если это не очень хорошее приближение, либо реализация имеет неэффективность, либо архитектура не подходит, но это было бы очень удивительно).
Для FPGA этот вопрос является более сложным и, вероятно, будет зависеть от сочетания памяти и доступных вычислительных единиц. Если я не слишком далеко, у вас не будет достаточно памяти, чтобы держать все устройства занятыми, и если вы полагаетесь на внешнюю память, вы находитесь в одном месте с GPU, пропускная способность памяти будет ограничивающим фактором, и я бы не стал удивитесь, если придет к выводу, что нет никакого преимущества перед GPU. (Обратите внимание, что хотя я работал с FPGA, это было много лет назад, сейчас могут быть модели FPGA с правильным сочетанием).
ASIC предлагает больше гибкости. Вы можете легко иметь систолическую реализацию (но с двунаправленным потоком данных, некоторые систолические обычно ограничены однонаправленным потоком данных), каждая физическая ячейка является одной логической единицей: бит памяти и необходимая логика для вычисления ее следующего состояния и размещается так что это физический сосед, это логично. Вы, очевидно, находитесь в царстве постоянного времени. В зависимости от того, какие жесткие макросы у вас есть, вам может быть лучше быть немного менее очевидным и иметь физические ячейки, которые перегруппируют несколько логических ячеек. Цель состоит в том, чтобы максимизировать то, что делается в одной микросхеме, иными словами, минимизировать связь с внешней микросхемой, поскольку, как только ваши потребности в связи будут пропорциональны количеству ячеек, вы будете ограничены в пропускной способности. Да, это означает, что если вам нужно посмотреть на все ячейки для каждого шага, Вы, вероятно, не намного лучше, чем с GPU. (Полный кастом обеспечит только лучшую интеграцию, то есть больше ячеек на чип).
Резюме: - если вы хотите посмотреть на все промежуточные состояния, GPU является наиболее эффективным подходом - если вы этого не сделаете, вам нужен объем, чтобы оправдать ASIC, чтобы иметь что-то лучшее, FPGA, вероятно, не даст достаточно преимуществ, если они есть какой-либо.