Synchronous asynchronous updating cellular automata
These models resemble the Ising model, but are slightly more complicated.
It seems as if such models would benefit from being run on a GPU rather than a CPU.
The idea is to replace the asynchronous CA (henceforth ACA) with a stochastic synchronous CA (SCA) that behaves equivalently.
To do this we first imagine that the ACA is a Poisson process.
However, because of the first bullet point above, it means that most of the GPU processors will be mostly idle on each time step of the SCA, which is less than ideal.
I need to give some more thought to whether the performance of this algorithm can be improved, and how to extend this algorithm to deal with the case where multiple cells are updated simultaneously in the ACA.
You can choose your language settings from within the program.There are some issues with generalising it to my specific case, but I think I have an idea how to resolve them.However, I'm not sure how much of a speed benefit it will give, for reasons discussed below.This continuous time does not correspond to the update steps of the SCA. The time values are initialised randomly according to an exponential distribution: $t_(0) \sim \operatorname(\lambda)$.(Where $\lambda$ is a parameter whose value can be chosen arbitrarily.) At each logical time step, the cells of the SCA are updated as follows: I believe this guarantees that the cells will be updated in an order that can be "decoded" to correspond to the original ACA, while avoiding collisions and allowing some cells to be updated in parallel.