Accelerating Conway's Game of Life Using CUDA
brendanrayw.medium.com
brendanrayw.medium.com
I'd love to work with CUDA in practice, but there's not that many jobs around.
FYI, the transfers from pageable memory almost certainly do not go to the storage device in your system, unless you have high memory pressure. "pageable" (as a cuda-ism) does mean that the buffer may be paged out to storage, but as a result it means that (more importantly) even if the buffer is in RAM, the GPU cannot access it directly.
so for pageable copies the flow is probably not:
storage → buffer in RAM → device,
but rather: original buffer in RAM (inaccessible to the device) → intermediate buffer in RAM (accessible to the device) → device.
also, in several places you use the term 'stack' where I think it should just be 'RAM' / main memory.Is your board a giant two-dimensional array in memory?
Are your threads/kernels reading from this array and then writing back to it?
Do you do synchronization to make sure reads happen before the later rights?
Do you do any verification that your transition happen correctly?
Do you have an estimate for time spend in - transfer from global GPU memory to each kernel, calculations in the kernel, and time spent idling through synchronization (assuming you do it).
I especially liked the line including “with less power comes greater simplicity” :)