1、OpenCL扩展

OpenCL扩展是指device支持某种特性,但这中特性并不是OpenCL标准的一部分。通过扩展,厂商可以给device增加一些新的功能,而不用考虑兼容性问题。现在各个厂商在OpenCL的实现中或多或少的使用了自己的扩展。

扩展的类型分为三种:

  • Khronos OpenCL工作组批准的扩展,这种要经过一致性测试,可能会被增加到新版本的OpenCL规范中。这种扩展都以cl_khr作为扩展名。
  • 外部扩展, 以cl_ext为扩展名。这种扩展是由2个或2个以上的厂商发起,并不需要进行一致性测试。比如cl_ext_device_fission扩展。
  • 某个厂商自己的扩展,比如AMD的扩展printf

2、使用扩展

OpenCL中,要使用扩展,我们必须打开扩展,在默认状态下,所有的扩展都是禁止的。

#pragma OPENCL EXTENSION extension_name : enable

对于OpenCL,一个函数只有在运行时,才知道其是否可用,所以要确定某个扩展是否可用,是程序员的责任,我们必须在使用前查询它的状态。下面是查询扩展是否可用的代码:

3、一些Khronos批准的扩展

原子操作,它可以保证函数只在一个device上实施原子操作,比如:

—cl_khr_{global | local}_int32_base_atomics

—cl_khr_{global | local}_int32_extended_atomics

—cl_khr_int64_base_atomics

—cl_khr_int64_extended_atomics

注意:原子操作能够保证操作结果正确,但不保证操作的顺序。

双精度和half精度扩展cl_khr_fp64,在一些物理模拟或者科学计算中,需要双精度支持。AMD的64位扩展用cl_amd_fp64,对于cl_khr_fp64是部分支持,NV支持cl_khr_fp64扩展。但half精度扩展cl_khr_fp16,这两家厂商现在都还不支持。

在OpenCL中,Byte addressable store 也是一个扩展,对于sub 32的写,比如char,需要该扩展的支持。例如AMD 直方图的例子中,每个bin用一个byte来存储。

3D Image Write Extensions,在OpenCL标准中,支持2D图像的读写,3D图形的写就需要通过扩展来操作。

The extension cl_KHR_gl_sharing 允许应用程序使用OpenGL buffer,纹理等。

4、AMD扩展

cl_ext_device_fission扩展,通过该扩展把一个设备分成多个子设备,每一个设备都有自己的队列,主要是多核cpu以及Cell Broadband Engine使用,该扩展由AMD,Apple,Intel以及IBM四家联合提出。

fission设备可能的用途包括:

  • 保留一部分设备处理高优先级、低时延的任务。
  • Control for the assignment of work to individual compute units
  • Subdivide compute devices along some shared hardware feature like a cache

对于每个子设备,都有自己的queue,比如下面的图中,我们把不同任务发送到两个子设备。值得注意的是:要把设备拆分为子设备,首先我们要了解该设备的架构,然后根据任务及device架构进行拆分。

GPU printf 扩展,主要用来debug kernel代码。cl_amd_media_ops扩展,主要用于一些多媒体操作。The AMD device query extension 主要用于查询和事件处理。

5、NV扩展

  • Compiler Options
  • Interoperability Extensions
  • Device Query Extension

6、Cell Broadband Engine Extensions

cell处理器用的不多,就不详细说了,使用的人可以查询其相关手册。

转载于:https://www.cnblogs.com/mikewolf2002/archive/2012/01/31/2333907.html

