谈CUDA和OpenCL的差异和发展前景.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
谈CUDA和OpenCL的差异和发展前景.doc

谈CUDA和OpenCL的差异和发展前景   摘 要:CUDA是一种由NVIDIA推出的并行计算架构,非常适合大规模数据密集型计算。CUDA使GPU的超高计算性能在数据处理和并行计算等通用计算领域发挥优势,本文讨论了CUDA的计算架构和基于GPU的CUDA C编程语言,CUDA使GPU流处理器阵列的性能得到充分发挥。极大地提高了并行计算程序的效率。   关键词:OpenCL;CUDA   从很多方面来看,CUDA和OpenCL的关系都和DirectX与OpenGL的关系很相像。如同DirectX和OpenGL一样,CUDA和OpenCL中,前者是配备完整工具包、针对单一供应商(NVIDIA)的成熟的开发平台,后者是一个开放的标准。   虽然两者抱着相同的目标:通用并行计算。但是CUDA仅仅能够在NVIDIA的GPU硬件上运行,而OpenCL的目标是面向任何一种Massively Parallel Processor,期望能够对不同种类的硬件给出一个相同的编程模型。由于这一根本区别,二者在很多方面都存在不同:   1 开发者友好程度。   CUDA在这方面显然受更多开发者青睐。原因在于其统一的开发套件(CUDAToolkit, NVIDIA GPU Computing SDK以及NSight等等)、非常丰富的库(cuFFT,cuBLAS, cuSPARSE, cuRAND, NPP, Thrust)以及NVCC(NVIDIA的CUDA编译器)所具备的PTX(一种SSA中间表示,为不同的NVIDIA GPU设备提供一套统一的静态ISA)代码生成、离线编译等更成熟的编译器特性。相比之下,使用OpenCL进行开发,只有AMD对OpenCL的驱动相对成熟。   2 跨平台性和通用性。   这一点上OpenCL占有很大优势(这也是很多National Laboratory使用OpenCL进行科学计算的最主要原因)。OpenCL支持包括ATI,NVIDIA,Intel,ARM在内的多类处理器,并能支持运行在CPU的并行代码,同时还独有Task-Parallel Execution Mode,能够更好的支持Heterogeneous Computing。这一点是仅仅支持数据级并行并仅能在NVIDIA众核处理器上运行的CUDA无法做到的。   3 市场占有率。   作为一个开放标准,缺少背后公司的推动,OpenCL显然没有占据通用并行计算的主流市场。NVIDIA则凭借CUDA在科学计算、生物、金融等领域的推广牢牢把握着主流市场。再次想到OpenGL和DirectX的对比,不难发现公司推广的高效和非盈利机构/标准委员会的低效(抑或谨慎,想想C++0x)。   我接触的很多开发者(包括我本人)都认为,由于目前独立显卡市场的萎缩、新一代处理器架构(AMD的Graphics Core Next (GCN)、Intel的Sandy Bridge以及Ivy Bridge)以及新的SIMD编程模型(Intel的ISPC等)的出现,未来的通用并行计算市场会有很多不确定因素,CUDA和OpenCL都不是终点,我期待未来会有更好的并行编程模型的出现(当然也包括CUDA和OpenCL,如果它们能够持续发展下去)。   观点1   (1)CUDA有远好于OpenCL的生态系统,更易用,对程序员更友好。OpenCL的API设计怪异,缺乏一致性,功能亦不正交,很不直观,远未成熟。   (2)OpenCL的portability被夸大了,事实上根据我的经验,AMD和NV的OpenCL实现,组合行为是有差异的,并且有些十分隐蔽,难于调试。而且同样的代码在AMD和NV是有性能差异的,有时候差异非常大,为了一致的性能不得不写两套代码。如果有更多的vendor呢?   (3)OpenCL作为开放的标准,完全依赖于厂商的实现,不同厂商支持标准不同。如果NV放弃支持OpenCL,那它还是通用的开放的标准吗?   (4)即使NV倒闭,会有OpenCUDA出现的。   现在AMD在推新的HSA,其IL类似NV的PTX,不知是何用意。Java会在未来(JAVA 9? 2015?)支持NV/AMD GPU加速。OpenCL的美好只存在于未来,问题是这个未来有多远。   观点2   (1)CUDA与OpenCL的联系并不是矛盾关系,而是互相辅助关系,OpenCL其实就是一个API,在最低一个级别,CUDA架构是更高地一个级别,这个架构上不论是OpenCL还是DX11这样的API,或是像C语言、Fortran、DX11计算,都可以很好地支持。程序开发员来说,一般他们只懂这些语言或者API,可以利用多种语言开发自己的程序,不论程序员选择什么语言,只要是希

文档评论(0)

神话 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5203223011000000

1亿VIP精品文档

相关文档