求助:各个公司OpenCL异同点

fengbingchun
博客专家认证
2013-08-05 03:09:42
NVIDIA中有OpenCL,IBM,intel,AMD,apple也都有自己的OpenCL,它们之间的差距大吗,OpenCL是有Khronos Group开发,最新版本2.0,但是为什么每个公司又都有自己的OpenCL呢,它们与Khronos Group组开发的OpenCL差异性大吗?为什么在Khronos Group网页中下载不到OpenCL的原始文件呢?谢谢!
...全文
725 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengbingchun 2013-08-09
  • 打赏
  • 举报
回复
引用 14 楼 lcwyylcwyy 的回复:
[quote=引用 12 楼 fengbingchun 的回复:] [quote=引用 11 楼 outstander 的回复:] [quote=引用 9 楼 lcwyylcwyy 的回复:] [quote=引用 6 楼 outstander 的回复:] OpenCL标准的提出,主要是为了解决跨平台的问题。使用OpenCL编写的程序,可以在Nvidia,AMD以及intel的显卡以及众核平台上不需更改直接运行。 目前AMD和Nvidia最新版本的SDK应该都支持OpenCL 1.2 NV只支持到1.1,有些1.2的代码无法编译通过,不过大多数代码都没有问题。具体的支持版本Nsight上的系统信息一项可以查到。如果2.0时代,NV还只支持1.1的话有点说不过去了。
我在Nvidia上写OpenCL不是特别多,OpenCL 1.2应该是需要硬件和软件(包括驱动和runtime)的支持。 Nvidia官网上说明笔记本上的GeForce GT 730M显卡是支持OpenCL 1.2的,应该是不同型号的GPU对OpenCL的支持也不一致。 请参见:http://www.geforce.com/hardware/notebook-gpus/geforce-gt-730m/specifications[/quote] 谢谢! OpenCL主要为跨平台,那么在32位机上编写的OpenCL代码执行文件,可以直接在64位机上运行吗?或者在64位机上编写的OpenCL代码执行文件,可以直接在32位机上运行吗?[/quote] 可以,64位上有x86-64的支持,kernel是通用的,只是Any CPU上引用的是x64的OpenCL.lib[/quote] 谢谢!
fengbingchun 2013-08-08
  • 打赏
  • 举报
回复
引用 11 楼 outstander 的回复:
[quote=引用 9 楼 lcwyylcwyy 的回复:] [quote=引用 6 楼 outstander 的回复:] OpenCL标准的提出,主要是为了解决跨平台的问题。使用OpenCL编写的程序,可以在Nvidia,AMD以及intel的显卡以及众核平台上不需更改直接运行。 目前AMD和Nvidia最新版本的SDK应该都支持OpenCL 1.2 NV只支持到1.1,有些1.2的代码无法编译通过,不过大多数代码都没有问题。具体的支持版本Nsight上的系统信息一项可以查到。如果2.0时代,NV还只支持1.1的话有点说不过去了。
我在Nvidia上写OpenCL不是特别多,OpenCL 1.2应该是需要硬件和软件(包括驱动和runtime)的支持。 Nvidia官网上说明笔记本上的GeForce GT 730M显卡是支持OpenCL 1.2的,应该是不同型号的GPU对OpenCL的支持也不一致。 请参见:http://www.geforce.com/hardware/notebook-gpus/geforce-gt-730m/specifications[/quote] 谢谢! OpenCL主要为跨平台,那么在32位机上编写的OpenCL代码执行文件,可以直接在64位机上运行吗?或者在64位机上编写的OpenCL代码执行文件,可以直接在32位机上运行吗?
lcwyylcwyy 2013-08-08
  • 打赏
  • 举报
