文件名称:OpenCL架构-android官方培训课程中文版v0.9.7
文件大小:5.1MB
文件格式:PDF
更新时间:2024-06-27 13:55:49
OpenCL
第二章 OpenCL架构 6 2.2 内存模型Memory Model OpenCL将内核程序中用到的内存分为了四类不同的类型: 全局内存 (global memory):工作空间内所有的工作节点都可以读写此类内存中的任意元素。 OpenCL C提供了缓存global bu�er的内建函数。 常量内存 (constant memory):工作空间内所有的工作节点可以只读此类内存中的任意元素。 host 负责分配和初始化 constant bu�er,在内核执行过程中保持不变。 局部内存 (local memory):从属于一个工作组的内存,同一个工作组中所有的工作节点都可以共享 使用该类内存。其实现既可以为 OpenCL执行为其分配一块专有内存空间,也有可能直接将其映射到 一块global bu�er上。 私有内存 (private memory):只从属于当前的工作节点。一个工作节点内部的private bu�er其他节点 是完全不可见的。 表2.1描述了host和kernel是如何管理和使用各类内存的。 表 2.1: Memory Region -Allocation and Memory Access Capabilities 图2.2描述了各类内存区域的作用空间即其在平台中的位置。 图 2.2: Conceptual OpenCL device architecture with processing elements (PE), compute units and devices. 因为 OpenCL并不约束 host端所以在很多情况下 OpenCL设备和 host之间的内存是互相独立的, 全局 常量 本地 私有 Host端 分配 动态 动态 动态 不可分配 访问 可读写 可读写 不可访问 不可访问 Kernel端 分配 不可分配 静态 静态 静态 访问 可读写 只读 可读写 可读写