OpenCL编程入门(一)

本文介绍了OpenCL的基础知识,包括OpenCL标准、规范、平台模型和执行模型。重点讲解了OpenCL的执行模型,如上下文、命令队列、内存对象和程序对象的概念,并通过一个简单的向量加法代码示例进行了演示。
摘要由CSDN通过智能技术生成

OpenCL简介

    开放计算语言(Open Computing Language, OpenCL)是非盈利技术联盟Khronos Group管理的异构编程框架。该框架充分利用了CPU、DSP、FPGA、GPU的计算能力。OpenCL支持多层次的并行,可以高效的映射到同构或异构的体系结构上。

OpenCL标准

    OpenCL API是按照C 的,由C和C++封装而成,并且有很多第三方语言的绑定。这些语言包括Java、Python以及.NET等。OpenCL是C99语言的子集,并适当地扩展了在众多异构设备上执行数据并行代码的能力。
    OpenCL和许多CPU并发编程模型一样,语法类似于标准的C函数,主要区别在于它拥有额外的一些关键字和OpenCL Kernel实现的执行模型。在OpenCL编程中,编程人员应该考虑的是如何细粒度地表示程序中的并行性。一个典型的OpenCL Kernel应该是这样的:
<span style="font-size:10px;">_kernel void vecadd(_global int *C, _global int *A, _global int *C)
{
    int tid = get_global_id(0);    //OpenCL intrisic function
    C[tid] = A[tid] + B[tid];
}</span>

OpenCL规范

    OpenCL规范由四个模块组成:
  1. 平台模型:定义了一个抽象的硬件模型,描述了宿主机和设备。供编程人员在上面编写在这些设备上执行的Kernel。
  2. 执行模型:定义了如何在宿主机上配置OpenCL环境以及如何在设备上执行Kernel。
  3. 内存模型:定义了Kernel中所使用的内存层次,无需考虑实际的底层架构。
  4. 编程模型:定义了如何将并发模型映射到物理硬件上。

平台模型

    如下图描述,平台模型由一个宿主机以及一个或多个设备组成,一个设备可以分为多个CUs(Compute Units),一个CU又可以进一步划分为多个PEs(Processing Elements)。设备上的计算具体映射到了每个PE之上。

    在平台模型中编程人员需要关注三种版本号:平台版本号、设备版本号、OpenCL支持版本号。
    平台版本号表明了平台所支持的运行时功能,包括了Op
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值