遇到 CUDA error: no kernel image is available for execution on the device 报错,核心原因是编译代码时指定的 CUDA 算力架构,和你当前 GPU 硬件的算力架构不匹配,GPU 里找不到可以运行的 kernel 二进制镜像,最直接的解决办法就是核对 GPU 算力架构,重新设置 TORCH_CUDA_ARCH_LIST 或者 nvcc 编译参数再编译。很多自定义 CUDA 算子、CUDA 扩展、第三方算子包在编译的时候,只会预先编译指定的算力版本,比如只编译 8.6、8.9,如果你拿算力 7.5、7.0 或者 9.0 的显卡去跑,就会直接报这个错误;也有可能是预编译包是在高算力卡上编译,没有包含低算力架构,或者本地 CUDA 版本、PyTorch 版本和算子编译环境不一致,就算架构号对上也会出现兼容问题;排查顺序优先先查本机 GPU 算力,再核对编译时的架构列表,缺失对应的架构就补上,重新编译 CUDA 扩展。
算力架构对照表
| GPU 系列 | 算力架构(arch) |
|---|---|
| RTX 20 系列(2060/2070/2080Ti) | 7.5 |
| T4 | 7.5 |
| RTX 30 系列(3060/3090) | 8.6 |
| A100 | 8.0 |
| RTX 40 系列 | 8.9 |
| H100 | 9.0 |
排查与重编译步骤清单
- 查看本机 GPU 算力,执行命令:
nvidia-smi
或者在 python 里查看:
import torch
print(torch.cuda.get_device_capability())
- 记录得到的算力号,例如 (8,6) 代表 8.6
- 查看算子编译脚本里的 TORCH_CUDA_ARCH_LIST,看是否包含该算力
- 如果缺失,设置环境变量再编译,示例:
export TORCH_CUDA_ARCH_LIST="8.6;8.9"
python setup.py install
- 编译完成后,重新 import、运行代码测试
- 仍报错:核对 CUDA 版本、PyTorch 版本是否和编译环境一致
其他次要诱因清单
- 预编译 wheel 包没有包含该 GPU 架构
- 算子编译时使用的 CUDA 版本和运行时驱动 CUDA 版本差距过大
- 多卡环境,其中一张卡架构不在编译列表内,代码自动分配到该卡
- 算子源码不支持新 / 老架构,需要修改 kernel 源码适配
【相关 FAQ】
问题 1:CUDA error: no kernel image is available for execution on the device,是不是 GPU 坏了?
回答 1:CUDA error: no kernel image is available for execution on the device 大多不是 GPU 硬件损坏,是编译架构和 GPU 架构不匹配,没有对应 kernel 镜像,需要核对 GPU 架构与编译架构。
问题 2:怎么快速确认 GPU 架构,用来解决 CUDA error: no kernel image is available for execution on the device?
回答 2:可以用 torch.cuda.get_device_capability () 或者 nvidia-smi 查询算力编号,拿到 GPU 架构后,核对 TORCH_CUDA_ARCH_LIST 里的编译架构是否包含它。
问题 3:已经设置 TORCH_CUDA_ARCH_LIST,重编译后还是报 CUDA error: no kernel image is available for execution on the device?
回答 3:设置 TORCH_CUDA_ARCH_LIST 后依旧报错,需要确认编译环境 CUDA、PyTorch 版本和运行环境一致,同时确认算子源码本身支持你核对到的 GPU 架构。
问题 4:能不能直接下载别人编译好的包,避免 CUDA error: no kernel image is available for execution on the device?
回答 4:直接下载别人预编译包容易踩坑,别人编译时选定的架构列表不一定包含你的 GPU 架构,最好自己核对 GPU 架构与编译架构,本地编译扩展。
【参考资料】
[2026-11-09](CUDA error: no kernel image is available for execution on the device GPU 架构不匹配排查)CSDN
[2026-11-09](TORCH_CUDA_ARCH_LIST 编译自定义 CUDA 扩展官方说明)PyTorch Docs
[2026-11-08](nvcc 算力架构编码、GPU 算力清单)NVIDIA Developer
【免责声明】
本内容针对 CUDA error: no kernel image is available for execution on the device 报错,提供核对 GPU 架构与编译架构的排查方案;不同算子源码、CUDA 版本、驱动版本、PyTorch 版本会带来额外兼容问题;部分老旧算子本身不支持新 GPU 架构,本文仅作为调试参考,不保证适配所有自定义 CUDA 算子。
本文来自作者[空域镜像]投稿,不代表乌兰科技网立场,如若转载,请注明出处:https://www.wlcbnews.com/rgzn/202611/577.html
评论列表(4条)
我是乌兰科技网的签约作者“空域镜像”!
希望本篇文章《CUDA error no kernel image is available for execution on the device 报错,核对 GPU 架构》能对你有所帮助!
本站[乌兰科技网]内容主要涵盖:互联网行业的追踪与探索
本文概览:遇到 CUDA error: no kernel image is available for execution on the device 报错,核心原因是编译代码时指定的 CUDA 算力架构,和你当前 GPU 硬件的算力架构不匹配,GPU 里找不到可以运行的 kernel 二进制镜像,最直接的解决办法就是核对 GPU 算力架构,重新设置 TORCH_CUDA_ARCH_LIST 或者 nvcc 编译参数再编译。很多自定义 CUDA 算子、CUDA 扩展、第三方算子包在编译的时候,只会预先编译指定的算力版本,比如只编译 8.6、8.9,如果你拿算力 7.5、7.0 或者 9.0 的显卡去跑,就会直接报这个错误;也有可能是预编译包是在高算力卡上编译,没有包含低算力架构,或者本地 CUDA 版本、PyTorch 版本和算子编译环境不一致,就算架构号对上也会出现兼容问题;排查顺序优先先查本机 GPU 算力,再核对编译时的架构列表,缺失对应的架构就补上,重新编译 CUDA 扩展。