关于Import pykeops时出现warnning No cuda detect

本文探讨了在Python库PyKeOps中遇到的CUDA找不到问题,通过查找并修复libcuda.so路径,提供了两种可能的解决方案:在libnames中添加特定版本或在LD_LIBRARY_PATH中设置。
摘要由CSDN通过智能技术生成

具体问题在pykeops.common.gpu_utils的函数get_gpu_number()

    libnames = ("libcuda.so", "libcuda.dylib", "cuda.dll")
    for libname in libnames:
        try:
            cuda = ctypes.CDLL(libname)
        except OSError:
            continue
        else:
            break
    else:
        print("[pyKeOps]: Warning, no cuda detected. Switching to cpu only.")
        return 0  # raise

    nGpus = ctypes.c_int()
    error_str = ctypes.c_char_p()

    result = cuda.cuInit(0)

ctypes.CDLL(libname)找不到libcuda.so,使用命令locate libcuda.so得到结果

/usr/lib/x86_64-linux-gnu/libcuda.so.1
/usr/lib/x86_64-linux-gnu/libcuda.so.450.51.06
/usr/lib/x86_64-linux-gnu/stubs/libcuda.so
/usr/local/cuda-10.1/doc/man/man7/libcuda.so.7
/usr/local/cuda-10.1/targets/x86_64-linux/lib/stubs/libcuda.so
/usr/local/cuda-10.2/doc/man/man7/libcuda.so.7
/usr/local/cuda-10.2/targets/x86_64-linux/lib/stubs/libcuda.so
/usr/local/cuda-11.0/doc/man/man7/libcuda.so.7
/usr/local/cuda-11.0/targets/x86_64-linux/lib/stubs/libcuda.so
/usr/local/cuda-9.0/doc/man/man7/libcuda.so.7
/usr/local/cuda-9.0/lib64/stubs/libcuda.so
/usr/share/man/man7/libcuda.so.7
/usr/share/man/man7/libcuda.so.7.gz

根据nvidia-smi显示驱动的版本是450.51.06所以正确的cuda应该是/usr/lib/x86_64-linux-gnu目录下的3项,那么修改的方法有两种:
1. 在libnames里添加libcuda.so.1

# libnames = ("libcuda.so", "libcuda.dylib", "cuda.dll")
libnames = ("libcuda.so.1", "libcuda.so", "libcuda.dylib", "cuda.dll")

2. 在LD_LIBRARY_PATH里添加/usr/lib/x86_64-linux-gnu/stubs

vim ~/.profile
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/stubs${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
:wq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值