Linux下如何设置CUDA的路径

今天遇到一个关于CUDA的问题,我要跑的深度学习代码,他里面有cuda编程,需要编译。但是你运行就报错。

代码提示我大段报错。

(score-denoise) ubuntu@GPUA10002:~/wbd/score-denoise_Transformerdepth20$ python train.py 
Detected CUDA files, patching ldflags
Emitting ninja build file /home/ubuntu/wbd/score-denoise_Transformerdepth20/utils/cutils/build/build.ninja...
Building extension module cutils_...
Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
[1/3] /usr/bin/nvcc  -DTORCH_EXTENSION_NAME=cutils_ -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include/torch/csrc/api/include -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include/TH -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include/THC -isystem /data/miniconda3/envs/score-denoise/include/python3.8 -D_GLIBCXX_USE_CXX11_ABI=0 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_80,code=compute_80 -gencode=arch=compute_80,code=sm_80 --compiler-options '-fPIC' -Xptxas -v --generate-code=arch=compute_80,code=sm_80 -std=c++14 -c /home/ubuntu/wbd/score-denoise_Transformerdepth20/utils/cutils/srcs/half_aligned_knn_sub_maxpooling.cu -o half_aligned_knn_sub_maxpooling.cuda.o 
FAILED: half_aligned_knn_sub_maxpooling.cuda.o 
/usr/bin/nvcc  -DTORCH_EXTENSION_NAME=cutils_ -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include/torch/csrc/api/include -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include/TH -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include/THC -isystem /data/miniconda3/envs/score-denoise/include/python3.8 -D_GLIBCXX_USE_CXX11_ABI=0 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_80,code=compute_80 -gencode=arch=compute_80,code=sm_80 --compiler-options '-fPIC' -Xptxas -v --generate-code=arch=compute_80,code=sm_80 -std=c++14 -c /home/ubuntu/wbd/score-denoise_Transformerdepth20/utils/cutils/srcs/half_aligned_knn_sub_maxpooling.cu -o half_aligned_knn_sub_maxpooling.cuda.o 
nvcc fatal   : Unsupported gpu architecture 'compute_80'
[2/3] /usr/bin/nvcc  -DTORCH_EXTENSION_NAME=cutils_ -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include/torch/csrc/api/include -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include/TH -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include/THC -isystem /data/miniconda3/envs/score-denoise/include/python3.8 -D_GLIBCXX_USE_CXX11_ABI=0 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_80,code=compute_80 -gencode=arch=compute_80,code=sm_80 --compiler-options '-fPIC' -Xptxas -v --generate-code=arch=compute_80,code=sm_80 -std=c++14 -c /home/ubuntu/wbd/score-denoise_Transformerdepth20/utils/cutils/srcs/aligned_knn_sub_maxpooling.cu -o aligned_knn_sub_maxpooling.cuda.o 
FAILED: aligned_knn_sub_maxpooling.cuda.o 
/usr/bin/nvcc  -DTORCH_EXTENSION_NAME=cutils_ -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include/torch/csrc/api/include -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include/TH -isystem /data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/include/THC -isystem /data/miniconda3/envs/score-denoise/include/python3.8 -D_GLIBCXX_USE_CXX11_ABI=0 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_80,code=compute_80 -gencode=arch=compute_80,code=sm_80 --compiler-options '-fPIC' -Xptxas -v --generate-code=arch=compute_80,code=sm_80 -std=c++14 -c /home/ubuntu/wbd/score-denoise_Transformerdepth20/utils/cutils/srcs/aligned_knn_sub_maxpooling.cu -o aligned_knn_sub_maxpooling.cuda.o 
nvcc fatal   : Unsupported gpu architecture 'compute_80'
ninja: build stopped: subcommand failed.
Traceback (most recent call last):
  File "/data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 1666, in _run_ninja_build
    subprocess.run(
  File "/data/miniconda3/envs/score-denoise/lib/python3.8/subprocess.py", line 516, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "train.py", line 13, in <module>
    from models.denoise import *
  File "/home/ubuntu/wbd/score-denoise_Transformerdepth20/models/denoise.py", line 7, in <module>
    from .feature import FeatureExtractionWithResLFE
  File "/home/ubuntu/wbd/score-denoise_Transformerdepth20/models/feature.py", line 6, in <module>
    from .ResLFE_block import ResLFE_Block
  File "/home/ubuntu/wbd/score-denoise_Transformerdepth20/models/ResLFE_block.py", line 8, in <module>
    from utils.cutils import knn_edge_maxpooling
  File "/home/ubuntu/wbd/score-denoise_Transformerdepth20/utils/cutils/__init__.py", line 14, in <module>
    cutils = load("cutils_", sources=sources, extra_cflags=["-O3", "-mavx2", "-funroll-loops"], extra_cuda_cflags=["-Xptxas","-v",  "--generate-code=arch=compute_80,code=sm_80"],
  File "/data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 1080, in load
    return _jit_compile(
  File "/data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 1293, in _jit_compile
    _write_ninja_file_and_build_library(
  File "/data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 1405, in _write_ninja_file_and_build_library
    _run_ninja_build(
  File "/data/miniconda3/envs/score-denoise/lib/python3.8/site-packages/torch/utils/cpp_extension.py", line 1682, in _run_ninja_build
    raise RuntimeError(message) from e
RuntimeError: Error building extension 'cutils_'

然后你问ai,ai给你的建议是查看nvcc版本

nvcc --version

然后你发现,没有这个,然后会提示你

sudo apt install nvidia-cuda-toolkit

然后你又去安装,安装好后查看了一下

(base) ubuntu@GPUA10002:~/wbd/score-denoise_Transformerdepth20$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85

发现这是很老的版本

新版本的这样的提示

(score-denoise) wu@wu:~/code/pointDenoise/score-denoise_Transformerdepth20$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Tue_Feb_27_16:19:38_PST_2024
Cuda compilation tools, release 12.4, V12.4.99

然后老版本的,我就编译不通过。

然后我就一直在查找相关问题,一直在想,没安装nvcc前,别人也能够跑深度学习,然后感觉很奇怪。

然后我后面把这个卸载了

sudo apt remove nvidia-cuda-toolkit

这个是可以卸载的,大家放心。

然后就报错CUDA路径的问题
在这里插入图片描述然后我就去~/.bashrc

在这里插入图片描述发现里面是有这个路径的,然后我就试着在终端输入

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

还是不行。

然后我就没辙了。

最后的最后,我进入/usr/local查看,发现他下载的是cuda-12.0,不是12.1

在这里插入图片描述

然后我就在我要跑的代码终端,输入下面两个命令,然后执行跑代码,就能够编译通过了。

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

我也不知道为啥,~/.bashrc里面为啥不是cuda-12.1,所以我也没有把他里面改成12.1,就按照原来的吧,以后要跑,直接先输入这两行命令,然后执行代码,当然,如果你不要编译,你直接运行是没有关系的。

这个问题,浪费了我一下午的时间,如果你也有相关问题,一定要注意,去看看/usr/local/到底是多少版本的cuda。

### 设置PyCUDACUDA路径 为了确保PyCUDA能够正确识别并使用已安装的CUDA工具包,在某些环境中可能需要手动配置CUDA路径。通常情况下,如果CUDA已经正确安装,则无需额外设置环境变量;然而,在特定场景下(例如多版本共存或非标准安装位置),适当调整这些环境变量是必要的。 #### 方法一:通过环境变量设定 可以通过修改系统的`PATH`以及`LD_LIBRARY_PATH`来指定CUDA库的位置: - **Windows** 对于Windows操作系统而言,应当更新系统环境中的`Path`变量以包含CUDA bin目录,并且可以考虑添加如下命令至批处理脚本中以便于每次启动开发环境前执行: ```batch set PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin;%PATH% set CUDA_HOME=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1 ``` 上述操作会使得当前shell session下的程序能够找到所需的CUDA运行时文件[^3]。 - **Linux/macOS** 而在类Unix系统上,推荐的做法是在用户的`.bashrc`或其他相应的shell初始化文件里追加类似的导出语句: ```sh export PATH=/usr/local/cuda-12.1/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} export CUDA_HOME=/usr/local/cuda-12.1 ``` 这一步骤同样适用于其他类型的shell,只需按照对应语法稍作改动即可[^1]。 #### 方法二:利用Python代码动态加载 除了依赖外部环境外,还可以尝试直接在Python代码内部完成这一过程,特别是在构建自动化部署流程或是容器化应用的时候尤为有用。这里给出一段简单的示范代码片段用于临时改变进程级别的环境变量: ```python import os os.environ['PATH'] += os.pathsep + '/usr/local/cuda-12.1/bin' os.environ['LD_LIBRARY_PATH'] = '/usr/local/cuda-12.1/lib64:' + (os.getenv('LD_LIBRARY_PATH') or '') os.environ['CUDA_HOME'] = '/usr/local/cuda-12.1' print(f"CUDA_HOME is now set to {os.environ.get('CUDA_HOME')}") ``` 这段代码可以在任何Python应用程序开始之前被执行,从而保证后续调用PyCUDA API时能顺利定位到正确的CUDA资源[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

knighthood2001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值