回复
引用 12 楼 fengbingchun 的回复:
[quote=引用 11 楼 outstander 的回复:] [quote=引用 9 楼 lcwyylcwyy 的回复:] [quote=引用 6 楼 outstander 的回复:] OpenCL标准的提出,主要是为了解决跨平台的问题。使用OpenCL编写的程序,可以在Nvidia,AMD以及intel的显卡以及众核平台上不需更改直接运行。 目前AMD和Nvidia最新版本的SDK应该都支持OpenCL 1.2 NV只支持到1.1,有些1.2的代码无法编译通过,不过大多数代码都没有问题。具体的支持版本Nsight上的系统信息一项可以查到。如果2.0时代,NV还只支持1.1的话有点说不过去了。
我在Nvidia上写OpenCL不是特别多,OpenCL 1.2应该是需要硬件和软件(包括驱动和runtime)的支持。 Nvidia官网上说明笔记本上的GeForce GT 730M显卡是支持OpenCL 1.2的,应该是不同型号的GPU对OpenCL的支持也不一致。 请参见:http://www.geforce.com/hardware/notebook-gpus/geforce-gt-730m/specifications[/quote] 谢谢! OpenCL主要为跨平台,那么在32位机上编写的OpenCL代码执行文件,可以直接在64位机上运行吗?或者在64位机上编写的OpenCL代码执行文件,可以直接在32位机上运行吗?[/quote] 可以,64位上有x86-64的支持,kernel是通用的,只是Any CPU上引用的是x64的OpenCL.lib
lcwyylcwyy 2013-08-08
  • 打赏
  • 举报
回复
引用 11 楼 outstander 的回复:
[quote=引用 9 楼 lcwyylcwyy 的回复:] [quote=引用 6 楼 outstander 的回复:] OpenCL标准的提出,主要是为了解决跨平台的问题。使用OpenCL编写的程序,可以在Nvidia,AMD以及intel的显卡以及众核平台上不需更改直接运行。 目前AMD和Nvidia最新版本的SDK应该都支持OpenCL 1.2 NV只支持到1.1,有些1.2的代码无法编译通过,不过大多数代码都没有问题。具体的支持版本Nsight上的系统信息一项可以查到。如果2.0时代,NV还只支持1.1的话有点说不过去了。
我在Nvidia上写OpenCL不是特别多,OpenCL 1.2应该是需要硬件和软件(包括驱动和runtime)的支持。 Nvidia官网上说明笔记本上的GeForce GT 730M显卡是支持OpenCL 1.2的,应该是不同型号的GPU对OpenCL的支持也不一致。 请参见:http://www.geforce.com/hardware/notebook-gpus/geforce-gt-730m/specifications[/quote] 我GT680上NSIGHT只支持到1.1,所以我们写的通用软件上必须只支持到1.1。争论这个其实没用,NV早点支持1.2或2.0才好,要不写的程序都只能按最低方案写,要不就CUDA,CL各写一套,增加了维护成本。
outstander 2013-08-07
  • 打赏
  • 举报
回复
引用 9 楼 lcwyylcwyy 的回复:
[quote=引用 6 楼 outstander 的回复:] OpenCL标准的提出,主要是为了解决跨平台的问题。使用OpenCL编写的程序,可以在Nvidia,AMD以及intel的显卡以及众核平台上不需更改直接运行。 目前AMD和Nvidia最新版本的SDK应该都支持OpenCL 1.2 NV只支持到1.1,有些1.2的代码无法编译通过,不过大多数代码都没有问题。具体的支持版本Nsight上的系统信息一项可以查到。如果2.0时代,NV还只支持1.1的话有点说不过去了。
我在Nvidia上写OpenCL不是特别多,OpenCL 1.2应该是需要硬件和软件(包括驱动和runtime)的支持。 Nvidia官网上说明笔记本上的GeForce GT 730M显卡是支持OpenCL 1.2的,应该是不同型号的GPU对OpenCL的支持也不一致。 请参见:http://www.geforce.com/hardware/notebook-gpus/geforce-gt-730m/specifications
fengbingchun 2013-08-06
  • 打赏
  • 举报
