Apple Bottom wrote:Congratulations, that's awesome news!
Can't wait to try out that new, faster algorithm, either. I take it that's gonna land in the gitlab repo soon?
Thanks! Since it's largely rewritten, it makes sense to declare it a new major version (3.0) and place it in a parallel repository as opposed to the existing repository.
It's currently about 34% faster
than apgnano for machines with AVX2 support. In particular, on my 36-core Amazon EC2 instance, it takes just over 22 minutes between successive hauls of 74207281 soups, as opposed to 30 minutes for v2.2.
I'm also endowing it with the ability to simulate arbitrary outer-totalistic rules (although the algorithm speed will vary slightly depending on the rule). Basically, I need a method to convert a rule to a Boolean circuit with the following properties:
- The 5 inputs are the state of the centre cell together with the 4 bits of the neighbour count written in binary (note: the central cell is included in the neighbour count).
- The 1 output should be the next state of the centre cell.
- The circuit can consist of AND, OR, XOR and AND-NOT gates.
- The circuit must have a width <= 7 (although I might be able to increase this to 10 if necessary).
Preferably, we want to use as few logic gates as possible.