The CUDA archicture and work-flow in GPU programming