I have been reading the programming guide for CUDA and came across these two different methods of memory management. I wanted to clarify the difference between cuArrayCreate and cuMemAllocPitch.
Is cuArrayCreate used to create an array in which each element might be a set of 1,2 or 4 elements, as opposed to a simple linear memory allocation in the case of cuMemAllocPitch? I read the reference manual to make sense of this, since I did not get a clear picture from the programming guide.
Any clarification would be very helpful.
cuArrayCreate() (and the 2D and 3D equivalents) are all intended for allocating memory for binding to textures, whereas cuMemAllocPitch() just allocates linear memory which might include padding intended to be optimal for the GPU memory controller using multidimensional indexing schemes.
Thanks a lot for your reply. I shall read up on texture memory soon.