Ubuntu20.04下GraspNet复现流程中的问题

pytorch+cuda+cudnn的版本问题相对于GraspNet来说 至关重要!!!至关重要!!!至关重要!!!(重要的事情说三边)

我的显卡是3070

那么首先说结论
使用30系显卡,低于11.1版本的cuda编译时会出错

nvcc fatal : Unsupported gpu architecture 'compute_86'

之前安装的是 CUDA 11.0,而 compute_86(也就是 RTX 30 系列支持)从 CUDA 11.1 才开始支持,这正是我开始编译失败的原因。
而与之对应的GraspNet官方推荐的pytorch1.6.0,已经在新版本中使用安装命令都会有问题了,下载不下来。
那么现在知道pytorch+cuda+cudnn的版本太低不行,版本高呢?

pytorch版本高于1.9之后编译knn会报错fatal error: THC/THC.h: 没有那个文件或目录
此时我的版本为:

bash 复制代码
>>> import torch 

>>> print(torch.__version__) 

2.0.0+cu117 

>>> print(torch.cuda.is_available()) 

True 

>>> print(torch.version.cuda) 

11.7

THC/THC.h头文件基本已完全移除,任何试图包含 THC/THC.h 的项目都会编译失败。
甚至于从1.8 之后开始,THC 就已经开始被逐步剥离和隐藏。

这个THC/THC.h 是属于 PyTorch 的 旧版 C/C++ 扩展接口(legacy ATen/TH/THC)。

经过一整天对pytorch及cuda/cudnn当前各个版本的尝试之后发现:

安装版本如下可以完美避开版本老旧以及版本过新所造成的各种问题

如nvcc fatal: Unknown option '-generate-dependencies-with-compile'问题

point编译和knn编译时出现nvcc fatal : Unsupported gpu architecture 'compute_86' 问题

THC/THC.h头文件问题等。

bash 复制代码
>>> import torch
>>> print(torch.__version__)
1.8.0+cu111
>>> print(torch.cuda.is_available())
True
>>> torch.backends.cudnn.version()
8005
>>> print(torch.version.cuda)
11.1
>>> 

实际上对于上述每个问题的解决是有具体办法的,但是有的问题解决起来简单有的却不一定简单,如果可以保留源代码不作修改就能直接使用不失为一种更快捷的办法。

那么下面是安装每个版本的方法:

首先安装cuda和cudnn

cuda版本跟着驱动来我的驱动版本是535

即:

因为是安装特定版本的pytorch、cuda和cudnn我就不说按照官网给的版本匹配来选择了直接就是特定版本的cuda安装

cuda的版本为11.1

在https://developer.nvidia.com/cuda-toolkit-archive

中找到

按照如下步骤选择安装,找到安装命令

具体安装命令如下:

bash 复制代码
wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.runsudo 

sh cuda_11.1.1_455.32.00_linux.run

在安装过程中需要取消驱动的安装,这里我安装过了所以用的是别人的图,所以版本可能对不上。到下面的界面后在第一个出按enter取消勾选安装驱动,然后install回车即可开始安装。

随后配置bashrc

在最后面添加

bash 复制代码
export PATH=$PATH:/usr/local/cuda/bin  
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64  
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda/lib64

之后测试安装是否成功

bash 复制代码
source ~/.bashrc
nvcc -V

结果如下

安装cudnn

cuDNN Archive | NVIDIA Developer

下载后解压

bash 复制代码
tar -vxf ./cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz

复制文件

bash 复制代码
sudo cp cudnn-linux-x86_64-8.9.7.29_cuda11-archive/include/* /usr/local/cuda-11.1/include
sudo cp cudnn-linux-x86_64-8.9.7.29_cuda11-archive/lib/libcudnn* /usr/local/cuda-11.1/lib64

添加权限

bash 复制代码
sudo chmod a+r /usr/local/cuda-11.1/include/cudnn.h
sudo chmod a+r /usr/local/cuda-11.1/lib64/libcudnn*

测试安装

bash 复制代码
cat /usr/local/cuda-11.1/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

结果应该如下

安装pytorch

先安装anaconda,在

Download Now | Anaconda这里下载

下载之后

bash 复制代码
bash Anaconda3-2023.07-2-Linux-x86_64.sh

根据操作提示一直回车到yes即可

安装完成后激活一个conda环境,我这里给环境名字起得是torch,可以换成其他名字。

bash 复制代码
conda create -n torch python=3.8

激活对应环境

bash 复制代码
conda activate torch

退出conda环境

bash 复制代码
conda deactivate

移除conda环境

bash 复制代码
conda env remove -n torch

取消默认激活conda环境

bash 复制代码
conda config --set auto_activate_base false

安装pytorch 1.8.0(虽然是在conda环境中使用的安装命令,但是并不是安装到的conda环境中)

Previous PyTorch Versions | PyTorch

bash 复制代码
pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html

安装完成后使用命令查看是否安装成功

bash 复制代码
python
import torch
print(torch.__version__)
print(torch.cuda.is_available())
torch.version.cuda

之后在根据GraspNet官网的步骤一直走下来就可以

GitCode - 全球开发者的开源社区,开源代码托管平台

最后运行sh command_demo.sh即可查看

相关推荐
默|笙9 小时前
【Linux网络】网络层协议 IP(1)理解报头、网段划分
linux·网络·tcp/ip
修己xj11 小时前
nslookup 使用指南:两种模式与常用查询技巧
linux
用户9562562542912 小时前
跟做:Firecrawl 单页转 Markdown 再丢进沙箱总结
python·api
威哥爱编程13 小时前
模拟面试智能体开发实战 02:回答等半分钟,谁还愿意练?把服务端和流式输出搭起来
python·agent·harmonyos
秋饼13 小时前
MCP 2026-07-28 无状态协议大改版:Spring AI 2.1 多轮往返请求与网关路由落地
java·ai·技术分享·后端开发
威哥爱编程13 小时前
模拟面试智能体开发实战 01:面试挂了都不知道挂在哪?用 Python 给自己造一个随叫随到的 AI 面试官
python·agent·harmonyos
2601_9679801113 小时前
Python行情API量化 02:顺序拉 20 要 2 秒?并发批量把时间压到 0.5 秒
python·api·限流·并发·量化
伞伞悦读13 小时前
【第81期】特征缩放怎么选:标准化、MinMax 与 Robust 的原理、泄漏对照和完整实验
人工智能·python·深度学习·机器学习
唠玖馆13 小时前
文件系统详解
linux·文件系统·ext2
GeW13 小时前
当Linux内核开始“确定性”,制造高端化才有了底层语法
linux