OpenCL通用异构开放环境
OpenCL全称Open Computing Language,第一个面向异构系统通用目的并行编程的开放式、免费标准,一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。
OpenCL 1.0主要由一个并行计算API和一种针对此类计算的编程语言组成,此外还特别定义了:
1、C99编程语言并行扩展子集;
2、适用于各种类型异构处理器的坐标数据和基于任务并行计算API;
3、基于IEEE 754标准的数字条件;
4、与OpenGL、OpenGL ES和其他图形类API高效互通。
OpenCL是由苹果首次提出的,随后Khronos Group成立相关工作组,以苹果草案为基础,联合业界各大企业共同完成了标准制定工作。工作组的26个成员来自各行各业,且都是各自领域的领导者,具体包括3DLABS、 Activision Blizzard、AMD、苹果、ARM、Barco、博通、Codeplay、EA、爱立信、飞思卡尔、HI、IBM、Intel、 Imagination、Kestrel Institute、摩托罗拉、Movidia、诺基亚、NVIDIA、QNX、RapidMind、三星、Seaweed、TAKUMI、德州仪器、瑞典于默奥大学。
标准倡导者苹果将是最先应用OpenCL技术的厂商之一,代号Snow Leopard的新版操作系统Mac OS X 10.6就会集成该标准。相比之下,微软没有参与OpenCL的制定工作,Windows自然也不会提供支持,不过DirectX 11有类似的Computer Shader技术,很可能会重演DirectX与OpenGL之战。
同时,AMD Stream SDK、Codeplay Sieve C++等进行改革,适配OpenCL 1.0标准,NVIDIA的CUDA技术也借机大展拳脚。

OpenCL 3.0 的 C++ 内核
在 OpenCL 3.0 中,OpenCL 工作组已经从最初在 OpenCL 2.1 中定义的原始 OpenCL C++ 内核语言过渡,推荐社区 OpenCL开源前端编译器开发C++,提供改进的功能和与 OpenCL C 兼容性的开发人员,使用 C++17 编写内核程序。

C++ for OpenCL 结合了 OpenCL 和 C++17 的功能
C ++针对OpenCL是支持和使用LLVM编译器基础设施。在 Clang 中的实现,通过OpenCL 支持进行跟踪。使开发人员能够使用 OpenCL 内核中的大多数 C++17 功能,通过离线编译越来越多的 OpenCL,实现摄取的 SPIR-V 中间表示形式生成代码。
基本概念
OpenCL程序分为两部分。
 在主机(以CPU为核心)上运行
 在设备(以GPU为核心)上运行
设备有一个或多个计算单元,计算单元又包含一个或多个处理单元。在设备上运行的程序被称为核函数。但是对于核函数的编写,CUDA一般直接写在程序内,OpenCL是写在一个独立的文件中,并且文件后缀是.cl,由主机代码读入后执行,这一点OpenCL跟OpenGL中的渲染程序很像。

OpenCL平台由两部分组成,宿主机和OpenCL设备:
宿主机Host: CPU,扮演组织者的角色。包括kernel、kernel上下文、NDRange和队列等;队列控制着kernel如何执行,以及何时执行等。
设备Device:计算设备,可以是CPU、GPU、DSP或硬件提供以及OpenCL开发商支持的任何处理器。
SIMT(Single Instruction Multi Thread): 单指令多线程,GPU并行运算的主要方式,很多线程同时执行相同的运算指令,每个线程的数据有所不同,但执行的操作一致。
核函数(Kernel):在设备程序上执行运算的入口函数,在主机上调用。
工作项(Work-item): 类似于CUDA中的线程(Threads),多个工作项(线程)执行同样的核函数,每个Work-item都有一个ID号,通过ID号来区分处理数据。
工作组(Work-group):类似于CUDA中的线程块(Block),多个工作项组成一个工作组,Work-group内Work-item可以通信和协作。
ND-Range: 类似于CUDA中的网格,定义了Work-group的组织形式。
上下文(Context):整个OpenCL的运行环境,包括Kernel、Device、程序和内存。
设备:OpenCL程序调用的计算设备。
内核:在计算设备上执行的并行程序。
程序:内核程序的源代码(.cl文件)和可执行文件。
内存:计算设备执行OpenCL程序所需的变量。

