Introduction#

GPUs have left their purpose to just display graphics long behind.

The ever increasing demand for faster and more powerful graphics rendering capabilities reated massively parallel compute engines following many of the CPUs many-cores approaches, but in a much simpler and specialized way.

Many of the tasks to be performed to create stunning graphics are very similar to plain math related computational workloads, if not the same, so the demand emerged to get rid of the one way trip for data from the CPU to the GPU, and allow a fast data transfer into the other direction as well.

The result is what’s used in all supercomputers and High Performance Computing environments these days.

It would be pretty ideal to be able to use such hardware using Python and luckily there are quite some ways to do so these days.