OpenCL Basic
导言
OpenCL 的模型和基础概念,感觉适合异构编程。
Introduction¶
- OpenCL(Open Computing Language)是一个用于异构编程的框架。
- 它允许程序员在各种不同的硬件平台上编写代码,特别是用于高性能计算的代码。
- OpenCL 支持多种类型的处理器,包括 CPU、GPU、DSP(数字信号处理器)和其他类型的处理器或硬件加速器。
Platform Model¶
- 主机连接到一个或多个OpenCL计算设备。
- 每个计算设备是一个或多个计算单元集合,其中每个计算单元由一个或多个处理元件组成。
- 处理元件以SIMD(单指令多数据)或SPMD(单程序多数据)并行性执行代码。
Device Command Execution¶
Memory hierarchy Model¶
OpenCL has a hierarchy of memory types: (个人评价和GPU很像)
Host memory
- available to the host CPUGlobal/Constant memory
- available to all compute units in a compute deviceLocal memory
- available to all the processing elements in a compute unit(Work-group)Private memory
- available to a single processing element
OpenCL内存管理是显式的。上述内存都不会自动同步,因此应用程序会根据需要显式(主动)地在内存类型之间移动数据。