AMD OpenCL大学课程(13) OpenCL扩展相关推荐

  1. AMD OpenCL 大学课程

    AMD OpenCL大学课程是非常好的入门级OpenCL教程,通过看教程中的PPT,我们能够很快的了解OpenCL机制以及编程方法.下载地址:http://developer.amd.com/zone ...

  2. AMD OpenCL大学课程(12) 性能优化案例NBody

    本节主要介绍NBody算法的OpenCL性能优化. 1.NBody NBody系统主要用来通过粒子之间的物理作用力来模拟星系系统.每个粒子表示一个星星,多个粒子之间的相互作用,就呈现出星系的效果. 上 ...

  3. 世界编程语言与大学_学习新世界语言的最佳免费在线大学课程

    世界编程语言与大学 Up until a few years ago, language classes cost hundreds of dollars, and came on CDs or DV ...

  4. Imagination和浙江大学信电学院签署合作协议,校企共创大学课程新篇章

    2021年9月8日,Imagination和浙江大学信息与电子工程学院签署合作协议.此次合作是Imagination大学项目(IUP)的一部分,也是Imagination与中国高校合作的新篇章.双方将 ...

  5. 机器学习 2014斯坦福大学课程: 4-1 神经网络

    机器学习 2014斯坦福大学课程: 4-1 神经网络 刚开始学习机器学习,学习的视频教程是coursera网站上吴恩达(Andrew Ng)教授的机器学习课程. 在此梳理并记录总结笔记,供学习交流,欢 ...

  6. 大学课程能给我们带来什么?

    外在的环境我们无法改变,我们唯一能做的,就是改变我们自己,以便能够在我们人生最美好的时光,尽可能多地从大学现有的资源中汲取营养.现在,就让我们来分析一下大学里开设的课程,究竟对我们有什么意义(由于笔者 ...

  7. 计算机第三章ppt课件ppt,计算机操作系统(大学课程)第三章幻灯片课件.ppt

    计算机操作系统(大学课程)第三章幻灯片课件.ppt 2.成组调度 应用程序A 应用程序B Cpu1 线程1 线程1 Cpu2 线程2 空闲 Cpu3 线程3 空闲 Cpu4 线程4 空闲 时间 1/2 ...

  8. 北风设计模式课程---13、享元模式

    北风设计模式课程---13.享元模式 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 1.享元模式的核心是什么? 对象插入到一个池子里面去,如果池子里面没有 ...

  9. mysql数据库优化课程---13、mysql基础操作

    mysql数据库优化课程---13.mysql基础操作 一.总结 一句话总结:mysql复制表,索引,视图 1.mysql如何复制表? like select * 1.复制表结构 create tab ...

  10. github大学课程_GitHub基础教程:如何使用GitHub课程

    github大学课程 Learn the basics of GitHub in this tutorial by Tiffany Thompson. You will learn about: 在T ...

最新文章

  1. 线程、线程匿名内部类、解决线程不安全的方式
  2. Github 开源:使用控制器操作 WinForm/WPF 控件( Sheng.Winform.Controls.Controller)
  3. Redis内核原理及读写一致企业级架构深入剖析1-综合组件环境实战
  4. 基于.NET的分词软件设计与实现V1.0--总体思路及算法实现
  5. meta是什么意思中文_专访 | 从艾希到电子姬,幻刃网络做了款TapTap 8.2分的Meta手游...
  6. Python基础 —— sys 模块
  7. Linux基础知识-文件管理
  8. js打印插件_使用 Nodejs 开发一个 commitlint-release 插件
  9. 爬取西刺代理的免费IP
  10. HOST 文件网页屏蔽广告
  11. C语言学习--------修改控制台输出文字颜色
  12. 用python实现监听微信撤回消息
  13. 中病毒了文件夹变exe文件找到方法
  14. 员工出错处罚通知_员工处罚通知书范文.doc
  15. 如何设置VSCode删除整行快捷键?
  16. D-Link DAP-1860:远程命令执行和认证绕过漏洞
  17. Adobe 及 Acrobat Reader 下载链接(FTP)
  18. Python练习——古典兔子问题(函数封装、条件循环)
  19. 在网盘上传大文件,一个G的文件有可能几秒中就上传完了。称为极速秒传,请问它是怎么做到的?
  20. delphi 裁剪mp3_delphi版MP3切割

热门文章

  1. 079 pandas模块
  2. Tortoise svn 基础知识
  3. java拷贝字符文件
  4. vm12 pro 安装radhat6.3
  5. Asp.net对http request 处理的全过程!
  6. [ZT]软件质量属性
  7. 无法启用数据库中的 Service Broker,因为已存在启用的具有相同 ID 的 Service Broker。...
  8. 创建visual basic2005 数据库
  9. Java并发容器,底层原理深入分析
  10. 2.基于梯度的攻击——FGSM