[CUDNN]nvcc fatal : Unsupported gpu architecture ‘compute_35‘ make: *** [Makefile:241: fp16_dev.o]

issue:

pi@pi:~/Downloads/cudnn_samples_v8/mnistCUDNN$ make clean && make
rm -rf *o
rm -rf mnistCUDNN
CUDA_VERSION is 12020
Linking agains cublasLt = true
CUDA VERSION: 12020
TARGET ARCH: x86_64
HOST_ARCH: x86_64
TARGET OS: linux
SMS: 35 50 53 60 61 62 70 72 75 80 86 87
/usr/local/cuda/bin/nvcc -I/usr/local/cuda/include -I/usr/local/cuda/include -IFreeImage/include -ccbin g++ -m64 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_53,code=sm_53 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_62,code=sm_62 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_72,code=sm_72 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_80,code=sm_80 -gencode arch=compute_86,code=sm_86 -gencode arch=compute_87,code=sm_87 -gencode arch=compute_87,code=compute_87 -o fp16_dev.o -c fp16_dev.cu
nvcc fatal   : Unsupported gpu architecture 'compute_35'
make: *** [Makefile:241: fp16_dev.o] Error 1

solution:
add filter -out 35

ifeq ($(GENCODE_FLAGS),)
# Generate SASS code for each SM architecture listed in $(SMS)
#$(foreach sm,$(SMS),$(eval GENCODE_FLAGS += -gencode arch=compute_$(sm),code=sm_$(sm)))
$(foreach sm,$(filter-out 35,$(SMS)),$(eval GENCODE_FLAGS += -gencode arch=compute_$(sm),code=sm_$(sm)))
<think>好的,用户需要关于如何编译PointNet2 Ops的教程或指南。首先,我应该回忆一下PointNet2的相关知识。PointNet2是PointNet的改进版,主要用于点云处理,而PointNet2 Ops包含了一些自定义的CUDA操作,比如最远点采样(FPS)和球查询(Ball Query),这些操作需要单独编译。 接下来,我需要整理编译步骤。通常,这类项目的编译需要确保环境有合适的CUDA版本、PyTorch版本,以及正确的依赖库。用户可能遇到的问题可能包括CUDA与PyTorch版本不兼容,或者缺少必要的头文件如THC.h。 然后,根据用户提供的引用,虽然引用中没有直接提到PointNet2,但可以借鉴类似的自定义操作编译方法。例如,引用5提到自定义操作用于日志或调试,这可能涉及CUDA代码的编译流程。此外,引用3提到了集群管理,虽然不相关,但引用4中的自定义训练循环可能暗示用户在使用自定义操作时需要整合到训练流程中。 用户可能需要详细的步骤,比如克隆仓库、安装依赖、设置环境变量、运行编译命令等。同时,常见问题如CUDA版本不匹配、权限问题、头文件缺失都需要提及解决方案。此外,测试编译是否成功的方法也很重要,比如运行示例代码或单元测试。 最后,生成的相关问题需要围绕用户可能的后续需求,比如整合到项目、处理多GPU训练、自定义操作开发等。这些能帮助用户进一步解决实际应用中的问题。</think>### 如何编译PointNet2 Ops的步骤指南 PointNet2中的自定义操作(如`Furthest Point Sampling`和`Ball Query`)需要编译CUDA扩展。以下是详细步骤: #### 1. 环境准备 - **CUDA工具包**:确保CUDA版本与PyTorch版本匹配(例如CUDA 11.x + PyTorch 1.9+) - **PyTorch源码**:安装时需包含头文件(通过`pip install torch`可能缺失,建议从源码编译或验证包含`THC`库) - **依赖项**:`ninja`编译工具和Python开发包 ```bash sudo apt-get install ninja-build python3-dev ``` #### 2. 克隆代码仓库 ```bash git clone https://github.com/charlesq34/pointnet2.git cd pointnet2/pointnet2_ops_lib ``` #### 3. 修改编译配置 - 检查`setup.py`中CUDA路径是否匹配本地环境: ```python extra_compile_args = {'cxx': ['-g'], 'nvcc': ['-O2']} include_dirs = [get_python_lib() + "/torch/include", "/usr/local/cuda/include"] ``` #### 4. 执行编译 ```bash python setup.py install ``` 若出现`THC/THC.h`缺失错误,需手动添加PyTorch头文件路径到`include_dirs`[^5]。 #### 5. 验证安装 ```python import torch from pointnet2_ops import pointnet2_utils print(pointnet2_utils.furthest_point_sample(torch.rand(1,1024,3), 512)) ``` #### 常见问题解决 | 问题现象 | 解决方案 | |---------|----------| | `nvcc fatal: Unsupported gpu architecture 'compute_86'` | 在`setup.py`中显式指定`-gencode arch=compute_61,code=sm_61`(根据GPU算力修改) | | `undefined symbol: _ZN3c104cuda20CUDACachingAllocator9allocatorE` | 确保PyTorch为CUDA版本且与编译环境一致 | | 权限拒绝 | 添加`--user`参数或使用虚拟环境 | ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

「已注销」

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

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

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

打赏作者

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

抵扣说明:

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

余额充值