因为不同编程语言比如Python/C/JAVA等要实现并行计算需要不同的代码,复用性不好。所以需要把并行计算部分单独分离出来,作为一个拓展程序包供不同的编程语言调用。CUDA应运而生。CUDA实现了对任务进行并行处理而不用根据不同的编程语言手动编写代码实现并行计算。
CUDA Toolkit下载链接为:
CUDA Toolkit下载链接
CUDA Toolkit包含了CUDA驱动和工具,CUDA驱动与NVIDIA驱动并不是一个东西,CUDA驱动接入NVIDIA驱动提供的接口访问GPU,同时接入程序,将运行结果输出。NVIDIA驱动接入GPU,对外提供能够访问GPU的接口。
对于Ubuntu和Debian系统来说,通过命令可以安装CUDA-Driver:
#sudo apt-get install cuda-drivers-
sudo apt-get install cuda-drivers-418
而CUDA Driver包含以下核心模块:
- nvidia.ko
- nvidia-modeset.ko
- nvidia-uvm.ko
- nvidia-drm.ko
- nvidia-peermem.ko
这些核心模块可以通过上面安装CUDA-Driver的命令一次性默认安装,也可以单独安装,单独安装的好处就是可以切换安装的版本,比如说在Ubuntu中把核心模块切换为开源版本而CUDA-Driver其他内容保持默认就可以通过以下指令:
sh cuda___linux.run -m=kernel-open
也可以分两步:
sudo apt-get install nvidia-kernel-open-520
sudo apt-get install cuda-drivers-520
通过预编译流(Precompiled Streams
)安装可以简化安装过程。
预编译流安装时会启动一个dnf插件,这个插件会删除旧版本的核心模块文件,同时可以对内核版本进行控制,使得内核和驱动是匹配的。
以预编译流模式安装CUDA-Driver的指令为:
#总是更新到最新版本的预编译的CUDA-Driver
sudo dnf module install nvidia-driver:latest
#安装特定版本的预编译的CUDA-Driver
sudo dnf module install nvidia-driver:
#安装最新版本的非预编译的CUDA-Driver(也就是默认安装时安装的版本)
sudo dnf module install nvidia-driver:latest-dkms
#安装特定版本的非预编译的CUDA-Driver
sudo dnf module install nvidia-driver:-dkms
在使用预编译流安装CUDA-Driver时,同样可以设置核心模块的安装来源:
通过添加文件说明的形式可以
运行文件就是标准安装器,比如在Debian 11 X86_64中的安装文件就是cuda_12.1.1_530.30.02_linux.run
,安装指令为:
wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run
sudo sh cuda_12.1.1_530.30.02_linux.run
通过这个.run
文件可以通过交互窗口的形式安装NVIDIA Driver
和CUDA Toolkit
。
对于某些特定版本的Linux
系统,比如Fedora、RHEL、OpenSUSE、Ubuntu、Debian等,可能需要先禁用系统已有的图形驱动程序然后才能安装NVIDIA Driver
和CUDA Toolkit
。参考Disabling Nouveau
此种方法只能安装CUDA-Toolkit
,不能安装NVIDIA-Driver
。安装指令为:
conda install cuda -c nvidia
如果主要是通过Python来使用CUDA的时候,可以不用在电脑的系统上安装CUDA-Toolkit,只要使用Pip来安装CUDA包就可以在Python环境下使用CUDA,此时在其他环境下比如JAVA/C等不能直接使用CUDA。
这个安装指令为:
#升级安装模块到最新版本
python3 -m pip install --upgrade setuptools pip wheel
#安装nvidia-pyindex使得可以安装其他NVIDIA模块
python3 -m pip install nvidia-pyindex
#安装必要的NVIDIA包
python3 -m pip install nvidia-cuda-runtime-cu12
#安装其他额外的包
python3 -m pip install nvidia-<library>
额外的包包括:
压缩文件库
下载压缩包以后再进行编译安装。
这个部分感觉是为了与Docker结合专门介绍的,跨平台与容器化天生就是相通的概念。推荐选择Ubuntu18.04作为容器的系统,安装指令为:
#安装模块仓库,其中使操作系统,架构和版本。
sudo dpkg -i cuda-repo-cross-_all.deb
#更新apt
sudo apt-get update
#安装跨平台CUDA工具包
##对于aarch64
sudo apt-get install cuda-cross-aarch64
##对于QNX
sudo apt-get install cuda-cross-qnx
#当在64位系统使用runfile安装CUDA-Toolkit时
export PATH=/usr/local/cuda-12.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
安装CUDA而不安装NVIDIA图形处理库:
#对于Fedora
sudo dnf install cuda-toolkit-12-0 nvidia-driver-cuda akmod-nvidia