nvcc: command not found
nvcc命令是 NVIDIA CUDA 编译器,就类似于gcc是c语言的编译器,用于编译 CUDA 代码并生成 GPU 可执行文件。由于程序是要经过编译器编程成可执行的二进制文件,而cuda程序有两种代码,一种是运行在CPU上的host代码,一种是运行在GPU上的device代码,所以nvcc编译器要保证两部分代码能够编译成二进制文件在不同的机器上执行。nvcc涉及到的文件后缀及相关意义如下表:
文件后缀 | 意义 |
---|---|
.cu | cuda源文件,包括host和device代码 |
.cup | 经过预处理的cuda源文件,编译选项–preprocess/-E |
.c | c源文件 |
.cc/.cxx/.cpp | c++源文件 |
.gpu | gpu中间文件,编译选项–gpu |
.ptx | 类似汇编代码,编译选项–ptx |
.o/.obj | 目标文件,编译选项–compile/-c |
.a/.lib | 库文件,编译选项–lib/-lib |
.res | 资源文件 |
.so | 共享目标文件,编译选项–shared/-shared |
.cubin | cuda的二进制文件,编译选项-cubin |
相关资料和表格来源:显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么?
我们给Jetson Nano装的是NVIDIA官方提供的系统镜像,已经提前在系统里安装好了CUDA,我们可以运行jtop工具里查看到。
但是我们在终端命令行输入nvcc -V
却显示未找到命令。
如果已经安装了 NVIDIA CUDA 工具包,但无法找到nvcc命令,可能是因为其路径未包含在系统环境变量中。
可以输入下方命令查看本地是否已安装CUDA(我们通过上方jtop工具,已经可以确定已经安装过CUDA了,这里是演示通过命令行查看CUDA安装位置)。
cd /usr/local
ls
可以看到,我们确实已经安装好了CUDA,那么接下来就是把CUDA Toolkit路径写入系统环境变量中。
通过vim工具定位到 ~/.bashrc
的最末尾,然后添加命令。
vim ~/.bashrc
# 定位到内容末尾,最末尾
# 按"i"添加命令:
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# 添加完成后按"ESC"退出编辑界面,输入":wq"退出
vim 编辑界面:
添加完路径后需要再刷新一下配置文件,然后验证nvcc.
# 添加后刷新配置文件
source ~/.bashrc
# 再验证nvcc
nvcc -V
已经可以查看当前系统上的 CUDA 工具包版本和nvcc版本。