【IT168 技术】
存储器层次
在执行期间,CUDA线程可能访问来自多个存储器空间的数据,如图2-2所示。每个线程有私有的本地存储器。每个块有对块内所有线程可见的共享存储器,共享存储器的生命期和块相同。所有的线程可访问同一全局存储器。
相关阅读:
另外还有两种可被所有线程访问的只读存储器:常量和纹理存储器空间。全局,常量和纹理存储器空间为不同的存储器用途作了优化。纹理存储器还为一些特殊数据格式提供了不同的寻址模式和数据滤波。
在同一应用中发射的内核之间,全局,常量和纹理存储器空间是持久的。
异构编程
如图2-3所示,CUDA编程模型假设CUDA线程在物理上独立的设备上执行,设备作为主机的协处理器,主机运行C程序。例如,内核在GPU上执行,而C程序的其它部分在CPU上执行就是这种模式。
CUDA编程模型同时假设主机和设备各自都维护着自己独立的DRAM存储器空间,各自被称为主机存储器空间和设备存储器空间。因此,程序通过调用CUDA 运行时,来管理对内核可见的全局、常量和纹理存储器空间。这包括设备存储器分配和释放,也包括在主机和设备间的数据传输。
更多内容请点击:
CUDA专区:http://cuda.it168.com/
CUDA论坛:http://cudabbs.it168.com/