Hooloovoo wrote:Have FPGAs been considered for this type of search? You could easily do one generation per clock cycle at around 200Mhz. This would give about 9 hours to run each of the 2^36 possible 6x6 grids (without canonicalization) for 100 generations if it were completely sequential. Since this problem can be parallelized arbitrarily, many (probably >100) of the evolver units could be placed into the same large FPGA.

On my Ryzen 1700 PC (8 cores, 16 threads) I need approx 10 hours (rough estimate) for the full 2^36 evalation, with canonicalization already included on top. BUT: the mean number of follow-up generations per start pattern is between 11 and 12, so significantly less than 100.

With very large RAM it would be possible to calculate only one generation per starting pattern (its successor, or child), for all possible initial patterns. You have now generated a hash table that immediately gives you the next generation without any calculations, so any evaluations would be quite a bit accelerated, I assume.

Let's do the math: we need (2^36) * (8 bytes for a 64bit integer) = 0.5 Terabyte RAM ...

To your other question: I have neither access nor any experience with FPGA's.

-F