OpenCL通用异构开放环境相关推荐

  1. OpenCL与异构并行计算

    原文:http://blog.csdn.net/changan2001/article/details/52955251 由于人工智能.深度学习和大数据处理随着移动互联的兴起,特别是对于图片.视频.语 ...

  2. 视觉世界中的“众里寻她”--开放环境下的人物特征表示

    编者按:辛弃疾在<青玉案.元夕>中曾这样写道,"众里寻她千百度,蓦然回首,那人却在,灯火阑珊处." 其实在视觉理解领域,这半阙词,描绘的即是,在熙熙攘攘的视觉世界中,通 ...

  3. PSP游戏开放环境的建立

     建立开发环境 ------- 获得toolchain和PSPSDK开发工具包,然后将其用CYGWIN运行. 说明:原文见于 http://www.psp-programming.com/tutori ...

  4. 开放环境下的群智决策:概念、挑战及引领性技术

    摘要 开放环境下的群智决策是一种群体参与.人机交互.大数据驱动的新型决策模式,致力于借助开放的互联网环境实现复杂问题求解和智能决策.然而,互联网具有高度开放.复杂交互.行为涌现的特性,使得基于互联网的 ...

  5. OpenCL 通用编程与优化(14)

    OpenCL 通用编程与优化(14) 9. Adreno GPU中的OpenCL扩展 9.1 OS依赖性供应商扩展 9.1.1 性能提示 (cl_qcom_perf_hint) 9.1.2 上下文创建 ...

  6. OpenCL 通用编程与优化(15)

    OpenCL 通用编程与优化(15) 9.2 分组 9.2.1 分组大小(wave 大小)选择 9.2.2 分组和shuffle 9.2 分组 OpenCL 2.0 通过称为 cl_khr_subgr ...

  7. 【人工智能 Open AI】通用 API 开放平台的系统架构设计

    写一篇技术文章<通用 API 开放平台的系统架构设计>,分5个章节,细化到三级目录,不少于2000字.使用markdown格式输出. 文章目录 通用 API 开放平台的系统架构设计 一.前 ...

  8. 异构网络环境matlab搭建代码,异构接入matlab

    在满足用户服务质量的同时,最小化系统的总功 率,以达到减少信道辐射干扰,并用 MATLAB 仿真出算法的有效性. 关键词:小基站异构网络,5G 系统 第一章 绪论 随着...... 欢迎访问 Gree ...

  9. OpenCL 通用编程与优化(3)

    OpenCL 通用编程与优化(3) 3.3 在图形和计算工作负载之间的上下文切换 3.3.1上下文开关 3.3.2在GPU上限制内核/工作组的执行时间 3.4 支持OpenCL标准特性 3.5Open ...

最新文章

  1. idea 自动生成构造以及get、set方法
  2. EE4J项目情况汇总,微软加入Jakarta EE工作组
  3. Anordighos手绘休闲脚本字体
  4. 排序 (5)桶排序“概念”
  5. redis设置为控制台打印日志
  6. vba循环通过键盘某个按键按下退出循环_51单片机按键检测--独立按键与矩阵键盘...
  7. asp.net core合并压缩资源文件引发的学习之旅
  8. Hadoop学习笔记(一):零Linux基础安装hadoop过程笔记
  9. Highlight(高亮)Gridview控件列
  10. 轻便的客户端本地文件数据库 SQLite
  11. CISSP重点知识总结1
  12. 电容或电感的电压_低成本电容电感测量电路
  13. macOS 控件教程(1)
  14. ubuntu 18.04 安装conda环境 及 创建虚拟环境
  15. arnold 调用 mantra的光子 做GI全局光和caustic焦散
  16. (一)SDN基本架构
  17. Chrome的在线自动字幕辅助工具
  18. 大数据HBase(四):HBase的相关操作-客户端命令式
  19. 世界上五十大开心事情
  20. eslint-disable-next-line

热门文章

  1. 设置腾讯云linux服务器中 MySQL 允许远程访问
  2. 2022-2028年中国涤纶市场投资分析及前景预测报告
  3. 2022-2028年中国床上用品行业投资分析及前景预测报告
  4. Python 多进程笔记 — 启动进程的方式、守护进程、进程间通信、进程池、进程池之间通信、多进程生产消费模型
  5. Linux top命令常见使用
  6. TVM性能评估分析(一)
  7. cmodel模拟器开发
  8. Xilinx低比特率高品质 ABR 视频实时转码(HPE 参考架构)
  9. 将Tensor核心引入标准Fortran
  10. Waymo的自主进化