运行Trans-SVNet代码时遇CUDA内核镜像不可用错误求助
问题:执行Trans-SVNet代码时触发CUDA kernel不可用错误
我是集群和CUDA新手,在复现Trans-SVNet论文结果时,执行命令:
python generate_LFB.py --skip_train
出现以下错误:
RuntimeError: CUDA error: no kernel image is available for execution on the device
错误回溯信息
Traceback (most recent call last): File "generate_LFB.py", line 617, in <module> main() File "generate_LFB.py", line 613, in main (val_num_each, test_num_each)) File "generate_LFB.py", line 571, in train_model outputs_feature = model_LFB.forward(inputs).data.cpu().numpy() File "/path/miniconda3/envs/torch151/lib/python3.7/site-packages/torch/nn/parallel/data_parallel.py", line 153, in forward return self.module(*inputs[0], **kwargs[0]) File "/path/miniconda3/envs/torch151/lib/python3.7/site-packages/torch/nn/modules/module.py", line 550, in __call__ result = self.forward(*input, **kwargs) File "generate_LFB.py", line 241, in forward x = self.share.forward(x) File "/path/miniconda3/envs/torch151/lib/python3.7/site-packages/torch/nn/modules/container.py", line 100, in forward input = module(input) File "/path/miniconda3/envs/torch151/lib/python3.7/site-packages/torch/nn/modules/module.py", line 550, in __call__ result = self.forward(*input, **kwargs) File "/path/miniconda3/envs/torch151/lib/python3.7/site-packages/torch/nn/modules/activation.py", line 94, in forward return F.relu(input, inplace=self.inplace) File "/path/miniconda3/envs/torch151/lib/python3.7/site-packages/torch/nn/functional.py", line 1061, in relu result = torch.relu_(input) RuntimeError: CUDA error: no kernel image is available for execution on the device
环境信息
- 集群无CUDA Toolkit,执行
nvcc --version无输出 nvidia-smi输出:
+---------------------------------------------------------------------------------------+ | NVIDIA-SMI 530.30.02 Driver Version: 530.30.02 CUDA Version: 12.1 | |-----------------------------------------+----------------------+----------------------+---| | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 NVIDIA GeForce RTX 3060 On | 00000000:18:00.0 Off | N/A | | 31% 27C P8 18W / 170W| 1MiB / 12288MiB | 0% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | No running processes found | +---------------------------------------------------------------------------------------+
- PyTorch兼容性测试结果:
import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.backends.cudnn.enabled) device = torch.device('cuda') print(torch.cuda.get_device_properties(device)) print(torch.tensor([1.0, 2.0]).cuda())
输出:
1.5.1 True True _CudaDeviceProperties(name='NVIDIA GeForce RTX 3060', major=8, minor=6, total_memory=12044MB, multi_processor_count=28) tensor([1., 2.], device='cuda:0')
解决方案
这个错误的核心原因是你的PyTorch版本(1.5.1)不支持RTX 3060的CUDA架构(sm_86)。RTX 30系列属于安培架构,计算能力8.6,而PyTorch 1.5.1发布时还未适配该架构,导致预编译的CUDA kernel无法在你的GPU上运行。
解决步骤:
- 升级PyTorch到支持sm_86的版本:至少升级到PyTorch 1.7.0及以上版本,建议直接安装适配CUDA 11.x的新版本(如1.12.x或更高)。示例安装命令:
- Conda方式:
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia - Pip方式:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
- Conda方式:
- 验证新版本兼容性:安装完成后重新运行之前的测试代码,确认
torch.cuda.is_available()返回True,且能正常执行CUDA张量操作。 - 重新运行目标代码:激活新的Python环境后,再次执行
python generate_LFB.py --skip_train。
额外说明:
- 集群没有CUDA Toolkit不影响PyTorch运行,因为PyTorch自带预编译的CUDA runtime,只要版本匹配GPU架构即可。
- 其他人能正常运行,大概率是他们使用的PyTorch版本支持安培架构,或者使用的是旧架构GPU(如20系列及以下)。
内容的提问来源于stack exchange,提问作者WillWu
相关产品推荐
相关产品推荐