回复
引用 3 楼 lcwyylcwyy 的回复:
老实说我感觉NV的CUDA支持的更普遍一些,CL的话就是AMD的支持比较多,但NV也支持CL,不过NV在5.0以后对CL的支持好像停滞了。嵌入式系统中高通 ARM的Mali都支持1.1版本CL 程序本身不需要什么改动,主要是不同的公司兼容CL版本不同,需要注意版本间测差异
非常谢谢你! CUDA目前只能应用在NVIDIA GPU显卡上,是吗?OpenCL不是可以应用在很多GPU、CPU上吗?好像CUDA5.0中OpenCL只支持1.0、1.1版本,其他公司的支持版本不太清楚。最新的OpenCL2.0正式标准快发布了,难道那些公司不会提升版本库吗? 你说的程序本身不需要什么改动?假如说,我用AMD OpenCL1.1 SDK开发的程序,直接拿到intel OpenCL1.1 SDK中,它们支持的OpenCL版本都是1.1的话,程序不用任何修改就能直接运行吗?是这样吗?
lcwyylcwyy 2013-08-06
  • 打赏
  • 举报
回复
老实说我感觉NV的CUDA支持的更普遍一些,CL的话就是AMD的支持比较多,但NV也支持CL,不过NV在5.0以后对CL的支持好像停滞了。嵌入式系统中高通 ARM的Mali都支持1.1版本CL 程序本身不需要什么改动,主要是不同的公司兼容CL版本不同,需要注意版本间测差异
fengbingchun 2013-08-06
  • 打赏
  • 举报
回复
引用 1 楼 lcwyylcwyy 的回复:
只是驱动层实现不同,上层接口都遵循OpenCL标准
谢谢! 那么哪个公司的OpenCL应用广泛一些呢?如果从一个公司的OpenCL转到另一个公司的OpenCL是不是需要改动很大呢?它们之间有没有一个普遍通用的方法,在彼此之间可以运行同一个OpenCL程序呢?
fengbingchun 2013-08-06
  • 打赏
  • 举报
回复
引用 9 楼 lcwyylcwyy 的回复:
[quote=引用 6 楼 outstander 的回复:] OpenCL标准的提出,主要是为了解决跨平台的问题。使用OpenCL编写的程序,可以在Nvidia,AMD以及intel的显卡以及众核平台上不需更改直接运行。 目前AMD和Nvidia最新版本的SDK应该都支持OpenCL 1.2 NV只支持到1.1,有些1.2的代码无法编译通过,不过大多数代码都没有问题。具体的支持版本Nsight上的系统信息一项可以查到。如果2.0时代,NV还只支持1.1的话有点说不过去了。
谢谢!
lcwyylcwyy 2013-08-06
  • 打赏
  • 举报
回复
[quote=引用 6 楼 outstander 的回复:] OpenCL标准的提出,主要是为了解决跨平台的问题。使用OpenCL编写的程序,可以在Nvidia,AMD以及intel的显卡以及众核平台上不需更改直接运行。 目前AMD和Nvidia最新版本的SDK应该都支持OpenCL 1.2 NV只支持到1.1,有些1.2的代码无法编译通过,不过大多数代码都没有问题。具体的支持版本Nsight上的系统信息一项可以查到。如果2.0时代,NV还只支持1.1的话有点说不过去了。
fengbingchun 2013-08-06
  • 打赏
  • 举报
回复
引用 6 楼 outstander 的回复:
OpenCL标准的提出,主要是为了解决跨平台的问题。使用OpenCL编写的程序,可以在Nvidia,AMD以及intel的显卡以及众核平台上不需更改直接运行。 目前AMD和Nvidia最新版本的SDK应该都支持OpenCL 1.2 [quote=引用 4 楼 fengbingchun 的回复:] [quote=引用 3 楼 lcwyylcwyy 的回复:] 老实说我感觉NV的CUDA支持的更普遍一些,CL的话就是AMD的支持比较多,但NV也支持CL,不过NV在5.0以后对CL的支持好像停滞了。嵌入式系统中高通 ARM的Mali都支持1.1版本CL 程序本身不需要什么改动,主要是不同的公司兼容CL版本不同,需要注意版本间测差异
非常谢谢你! CUDA目前只能应用在NVIDIA GPU显卡上,是吗?OpenCL不是可以应用在很多GPU、CPU上吗?好像CUDA5.0中OpenCL只支持1.0、1.1版本,其他公司的支持版本不太清楚。最新的OpenCL2.0正式标准快发布了,难道那些公司不会提升版本库吗? 你说的程序本身不需要什么改动?假如说,我用AMD OpenCL1.1 SDK开发的程序,直接拿到intel OpenCL1.1 SDK中,它们支持的OpenCL版本都是1.1的话,程序不用任何修改就能直接运行吗?是这样吗?[/quote][/quote] 谢谢!
fengbingchun 2013-08-06
  • 打赏
  • 举报
