当前位置 : 主页 > 编程语言 > 其它开发 >

cuda在ubuntu的安装使用分享

来源:互联网 收集:自由互联 发布时间:2022-06-05
前言 之前给大家分享过opencv在jetson nano 2gb和ubuntu设备中使用并且展示了一些人脸识别等的小demo。但是对于图像处理,使用gpu加速是很常见 .(以下概念介绍内容来自百科和网络其他博主
前言

之前给大家分享过opencv在jetson nano 2gb和ubuntu设备中使用并且展示了一些人脸识别等的小demo。但是对于图像处理,使用gpu加速是很常见 .(以下概念介绍内容来自百科和网络其他博主文章)

GPU介绍(从GPU诞生之日起,GPU的设计逻辑与CPU的设计逻辑相差很多。GPU从诞生之日起,它的定位是3D图形渲染设备。在设计GPU时从其功能出发,把更多的晶体管用于数据处理。这使得GPU相比CPU有更强的单精度浮点运算能力。人们为了充分利用GPU的性能,使用了很多方法。这)加速处理是比较常见的。

在而GPU加速的软件实现中我们可能会听到 opengl opencl cuda这些名词。下面再给大家分别介绍一下这几种区别:

OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来绘制从简单的图形比特到复杂的三维景象。而另一种程序接口系统是仅用于Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟现实、科学可视化程序和电子游戏开发。

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

从2007年以后,基于CUDA和OpenCL这些被设计成具有近似于高阶语言的语法特性的新GPGPU语言,降低了人们使用GPGPU的难度,平缓了开始时的学习曲线。使得在GPGPU领域,OpenGL中的GLSL逐渐退出了人们的视线。来源:

简单说OpenCL与OpenGL一样,都是基于硬件API的编程。OpenGL是针对图形的,而OpenCL则是针对并行计算的API,而针对并行计算下面还有一个cuda。

CUDA(Compute Unified Device Architecture,统一计算架构)是由英伟达NVIDIA所推出的一种整合技术,是该公司对于GPGPU的正式名称。透过这个技术,使用者可利用NVIDIA的GeForce 8以后的GPU和较新的Quadro GPU进行计算。亦是首次可以利用GPU作为C-编译器的开发环境。NVIDIA行销的时候,往往将编译器与架构混合推广,造成混乱。实际上,CUDA可以相容OpenCL或者自家的C-编译器。无论是CUDA C-语言或是OpenCL,指令最终都会被驱动程式转换成PTX代码,交由显示核心计算。

通俗的介绍,cuda是nvidia公司的生态,它前者是配备完整工具包、针对单一供应商(NVIDIA)的成熟的开发平台,opencl是一个开源的标准。

CUDA是NVIDIA GPU编程语言, OpenCL是异构计算库。CUDA和C++虽然都可以用nvcc编译,但C++只能在CPU上跑,CUDA只能在GPU上跑;而OpenCL并不局限于某个计算设备,旨在将同样的任务通过其提供的抽象接口在多种硬件上运行(CPU,GPU,FPGA,etc)

跨平台性和通用性上OpenCL占有很大优势(这也是很多National Laboratory使用OpenCL进行科学计算的最主要原因)。OpenCL支持包括ATI,NVIDIA,Intel,ARM在内的多类处理器,并能支持运行在CPU的并行代码,同时还独有Task-Parallel Execution Mode,能够更好的支持Heterogeneous Computing。这一点是仅仅支持数据级并行并仅能在NVIDIA众核处理器上运行的CUDA无法做到的。

在开发者友好程度CUDA在这方面显然受更多开发者青睐。原因在于其统一的开发套件(CUDA Toolkit, NVIDIA GPU Computing SDK以及NSight等等)、非常丰富的库(cuFFT, cuBLAS, cuSPARSE, cuRAND, NPP, Thrust)以及NVCC(NVIDIA的CUDA编译器)所具备的PTX(一种SSA中间表示,为不同的NVIDIA GPU设备提供一套统一的静态ISA)代码生成、离线编译等更成熟的编译器特性。相比之下,使用OpenCL进行开发,只有AMD对OpenCL的驱动相对成熟。 来源

今天的主题来自介绍cuda的使用,前面这部分概念性的介绍(来源都是网络,只有一小部分是自己写的)只是帮助大家好理解今天要使用的cuda,那么开始进入正题。(自己本身的电脑带NVIDIA的显卡,以及手里面有jetson nano的NVIDIA板卡,所以才使用cuda,其他朋友使用请注意自己手中的硬件是否有NVIDIA的显卡)。

接下来,我大致分为三个部分介绍,一、cuda并行计算原理介绍 ,二、cuda环境安装和直接使用,三、opencv中cuda安装和使用

上一篇:docker安装RabbitMQ及安装延迟插件
下一篇:没有了
网友评论