【问题标题】:Runtime error using Python Library Keops using CUDA in Ubuntu18.04在 Ubuntu18.04 中使用 CUDA 使用 Python 库 Keops 的运行时错误
【发布时间】:2019-12-21 08:26:02
【问题描述】:

我正在尝试运行 Python 库中的示例:GeomLoss,它依赖于 Ubuntu 18.04.3 中的 CUDA、Pytorch 和 Keops。我使用 Anaconda 下载了 Python3.7,我使用的是 CUDA 10.1。 gcc 版本是 7.4.0。

当我从 GeomLoss 运行样本时,错误消息说:

RuntimeError: [KeOps] 此 KeOps 共享对象已编译 没有 cuda 支持:尝试将 tagHostDevice 设置为 0 或重新编译 带有工作版本的 cuda 的公式。

我无法将 tagHostDevice 更改为 0,因为这将根据他们的文档禁用 GPU 计算。我检查了 CUDA 和 Pytorch 安装,它们没有错误。 但是当我尝试从 KeOps 运行安装检查代码时:

import torch
import pykeops.torch as pktorch

x = torch.arange(1, 10, dtype=torch.float32).view(-1, 3)
y = torch.arange(3, 9, dtype=torch.float32).view(-1, 3)

my_conv = pktorch.Genred('SqNorm2(x-y)', ['x = Vi(3)', 'y = Vj(3)'])
print(my_conv(x, y)) 

我收到错误消息:

错误——不支持的 GNU 版本!不支持高于 6 的 gcc 版本! ^~~~~ CMake 错误在 keopslibKeOpstorch91c92bd508_generated_link_autodiff.cu.o.Release.cmake:219

我查看了 CUDA 文档,对于 Ubuntu 18.04.3,原生 linux 发行版支持应该是 gcc-7.3.0。对于 x86_64。我使用gcc --version 来检查系统中的默认gcc,它使用的是gcc-7.4.0。我不确定这是否是使用带有 CUDA 和 GPU 的 KeOps 的问题。另外,我相信 KeOps 不会支持 7 之前的 gcc 版本。所以我真的很困惑我现在应该如何解决这个问题。

我想知道是否有人遇到过 GeomLoss 和 KeOps 或其他库的类似问题。我真的很感激任何建议。谢谢!

【问题讨论】:

    标签: python ubuntu gcc pytorch


    【解决方案1】:

    我做了以下步骤,它对我有用:

    首先,通过检查这个link 中的依赖关系,我注意到nvcc 编译器没有安装。通过转到Nvidia Toolkit Installation Guide,我执行了以下步骤:

    wget https://developer.download.nvidia.com/compute/cuda/11.2.2/local_installers/cuda_11.2.2_460.32.03_linux.run
    sudo sh cuda_11.2.2_460.32.03_linux.run
    

    然后我意识到nvcc 命令不起作用,所以我确实将它们添加到路径中:

    nano ~/.bashrc
    
    # Add the following two lines: 
    export PATH="$PATH:/usr/local/cuda/bin"
    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
    

    一般来说,查看PyKeops的日志来检查进程是很重要的。因此,您可以随时更改 verbosedebug 模式并查看详细信息以检查失败的原因:

    # Testing PyKeops installation
    import pykeops
    
    # Changing verbose and mode
    pykeops.verbose = True
    pykeops.build_type = 'Debug'
    
    # Clean up the already compiled files
    pykeops.clean_pykeops()
    
    # Test Numpy integration
    pykeops.test_numpy_bindings()
    

    【讨论】:

    猜你喜欢
    • 2022-08-16
    • 2016-02-18
    • 2021-08-08
    • 2020-09-29
    • 2012-09-11
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    相关资源
    最近更新 更多