LibTorch无法检测CUDA但CUDA Runtime正常的技术求助
LibTorch无法检测CUDA但CUDA Runtime与Python PyTorch正常工作的问题
环境信息
- 系统:Windows 11
- 编译器:MSVC 2022
- LibTorch版本:libtorch-win-shared-with-deps-2.4.0+cu124(Debug/Release版本均尝试)
- CUDA版本:nvcc V12.6.20(CUDA Toolkit 12.6)
- Python PyTorch状态:可正常识别并使用CUDA
测试代码
#include <cuda_runtime.h> #include <torch/torch.h> #include <iostream> int main() { std::cout << "CUDA device count: " << torch::cuda::device_count() << std::endl; std::cout << "CUDA is available: " << (torch::cuda::is_available() ? "Yes" : "No") << std::endl; std::cout << "cuDNN is available: " << (torch::cuda::cudnn_is_available() ? "Yes" : "No") << std::endl; int deviceCount; cudaGetDeviceCount(&deviceCount); std::cout << "Number of CUDA devices: " << deviceCount << std::endl; return 0; }
运行输出
CUDA device count: 0 CUDA is available: No cuDNN is available: No Number of CUDA devices: 1
解决方案
1. 匹配LibTorch与CUDA版本兼容性
你当前使用的LibTorch基于CUDA 12.4编译,但本地安装的是CUDA Toolkit 12.6,版本不匹配会导致LibTorch无法正确加载CUDA组件。解决方式:
- 下载对应CUDA 12.6版本的LibTorch包(官方包会明确标注适配的CUDA版本,如
libtorch-win-shared-with-deps-2.4.0+cu126.zip); - 或降级本地CUDA Toolkit到12.4版本,确保与LibTorch编译版本一致。
2. 修正环境变量配置
- 将LibTorch的
lib目录(如D:\libtorch\lib)添加到系统PATH环境变量,且优先级高于CUDA Toolkit的bin目录(如C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6\bin),避免系统加载错误的CUDA依赖库; - 重启终端和MSVC IDE,确保环境变量修改生效。
3. 检查编译配置
使用CMake构建项目时,确保以下配置正确:
- 指定正确的LibTorch路径,通过
CMAKE_PREFIX_PATH或find_package(Torch REQUIRED)自动查找; - 明确设置
CMAKE_CUDA_COMPILER为对应版本的nvcc路径,示例CMakeLists.txt:cmake_minimum_required(VERSION 3.18) project(LibTorchCUDA) set(CMAKE_PREFIX_PATH "D:/libtorch") find_package(Torch REQUIRED) set(CMAKE_CUDA_COMPILER "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.6/bin/nvcc.exe") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}") add_executable(LibTorchCUDA main.cpp) target_link_libraries(LibTorchCUDA "${TORCH_LIBRARIES}") set_property(TARGET LibTorchCUDA PROPERTY CXX_STANDARD 17) - 保持编译模式与LibTorch版本一致:Debug版LibTorch对应Debug编译配置,Release版对应Release配置,禁止混合使用。
4. 验证LibTorch库完整性
重新下载LibTorch压缩包,解压后检查lib目录下是否存在torch_cuda.dll、cudnn64_8.dll等CUDA相关动态库,若缺失则说明包损坏,需重新下载。
5. 更新GPU驱动
确保NVIDIA显卡驱动版本满足CUDA Toolkit要求:CUDA 12.6需要驱动版本≥551.61,前往NVIDIA官网下载并安装最新适配驱动。
内容的提问来源于stack exchange,提问作者yegor
相关产品推荐
相关产品推荐

