一直沒有詳細的看Nvidia關於CUDA的官方文檔,做深度學習的可以稍微瞭解一下,做個記錄。
先給出顯卡版本和CUDA版本對應關係:
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
1. 什麼是CUDA?
CUDA(ComputeUnified Device Architecture計算統一設備架構),是顯卡廠商NVIDIA推出的運算平臺。 CUDA是一種由NVIDIA推出的通用並行計算架構,該架構使GPU能夠解決複雜的計算問題。
2. 什麼是cuDNN?
NVIDIA cuDNN是用於深度神經網絡的GPU加速庫。它強調性能、易用性和低內存開銷。NVIDIA cuDNN可以集成到更高級別的機器學習框架中,如谷歌的Tensorflow、加州大學伯克利分校的流行caffe軟件。簡單的插入式設計可以讓開發人員專注於設計和實現神經網絡模型,而不是簡單調整性能,同時還可以在GPU上實現高性能現代並行計算。
3. CUDA和cuDNN關係
我們將CUDA看作Nvidia官方提供的一個工具包,裏面包含各種各樣的工具,但是希望爲深度學習加速還不夠,cuDNN會幫助我們使用CUDA中的工具來針對深度學習的算法加速,cuDNN就是基於CUDA的深度學習GPU加速庫。並且cuDNN的安裝十分簡單,只要把cuDNN文件複製到CUDA的對應文件夾裏就可以,即是所謂插入式設計,把cuDNN數據庫添加CUDA裏,cuDNN是CUDA的擴展計算庫,沒有重疊的文件,複製不會對CUDA造成其他影響。
4. CUDA工具包的主要部件
Compiler編譯器:包含CUDA-C和CUDA-C++編譯器,nvcc可以在/bin中找到
Tools工具類:以下開發工具可在/bin中找到(除了作爲Microsoft Visual Studio插件安裝的Nsight Visual Studio Edition(VSE)之外,Nsight Compute和Nsight Systems在單獨的目錄中可用)。
- IDEs: nsight (Linux, Mac), Nsight VSE (Windows)
- Debuggers: cuda-memcheck, cuda-gdb (Linux), Nsight VSE (Windows)
- Profilers: Nsight Systems, Nsight Compute, nvprof, nvvp, Nsight VSE (Windows)
- Utilities: cuobjdump, nvdisasm
Libraries庫:以下列出的科學和實用程序庫在/lib(Windows上的位於/bin),接口在/include中。
- cublas (BLAS)
- cublas_device (BLAS Kernel Interface)
- cuda_occupancy (Kernel Occupancy Calculation [header file implementation])
- cudadevrt (CUDA Device Runtime)
- cudart (CUDA Runtime)
- cufft (Fast Fourier Transform [FFT])
- cupti (CUDA Profiling Tools Interface)
- curand (Random Number Generation)
- cusolver (Dense and Sparse Direct Linear Solvers and Eigen Solvers)
- cusparse (Sparse Matrix)
- libcu++ (CUDA Standard C++ Library)
- nvJPEG (JPEG encoding/decoding)
- npp (NVIDIA Performance Primitives [image and signal processing])
- nvblas ("Drop-in" BLAS)
- nvcuvid (CUDA Video Decoder [Windows, Linux])
- nvgraph (CUDA nvGRAPH [accelerated graph analytics])
- nvml (NVIDIA Management Library)
- nvrtc (CUDA Runtime Compilation)
- nvtx (NVIDIA Tools Extension)
- thrust (Parallel Algorithm Library [header file implementation])
CUDA Samples樣例庫:包含了一些基本可運行的樣例,可用來測試CUDA是否安裝成功。