什么是OpenCL?

    对OpenCL研究了近一个月,现在有点小感想想同大家分享一下:

 

    什么是OpenCL?按照字面的意思就是open computing language(开放计算语言)。那么他与OpenGL有什么关系呢?答案是没有什么关系,要说有唯一的关系那就是他们是同一个组织(Khronos Group,http://www.khronos.cn/about/index.shtml)制定的API标准,那么OpenCL与OpenGL有什么异同呢?

 

    说的通俗易懂一点,OpenCL是一套利用处理器(CPU,GPU,或者其他处理器)并行运算能力来进行开发的API标准(到目前为止,CPU的并行处理能力跟GPU的并行处理能力是无法相提并论的,简单来说,是因为CPU每个核有只有一个计算单元,但是GPU一个核却有多达成百上千个计算单元),而OpenGL则是利用GPU来处理图像的API标准。当然,利用OpenCL进行图形开发的时候也是可以利用OpenGL的库,这个应该很容易能够理解。

 

    好,接下来重点说说OpenCL,这里不得不提到一下NVIDIA的CUDA(Compute Unified Device Architecture,http://www.nvidia.cn/object/cuda_home_new_cn.html)以及ATI的ATI Stream(http://www.amd.com.cn/CHCN/ati/StreamTechnology.html)。

    首先是CUDA,CUDA是NVIDIA设计出来的针对GPU的并行运算架构,就如同针对CPU的X86架构一样,然后再CUDA架构之上,NVIDIA最早设计了一套C扩展语言CUDA C来进行开发,现在也开始有了其他语言的版本。

    然后是ATI Stream,其实最早提出并行运算概念的是ATI而非NVIDIA,但是由于ATI没有上心,因为当时基于ATI Stream技术的并行开发只能用汇编来进行开发,毫无通用性可言,所以就让NVIDIA占得了先机。

    那么为何会有OpenCL呢,那是因为CUDA以及CUDA C都是NVIDIA自己制定的标准,没有通用性,而对于其他的厂商来讲,又急需要一套通用的针对并行开发的标准,所以OpenCL就诞生了。

    那么OpenCL的出现是否对NVIDIA的CUDA是一个打击呢?显然不是,因为OpenCL是工作在CUDA架构上的,所处的级别和CUDA C是一样的,而CUDA C同OpenCL,那么是程序员自己的事情了,他们喜欢使用哪种方式就使用哪种方式,对于具体想了解CUDA与OpenCL在使用方面的异同,那么请看(http://diy.yesky.com/vga/65/8638065.shtml)而对于ATI来讲,那么OpenCL就是工作在ATI Stream上。

    所以到现在为止,各位对OpenCL应该有个一个大致了解了吧。下一节跟你们分享一下如何在ubuntu下安装NVIDIA的OpenCL SDK并且进行简单的测试。

 

   

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值