OpenCL 架构
Platform 模型
在OpenCL里,对于并行异构设备,按下图理解

- 平台模型由一个 Host 连接一个或多个设备 OpenCL Device;
- OpenCL Device 可划分为一个或多个计算单元 CU,Compute Unit;
- CU 可划分为多个处理部分 PE,Processing Element;
- OpenCL 应用程序分为两部分:Host 代码和 Device kernal 代码。Host 执行 Host 代码,并将 kernal 代码以命令方式提交至 OpenCL Device 执行;
- OpenCL 编程通常以最小粒度。
Memery 模型
| 类型 | 说 明 |
|---|---|
| Host memory | 只能 Host 访问 |
| Global memory | 设备内存,Host 负责该内存中 Buffer 分配和释放,Host、PE可读写 |
| Constant memory | 设备内存,Host 可读写,PE 只读,用于传输常量数据 |
| Local memory | CU 内存,Host 及其他 CU 看不到,该 CU 内部 PE 可读写 |
| Private memory | PE 私有内存,Host 、其他 CU 及该 CU 的其他 PE 看不到 |
内存对象,OpenCL 定义了三种 Host 内存类型:
- 数组,连续内存,以指针访问;
- 图像,不一定是连续内存,不能直接访问,以专用读写函数访问;
- 管道,队列形式,内置函数访问。
2024.12.27 补充
内存模型下面这张图更清楚:

转自 https://deepinout.com/opencl/opencl-basic-concept/opencl-memory-region.html
浙公网安备 33010602011771号