关于opencl的新手问题

bearnohair 2014-10-02 02:00:54
刚开始了解GPU计算,在关于opencl的了解上有些疑问,特请教大家。

本来准备安装个opencl的sdk来研究研究,结果在khronos的官网上似乎只发现一些文档和几个头文件,并没有开发平台。后来一搜索,发现AMD、Intel和Nvidia都有自己提供的sdk,于是一下子就迷惑了。

这个opencl不是跨平台的一个东西吗,怎么不同厂家会提供不同的sdk呢?我用AMD的sdk来开发了个opencl程序,在N卡上能用不?opencl到底是在源码级兼容还是二进制级兼容?如果不能做到二进制级的兼容,那我要做一个支持不同类型GPU的程序,是不是需要分别安装不同厂家的sdk?另外,既然sdk都由不同的显卡厂家提供,那khronos官网上的头文件是做什么用的呢,它们被包含到这几个sdk里了吗?

新手提出的比较菜的问题,希望大家帮我解惑。
...全文
762 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bearnohair 2014-10-09
  • 打赏
  • 举报
回复
好的,基本了解了,再一次感谢版主的回复!
outstander 2014-10-08
  • 打赏
  • 举报
回复
关于支持的设备,新购买的APU,CPU,AMD和Nvidia的GPU,Intel新集成的核心显卡都是支持OpenCL的,但一般认为AMD对OpenCL的支持力度最大,投入力量最多,此外支持的版本也最新
outstander 2014-10-08
  • 打赏
  • 举报
回复
引用 2 楼 bearnohair 的回复:
多谢版主的热心回答,现在总算对opencl有些基本概念了,尤其是为了兼容不同厂家的显卡并不需要安装不同厂家的SDK这点让我放心。但现在又有了新的问题,对这三家的sdk,业界有什么评判呢?安装哪家的比较好用一点,挖掘机技术到底哪家强?^_^ 另外,我发现我的老集成显卡不支持opencl技术,现在市场是能够买到的显卡,不管是集成的还是APU或者是独立显卡,都支持这个吗?
由于3家sdk分别运行于各自的平台上,而性能除了和sdk相关更与硬件本身相关,所以很难给出哪一家sdk的优化做的更好的结论。 但是在CPU上,由于AMD和Intel都是X86的可以进行一些比较。目前AMD的OpenCL SDK运行于Intel的CPU上速度会比Intel自己的SDK要快(这里的快指的是运行一些benchmark程序的速度和性能)。 另外,在GPU上AMD支持的OpenCL版本已经到2.0,Nvidia相对支持的版本要老不少,不少显卡还只支持OpenCL1.1。在Nvidia平台上一般认为用其自己的CUDA更好一些(如果没有跨平台需求的话)。 值得注意的是,使用OpenCL这个工具其跨平台的特性本省是一个很大的优势,也许不用太拘泥于谁家的sdk更好。
bearnohair 2014-10-05
  • 打赏
  • 举报
回复
多谢版主的热心回答,现在总算对opencl有些基本概念了,尤其是为了兼容不同厂家的显卡并不需要安装不同厂家的SDK这点让我放心。但现在又有了新的问题,对这三家的sdk,业界有什么评判呢?安装哪家的比较好用一点,挖掘机技术到底哪家强?^_^ 另外,我发现我的老集成显卡不支持opencl技术,现在市场是能够买到的显卡,不管是集成的还是APU或者是独立显卡,都支持这个吗?
outstander 2014-10-04
  • 打赏
  • 举报
回复
1.这个opencl不是跨平台的一个东西吗,怎么不同厂家会提供不同的sdk呢?
答:opencl和opengl类似,是一个跨平台的标准而非跨平台的工具,因此需要各个厂商分别提供符合标准的sdk。它的原理和java有一些类似的地方。本质上程序真正执行时是二进制代码,显然不同平台是不一样的,因此二进制是无法跨平台的。所以java,opengl和opencl都是将代码编译成跨平台统一的中间码,而由不同平台的解释器或runtime执行。

2.我用AMD的sdk来开发了个opencl程序,在N卡上能用不?
答:一般情况下,可以用。只要这两种平台支持的opencl版本一致。目前N卡支持的opencl版本较低,因此要跨N和A卡使用OpenCL1.1的规范编程即可。要跨A卡的不同显卡,可用更新的OpenCL特性。

3.opencl到底是在源码级兼容还是二进制级兼容?
答:是中间码兼容,二进制兼容在技术上是不可能实现的,和java的原理类似

4.如果不能做到二进制级的兼容,那我要做一个支持不同类型GPU的程序,是不是需要分别安装不同厂家的sdk?
答:不需要安装不同的sdk,但运行的不同平台需要安装相应的runtime环境。

5.另外,既然sdk都由不同的显卡厂家提供,那khronos官网上的头文件是做什么用的呢,它们被包含到这几个sdk里了吗?
答:khronos官网的头文件是接口标准,要求各家的sdk都要遵循以便实现跨平台。它们都被包含到了各家的sdk中

608

社区成员

发帖
与我相关
我的任务
社区描述
异构开发技术
社区管理员
  • OpenCL和异构编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