4. CUDA C语言编程接口
接上篇文章继续写。
4.3 CUDA C Runtime
CUDA C Runtime使用cudart动态链接库实现(cudart.dll或者cudart.so),运行时中所有的入口函数都以cuda为前缀。
4.3.1 初始化
CUDA C Runtime函数库没有明确的初始化函数,在程序第一次调用Runtime库函数时它会自动初始化。因此,在记录Runtime函数调用时间和理解程序中第一个Runtime调用返回的错误代码时,需要将初始化考虑在内。
在初始化期间,Runtime将会为系统中每一个设备创建一个CUDA上下文(类似CPU中进程的数据结构),这个上下文是设备的基本上下文,它被程序中所有的主机线程所共享。创建过程在后台运行,并且,Runtime将隐藏基本上下文使之对Runtime API这一层次的程序员不可见。

本文是CUDA编程指南的阅读笔记,聚焦于CUDA C Runtime的初始化和设备内存管理。介绍了CUDA设备内存的两种分配方式——线性内存和CUDA数组,强调了CUDA数组在纹理存取上的优化。详细讲解了cudaMalloc()、cudaFree()和cudaMemcpy()等函数的使用,以及如何通过cudaMallocPitch()和cudaMalloc3D()高效地分配二维和三维数组内存。最后,演示了访问全局变量的不同方法。
最低0.47元/天 解锁文章
5656

被折叠的 条评论
为什么被折叠?



