【摘要】:OpenCL支持数据并行和任务并行两种编程模型,也支持两者的混合编程。OpenCL主要侧重于数据并行编程模型,即将相同的指令序列作用于不同的数据元素上。OpenCL实现了宽松的数据并行编程模型,并不要求work-item与操作数的一一对应。由此可见,OpenCL编程模型与CUDA编程模型在平台模型和执行模型方面存在很多相似之处。这也是本书研究工作采用OpenCL编程模型的重要原因。
OpenCL支持数据并行和任务并行两种编程模型,也支持两者的混合编程。OpenCL主要侧重于数据并行编程模型,即将相同的指令序列作用于不同的数据元素上。在OpenCL编程模型中,可通过work-item的全局ID或者本地ID,实现work-item与数据的映射。OpenCL实现了宽松的数据并行编程模型,并不要求work-item与操作数的一一对应。OpenCL定义了显式和隐式两种数据并行编程模型:前者定义work-item的总数以及work-group的划分;后者仅仅定义了work-item的总数,而work-group的划分由OpenCL的具体实现来管理。
除此之外,OpenCL还定义了两类同步操作:本地同步和全局同步。本地同步是指属于同一work-group内的work-item间的同步,可由本地同步函数实现。全局同步是指位于同一上下文的命令队列中的命令间的同步,可由命令队列同步操作函数或者事件实现。(www.daowen.com)
由此可见,OpenCL编程模型与CUDA编程模型在平台模型和执行模型方面存在很多相似之处。然而,相对于CUDA,OpenCL最大的优势就是其跨平台性。OpenCL程序可在不同厂商、不同架构的GPU上进行平滑移植。随着GPU架构的日益多样化和应用领域的不断扩展,特别是针对那些无法判断终端用户使用的GPU架构类型的桌面级应用程序来说,实现应用程序在不同GPU架构(比如NVIDIA GPU和AMD GPU)间的平滑移植就显得越来越重要。这也是本书研究工作采用OpenCL编程模型的重要原因。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
有关视频图像处理与性能优化的文章