OpenCL为应用开发提供了丰富的API,按照其四大模型其API主要分为以下三类:

Platform API

平台API主要是由HOST调用,可以用来查询opencl plaftform, device,以及在指定的device上创建context,可以理解为opencl的控制端,经常用在host端opencl初始化部分,查找合适的平台和device运行opencl 代码。

Runtime API

运行API主要功能是根据context创建command-queues,以及在运行期间host提交命令 到device中,主要是为kernel运行提供所必要的功能。

Rutime API提一个主要工作就是根据conext在制定的device上创建command-queues,并根据所创建的command-queues创建所需要的内存对象(buffer或者Image),并维护这些内存对象的使用,以及内存的释放。

其次创建kernel所需要执行的program(Program即提交到device中的kernel字符串代码),并在运行之前对其kernel代码进行编译。

最后,host提交command到command-queues中,等待device执行kernel,并提供内存一致性同步功能。

Rutime API提供了Opencl程序运行的大部分工作,占用数量较多。

Opencl programming language

opencl kernel的API,采用类C99标准,包含一些opencl特有的扩展功能。是opencl kernel实际计算部分,真正的工作负载。

opencl为了实现最大并行,删除了 标准C99的一些功能:

不支持递归功能

不支持函数指针

不支持 Bit field功能

不支持标准stdio.h 和stdlib.h

不支持内存强转

opencl kernel添加了一些自己特有功能:

支持向量类型以及相关操作

内有很多build-in 函数实现最大加速

针对全局或者local变量提供Atomic functions.

支持多个地址空间(local, global 以及private)

支持不同级别的浮点操作类型

参考资料

《OpenCL programming Guide》

浅谈OpenCL之API分类相关推荐

  1. 浅谈机器学习-回归与分类的区别

    前言 机器学习的主要任务便是聚焦于两个问题:分类和回归.本文将浅谈下两者的区别. 区别 回归会给出一个具体的结果,例如房价的数据,根据位置.周边.配套等等这些维度,给出一个房价的预测.         ...

  2. 浅谈OpenCL之Platform API(2)

    OpenCL Contexts context是贯串 opencl 程序的核心,也是host 与device 交互的唯一通道,是内存申请维护,命令队列的创建等功能的基础. 不同的plaform,可以申 ...

  3. 浅谈OpenCL之Platform API(1)

    Platform API 为opencl 初始化首先要使用的API,主要是获取到platform 以及device. OpenCL Platforms opencl 应用程序第一步首先就是要查询ope ...

  4. 浅谈opencl之错误码

    opencl采用了统一的错误码,各个API通用 Error Description CL_SUCCESS Command executed successfully without error. CL ...

  5. 浅谈Opencl四大模型之Memory Model

    运行模型(execution model)讲述了一个kernel怎么样在opencl平台运行,host喝kernel如何交互的,kernel代码如何编译的等等,但是没有涉及到opencl内存的管理方式 ...

  6. 浅谈OpenCL四大模型之Execution Model

    OpenCL执行模型(Execution Model)解释了opencl程序是如何运行的,是理解opencl的基础. OpenCL程序 Opencl应用程序一般分为host部分和kernel部分组成, ...

  7. 浅谈Opencl四大模型之Platform model

    Opencl是一种典型的异构架构,可以很好的实施并发性,为了简化并行计算复杂度以及兼容各个芯片差异性,opencl将其抽象为四大模型(Platform model, Execution model,M ...

  8. 大象的三个武器——浅谈印象笔记的“笔记本分类”、“搜索”、“标签”的应用...

    用过Evernote的朋友,一定会被他随时收集,多平台同步等方便功能所吸引,很多GTD实践者和达人也在用他做收集.项目管理.晨间日记.个人知识管理等多种用途,尤其是进入中国后,印象笔记团队提供更为贴心 ...

  9. 浅谈OpenCL之 应用程序总体步骤思路

    一般Opencl 应用程序步骤,为了保证原英文意思 没有翻译中文: 1:Query which platforms are present. 2:  Query the set of devices ...

最新文章

  1. java中xml怎样配置_如何通过XML方式配置并实现Mybatis
  2. MySQL数据库性能优化--SQL优化
  3. Hdu 1029 Ignatius and the Princess IV
  4. VTK:vtkDelaunay2D用法实战
  5. JavaFX之TableView的SelectionMode
  6. NoSQL为什么需要模式自由的ETL工具:不知道的大概都没用过!
  7. 那些在11gR2中可能惹祸的新特性,一张列表帮助你摆脱升级11gR2带来的烦恼
  8. B - Friends
  9. 漫谈 MinIO 集群扩容方法
  10. 分治法的经典问题——大整数相乘
  11. 2019梅江(天津)年货展销会启幕
  12. 使用免费的Spire.Pdf.dll打印无水印的PDF文件
  13. 最新黑马软件测试全套视频教程
  14. 数学模型:传染病模型
  15. GameFi 在宏观趋势上出现下滑,但个别项目却大放异彩| April Monthly Report
  16. hui后台框架html页面中的图标,HUI
  17. Bulldog靶机渗透
  18. [OHIF-Viewers]医疗数字阅片-医学影像-querySelector() 选择器语法-将画布(canvas)图像保存成本地图片的方法...
  19. Mac HomebrewCN被墙
  20. 基于消息中间件解决分布式事务的开源框架Myth

热门文章

  1. JEECG 3.6.3版本发布 企业级JAVA快速开发平台
  2. UI标签库专题八:JEECG智能开发平台 Menu(左侧菜单生成标签)
  3. 微信网站-微信应用-微信二次开发-演示方案
  4. 前端开发工具包-WijmoJS,部署授权详解
  5. FNV哈希算法【转】
  6. 8分钟回顾开源巨头 Facebook 的 2016
  7. 实现CStack类遇到的问题
  8. 程序员面试题100题第28题——全排列
  9. Flash开发的基本概念
  10. OJ1033: 五级制成绩