回复
引用 5 楼 outstander 的回复:
准确的说,OpenCL是一种标准或说是协议,在逻辑层面规定了这一通用计算工具所提供的服务以及API接口。 AMD,Nvidia,Intel和Apple等公司在Khronos Group中通过协商和博弈后,决定和发布OpenCL这一工业标准的具体内容。Khronos Group发布的OpenCL 2.0是指该标准的2.0版。各个公司会推出自己支持最新标准的SDK。 这其实和大多数的工业标准和协议时类似的。如:工业标准OpenGL官网本身也只提供一套逻辑标准,以及头文件作为接口,没有提供任何实现。各个厂商分别提供自己的OpenGL实现。另外一些协议,如TCP/IP,协议本身只规定了应该通讯报文格式,通讯行为约定等,其协议的在windows和linux上的支持和实现是由操作系统厂商提供的。 OpenCL标准的提出,主要是为了解决跨平台的问题。使用OpenCL编写的程序,可以在Nvidia,AMD以及intel的显卡以及众核平台上不需更改直接运行。
谢谢,很受益。
outstander 2013-08-06
  • 打赏
  • 举报
回复
OpenCL标准的提出,主要是为了解决跨平台的问题。使用OpenCL编写的程序,可以在Nvidia,AMD以及intel的显卡以及众核平台上不需更改直接运行。 目前AMD和Nvidia最新版本的SDK应该都支持OpenCL 1.2
引用 4 楼 fengbingchun 的回复:
[quote=引用 3 楼 lcwyylcwyy 的回复:] 老实说我感觉NV的CUDA支持的更普遍一些,CL的话就是AMD的支持比较多,但NV也支持CL,不过NV在5.0以后对CL的支持好像停滞了。嵌入式系统中高通 ARM的Mali都支持1.1版本CL 程序本身不需要什么改动,主要是不同的公司兼容CL版本不同,需要注意版本间测差异
非常谢谢你! CUDA目前只能应用在NVIDIA GPU显卡上,是吗?OpenCL不是可以应用在很多GPU、CPU上吗?好像CUDA5.0中OpenCL只支持1.0、1.1版本,其他公司的支持版本不太清楚。最新的OpenCL2.0正式标准快发布了,难道那些公司不会提升版本库吗? 你说的程序本身不需要什么改动?假如说,我用AMD OpenCL1.1 SDK开发的程序,直接拿到intel OpenCL1.1 SDK中,它们支持的OpenCL版本都是1.1的话,程序不用任何修改就能直接运行吗?是这样吗?[/quote]
outstander 2013-08-06
  • 打赏
  • 举报
回复
准确的说,OpenCL是一种标准或说是协议,在逻辑层面规定了这一通用计算工具所提供的服务以及API接口。
AMD,Nvidia,Intel和Apple等公司在Khronos Group中通过协商和博弈后,决定和发布OpenCL这一工业标准的具体内容。Khronos Group发布的OpenCL 2.0是指该标准的2.0版。各个公司会推出自己支持最新标准的SDK。

这其实和大多数的工业标准和协议时类似的。如:工业标准OpenGL官网本身也只提供一套逻辑标准,以及头文件作为接口,没有提供任何实现。各个厂商分别提供自己的OpenGL实现。另外一些协议,如TCP/IP,协议本身只规定了应该通讯报文格式,通讯行为约定等,其协议的在windows和linux上的支持和实现是由操作系统厂商提供的。

OpenCL标准的提出,主要是为了解决跨平台的问题。使用OpenCL编写的程序,可以在Nvidia,AMD以及intel的显卡以及众核平台上不需更改直接运行。
lcwyylcwyy 2013-08-05
  • 打赏
  • 举报
回复
只是驱动层实现不同,上层接口都遵循OpenCL标准

602

社区成员

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

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