collection of software for developing CUDA Programs e.g. CUDA C++
CUDA programming language as an extension of the C++ programming language.
Examples: __global__ for kernel def, <<<>>> for kernel launch, __syncthreads() for shared memory allocation etc.

what mediate the interaction between host(CPU) programs or the host operating system and the GPU device.
쉽게 말해 GPU device를 host 가 쉽게 사용할 수 있도록 제공하는 고수준 interface라고 생각하면 됨
cudaMalloc())good ref: https://docs.nvidia.com/cuda/cuda-c-best-practices-guide/