本地部署后,调试解析接口/file_parse从pdf提取异常,Unexpected error from cudaGetDeviceCount(). Did you run some cuda functions before calling NumCudaDevices() that might have already set an error? Error 804: forward compatibility was attempted on non supported HW #5122
Replies: 1 comment 1 reply
-
|
这个报错核心是: 你的程序/镜像里的 CUDA 运行时比宿主机 NVIDIA 驱动能支持的 CUDA 版本更新,于是 CUDA 尝试走 forward compatibility,但当前显卡/环境不支持这种 forward compatibility。 官方文档里 804 对应的是: CUDA_ERROR_COMPAT_NOT_SUPPORTED_ON_DEVICE = 804:系统尝试用 forward compatibility 运行,但 CUDA 检测到的可见硬件不支持该配置。 而 NVIDIA 也明确说 forward compatibility 主要只适用于 NVIDIA Data Center GPUs、部分 NGC Server Ready RTX SKU、Jetson,不是普通 GeForce 都能用。 结合你之前的环境,如果你是 RTX 4090 + 驱动只支持到 CUDA 12.8,但跑了 CUDA 12.9 / CUDA 13 / vLLM 0.21.0 CUDA13 镜像或 wheel,就很容易触发这个错误。 常见触发场景 比如: 宿主机驱动:最高支持 CUDA 12.8 或者容器里 LD_LIBRARY_PATH 指到了: /usr/local/cuda-13.x/compat 导致加载了 forward compatibility 的 libcuda.so,但你的 GPU/驱动组合不支持。 解决方式 优先选一种: 方案 1:换成和宿主机驱动兼容的 CUDA 镜像/包 如果宿主机 nvidia-smi 显示最高 CUDA 12.8,就不要用 CUDA 13 镜像。比如 vLLM 场景下,改用 cu128 / cu129 以内且驱动能支持的版本,而不是 CUDA13 镜像。 你之前提到的情况更建议: FROM vllm/vllm-openai:v0.21.0-cu129 而不是: FROM vllm/vllm-openai:v0.21.0 如果驱动连 12.9 都不支持,就需要继续降到 CUDA 12.8 对应镜像/版本。 方案 2:升级宿主机 NVIDIA 驱动 如果一定要跑 CUDA 13 环境,需要把宿主机驱动升级到支持 CUDA 13 的分支。NVIDIA 兼容性表里 CUDA 13.0 对应的是 580+ 驱动分支,13.1 对应 590+,13.2 对应 595+,13.3 对应 610+。 注意:Docker 里装新 CUDA 不等于升级驱动,真正决定上限的是宿主机驱动。 方案 3:清掉错误的 compat 路径 检查容器里: echo $LD_LIBRARY_PATH | tr ':' '\n' | grep compat 如果看到类似: /usr/local/cuda-13.0/compat 可以先去掉: export LD_LIBRARY_PATH=$(echo "$LD_LIBRARY_PATH" | tr ':' '\n' | grep -v '/compat' | paste -sd:) 然后重启 Python 进程再试。CUDA 错误有时会在当前进程里保持“脏状态”,所以最好直接重启服务/容器。 建议你先跑这几个命令定位 宿主机: nvidia-smi 容器内: nvidia-smi 判断规则很简单: torch.version.cuda / 镜像 CUDA 版本 > nvidia-smi 显示的 CUDA Version 所以这不是模型问题,也不是 NumCudaDevices() 本身的问题,根因基本是 驱动版本、CUDA 版本、容器镜像版本不匹配。 |
Beta Was this translation helpful? Give feedback.


Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
本地部署后,调试解析接口/file_parse从pdf提取异常,Unexpected error from cudaGetDeviceCount(). Did you run some cuda functions before calling NumCudaDevices() that might have already set an error? Error 804: forward compatibility was attempted on non supported HW
服务器信息:
系统:Kylin Linux Desktop V10 SP1
显卡:NVIDIA GeForce RTX 4090
显卡驱动:Driver Version: 570.172.08 CUDA Version: 12.8
cpu: Intel(R) Core(TM) i9-14900K
这是什么原因,求解答
Beta Was this translation helpful? Give feedback.
All reactions