nvidia/cuda 公开源中的devel和runtime有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nvidia/cuda 公开源中的devel和runtime有啥区别相关的知识,希望对你有一定的参考价值。

从很多方面来看,CUDA和OpenCL的关系都和DirectX与OpenGL的关系很相像。如同DirectX和OpenGL一样,CUDA和OpenCL中,前者是配备完整工具包、针对单一供应商(NVIDIA)的成熟的开发平台,后者是一个开放的标准。
虽然两者抱着相同的目标:通用并行计算。但是CUDA仅仅能够在NVIDIA的GPU硬件上运行,而OpenCL的目标是面向任何一种Massively Parallel Processor,期望能够对不同种类的硬件给出一个相同的编程模型。由于这一根本区别,二者在很多方面都存在不同:

1)开发者友好程度。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的驱动相对成熟。

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,如果它们能够持续发展下去)。
参考技术A

devel是说只涵盖了开发所需的所有工具,包含编译、debug等,以及编译需要的头文件、静态库。

runtime是说只涵盖了运行环境的最小集合,例如动态库等

所以runtime的镜像大小会比devel小一些

附上原文说明:

    base: starting from CUDA 9.0, contains the bare minimum (libcudart) to deploy a pre-built CUDA application.
    Use this image if you want to manually select which CUDA packages you want to install.

    runtime: extends the base image by adding all the shared libraries from the CUDA toolkit.
    Use this image if you have a pre-built application using multiple CUDA libraries.

    devel: extends the runtime image by adding the compiler toolchain, the debugging tools, the headers and the static libraries.
    Use this image to compile a CUDA application from sources.

Ubuntu 下安装CUDA(安装:NVIDIA-384+CUDA9.0+cuDNN7.1)

(安装:NVIDIA-384+CUDA9.0+cuDNN7.1)

显卡(GPU)驱动:NVIDIA-384

CUDA:CUDA9.0

cuDNN:cuDNN7.1

Ubuntu 下安装CUDA需要装NVIDIA驱动,首先进入NVIDIA官网,然后查询对应NVIDIA驱动是否支持你电脑的型号。

这里我的电脑是:华硕F450J ,自带的NVIDIA GEFORCE 745。

第一步、安装NVIDIA GPU驱动

NVIDIA官网查询是否支持我电脑的GPU如下

 

可以看出:GeForce 700M Series (Notebooks):

GeForce GTX 780M, GeForce GTX 770M, GeForce GTX 765M, GeForce GTX 760M, GeForce GT 755M, GeForce GT 750M, GeForce GT 745M, GeForce GT 740M, GeForce GT 735M, GeForce GT 730M, GeForce GT 720M, GeForce GT 710M, GeForce 720M, GeForce 710M, GeForce 705M

GeForce GT 745M为我电脑的型号,所以version:390.48是支持我的NVIDIAGPU驱动的。

所以第二部我们安装NVIDIA DISPLAY DRIVER  version:390.48 执行如下代码:

第一部分:安装后续步骤或环境必需的依赖包 

1 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler   
2 
3 sudo apt-get install --no-install-recommends libboost-all-dev   
4 
5 sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev   
6 
7 sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev   
8 
9 sudo apt-get install git cmake build-essential

输入以下代码输出如下信息则表示依赖环境安装成功

code:

1 sudo apt-get install git cmake build-essential 

显示:

1 Reading package lists... Done   
2 Building dependency tree
3 Reading state information... Done
4 build-essential is already the newest version (12.1ubuntu2). 
5 cmake is already the newest version (3.5.1-1ubuntu3).  
6 git is already the newest version (1:2.7.4-0ubuntu1.3).   
7 0 upgraded, 0 newly installed, 0 to remove and 126 not upgraded. 

表示依赖环境安装成功

 

第二部分:安装显示驱动

官网下载NVIDIA的显卡(GPU)驱动然后运行。或者直接终端上运行,执行如下代码。

sudo apt-get update  
sudo add-apt-repository ppa:graphics-drivers/ppa 
sudo apt-get update 
sudo apt-get install nvidia-384  
sudo apt-get install mesa-common-dev 
sudo apt-get install freeglut3-dev    

执行结束后,重新启动系统

sudo reboot  #或者sudo shutdown -r now

开机后检测是否安装显示驱动成功

nvidia-settings  #或者直接点击dash开始界面输入NVIDIA查看

显示如下信息表示安装成功

 配置环境变量

sudo gedit ~/.bashrc

在.bashrc中加入如下两行

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH 
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

第二步、安装NVIDIA CUDA

第一部分、先进入NVIDIA官网的CUDA Toolkit 下载界面

如下图所示,下载CUDA Toolkit

注意:这个地方的提示,要安装这个CUDA Toolkit 9.1,需要先安装至少NVIDIA DISPLAY DRIVER R390 版本3.90以上。

CUDA Toolkit 

下载好CUDA Toolkit9.1后,执行如下代码进行安装(此处不需要安装OPGL),代码如下: 

1 sudo sh cuda_9.0.176_384.81_linux.run --no-opengl-libs    #run文件的文件名根据自己下的文件名修改,默认是我提供的文件 

输出显示:

 1 Do you accept the previously read EULA? 
 2 accept/decline/quit: accept 
 3 Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81? 
 4 (y)es/(n)o/(q)uit: n 
 5 Install the CUDA 9.0 Toolkit? 
 6 (y)es/(n)o/(q)uit: y 
 7 Enter Toolkit Location 
 8 [ default is /usr/local/cuda-9.0 ]:  
 9 Do you want to install a symbolic link at /usr/local/cuda? 
10 (y)es/(n)o/(q)uit: y 
11 Install the CUDA 9.0 Samples? 
12 (y)es/(n)o/(q)uit: y 
13 Enter CUDA Samples Location 
14 [ default is /home/pertor ]:  
15 Installing the CUDA Toolkit in /usr/local/cuda-9.0 ... 
16 Missing recommended library: libXmu.so 

添加环境变量: 

sudo gedit ~/.bashrc

export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

source ~/.bashrc

验证CUDA9.0是否安装成功

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery

sudo make

./deviceQuery

输出如下信息表示成功安装

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce GT 740M"
  CUDA Driver Version / Runtime Version          8.0 / 8.0
  CUDA Capability Major/Minor version number:    3.5
  Total amount of global memory:                 2004 MBytes (2100953088 bytes)
  ( 2) Multiprocessors, (192) CUDA Cores/MP:     384 CUDA Cores
  GPU Max Clock rate:                            1032 MHz (1.03 GHz)
  Memory Clock rate:                             800 Mhz
  Memory Bus Width:                              64-bit
  L2 Cache Size:                                 524288 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
  Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers

第三步、安装NVIDIA cuDNN

登录官网下载cuDNN 

这个需要申请账号,注册后进入官网,如下图所示

  cuDNN 的全称是 The NVIDIA CUDA® Deep Neural Network library,是专门用来对深度学习加速的库,它支持 Caffe2, MATLAB, Microsoft Cognitive Toolkit, TensorFlow, Theano 及 PyTorch 等深度学习的加速优化,目前最新版本是 cuDNN 7.1,接下来我们来看下它的安装方式。