There are different types of memory available to you in CUDA:

  1. Private: local variables, can’t be shared
  2. Local: shared between work items in the same group
  3. Global: shared between all work items everywhere
  4. Constant: resides on the GPU and is cached and does not change but is limited in size
  5. Texture: also global and cached and might provide some speedups (for images and rendering and stuff) Choosing the type of memory to be used is important.