通过映射,可以将设备全局存储器区域映射到主机可以访问的地址空间。而除了这种方式,在OpenCL 2.0中,OpenCL通过共享虚拟存储器(Shared Virtual Memory,SVM)机制扩展了全局存储器区域到主机内存区域的方式。在OpenCL 2.0中定义了三种SVM类型:
- 粗粒度SVM:共享发生在OpenCL缓冲存储器对象区域的粒度;
-
细粒度SVM:共享发生在OpenCL缓冲存储器对象里独立地以字节加载/存储的粒度;
-
细粒度系统SVM:共享发生在主机内存内任何地方独立地以字节加载/存储的粒度。
粗粒度内存SVM是OpenCL的核心规范,而对于后两种细粒度实现是可选。
从概念上来说,可能大家不太明白三种SVM到底实现什么功能,这没有关系。只要记住有三种SVM类型,在后面的教程中会通过具体的例子来讲解SVM的作用和用法。