CUDA 与 OpenCL 区别

什么是OpenCL程序员

是由苹果(Apple)公司发起,业界众多著名厂商共同制做的面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境。便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,并且普遍适用于多核心处理器(CPU)、图形处理器(GPU)Cell类型架构以及数字信号处理器(DSP)等其余并行处理器,在游戏、娱乐、科研、医疗等各类领域都有广阔的发展前景。编程

什么是CUDA服务器

CUDA是一个基于NvidiaGPU的并行计算的架构。CUDA最主要的包含两个方面:一个是ISA指令集架构;第二硬件计算引擎;其实是硬件和指令集。也就是说咱们能够把CUDA看作是与X86或者cell相似的架构,可是是基因而GPU,而不是传统的CPU架构



OpenCL其实是什么?ide

  • OpenCL其实是针对异构系统进行并行编程的一个全新的APIOpenCL能够利用GPU进行一些并行计算的工做。工具

  • OpenGL是针对图形的,而OpenCL则是针对并行计算的API性能

  • OpenCL开发的过程当中,技术平台均为NVIDIAGPU,实际上OpenCL是基于NVIDIA GPU的平台进行开发的。另外OpenCL的第一次演示也是运行在NVIDIAGPU上。spa

  • 从本质上来讲,OpenCL就是一个至关于Windows平台中DirectX那样的技术。或者说,它是一个链接硬件和软件的API接口。在这一点上,它和OpenGL相似,不过OpenCL的涉及范围要比OpenGL大得多,它不只是用来做用于3D图形。若是用一句话描述,OpenCL的做用就是经过调用处理器和GPU的计算资源,释放硬件潜力,让程序运行得更快更好。设计

CUDA其实是什么?视频

  • CUDA架构是原生的,专门为计算接口而建造的这样的一个架构,这种硬件架构包括指令集都是很是适合于这种并行计算,为异构计算而设计的一整套的架构。CUDA架构能够支持API,包括OpenCL或者DirectX,同时CUDA还支持CC++语言,还包括FortranJavaPython等各类各样的语言。



OpenCLCUDA的关系是什么?

  • CUDAOpenCL的关系并非冲突关系,而是包容关系。OpenCL是一个API,在第一个级别,CUDA架构是更高一个级别,在这个架构上不论是OpenCL仍是DX11这样的API,仍是像C语言、FortranDX11计算,均可以支持。做为程序开发员来说,通常他们只懂这些语言或者API,能够采用多种语言开发本身的程序,无论他选择什么语言,只要是但愿调用GPU的计算能,在这个架构上均可以用CUDA来编程。

  • 关于OpenCLCUDA之间的技术区别,主要体如今实现方法上。基于C语言的CUDA被包装成一种容易编写的代码,所以即便是不熟悉芯片构造的科研人员,也可能利用CUDA工具编写出实用的程序。而OpenCL虽然句法上与CUDA接近,可是它更增强调底层操做,所以难度较高,但正由于如此,OpenCL才能跨平台运行。

  • CUDA是一个并行计算的架构,包含有一个指令集架构和相应的硬件引擎。OpenCL是一个并行计算的应用程序编程接口(API),在NVIDIA CUDA架构上OpenCL是除了C for CUDA外新增的一个CUDA程序开发途径。

  • 若是你想得到更多的对硬件上的控制权的话,你可使用OpenCL这个API来进行编程,若是对API不是太了解,也能够用CUDA C语言来编程,这是两种不一样编程的方式,他们有他们相同点和不一样点。可是有一点OpenCLCUDA C语言进行开发的时候,在并行计算这块,他们的概念是差很少的,这两种程序在程序上是有很大的类似度,因此程序之间的相互移植相对来讲也是比较容易。

  • CUDA     C语言与OpenCL的定位不一样,或者说是用人群不一样。CUDA C是一种高级语言,那些对硬件了解很少的非专业人士也能轻松上手;而OpenCL则是针对硬件的应用程序开发接口,它能给程序员更多对硬件的控制权,相应的上手及开发会比较难一些。

  • 程序员的使用习惯也是很是重要的一方面,那些在X86     CPU平台使用C语言的人员,会很容易接受基于CUDA GPU平台的C语言;而习惯于使用OpenGL图形开发的人员,看到OpenCL会更加亲切一些,在其基础上开发与图形、视频有关的计算程序会很是容易。

相关文章
相关标签/搜索