random number generators (RNG) to $512^2/2 = 131072$ that is slightly lower than the $150000$ good multipliers that CUDAMCML gives in its file [`safe_primes_base32.txt`]{}. The state needed comprises 12 bytes per independent RNG, totalizing 1.5MB of global memory, less that $0.15\%$ of the total available in the GTX 280. We consider this a good trade-off between independence in number generation and memory consumption. This design decision is crucial in the parallelization of the spin update function, as we frame the lattice in rectangles of $512\times 512$, to give each thread an independent RNG[^2]. Moreover, this implies that the larger the lattice, the more work will be done by a single thread.

It is important to remark we are well below the RNG cycle even for the largest simulations.

Spin update
-----------

On top of the checkerboard division we have first to frame the lattice in rectangles of $512\times 512$ in order to use the limited amount of independent RNG (Fig.\[fig:checkerboard\], left). This implies launching two consecutive kernels (black/white) of $512\times 512/2$ threads, typically organized into a grid of $32\times 16$ blocks of $16\times 16$ threads. The second step comprises the remapping of a two dimensional stencil of four points in 