如何让 pycharm 使用不同的 cuda 工具包

How to make pycharm use a different cuda toolkit

我想在 GPU 中 运行 一个 MXNet module

我的系统安装了 Ubuntu 18.04 以及 Cuda 10.0。显然这还没有被 MXNet 二进制文件覆盖,所以我专注于 installing 2 cuda versions in my pc (see also here).

无论如何,我现在在我的电脑中的不同文件夹中有 2 个 cuda 工具包。当 运行 来自 PyCharm 时,我需要一种方法来指导我的系统使用 Cuda 9.2。有趣的是,从一个典型的控制台我可以 运行 它很好(当然至少是 MXNet 加载部分)。

在我想要的模块中运行程序卡在:

import mxnet as mx

这导致 MXNet 中的 base.py

def _load_lib():
    """Load library by searching possible path."""
    lib_path = libinfo.find_lib_path()
    lib = ctypes.CDLL(lib_path[0], ctypes.RTLD_LOCAL)  # <- This is where is throws the error.
    # DMatrix functions
    lib.MXGetLastError.restype = ctypes.c_char_p
    return lib

奇怪的是,lib_path[0]刚指向libmxnet.so的位置(顺便说一下,这是正确的),突然就报错了:

OSError: libcudart.so.9.2: cannot open shared object file: No such file or directory

即使我按照错误跟踪最后的命令是这样的:

self._handle = _dlopen(self._name, mode)

self._namelibmxnet.so 在同一位置。

我试图通过使用

更改系统变量来使其工作
os.environ["LD_LIBRARY_PATH"] = "/usr/local/cuda-9.2/lib64"

作为模块的第二行(第一行当然是 import os!)但这似乎不起作用。显然已经考虑到了。

那么,我该如何绕过这个呢? MXNet 端或 pyCharm 端的任何解决方案都是可以接受的。

好吧,为了让面临同样问题的任何人都能使用,我将 post 我的解决方案。

我设法通过在 运行 配置菜单中定义 pycharm 内的环境变量(可从 运行-> 运行...Alt+Shift+F10) 并将其定义为环境变量。

LD_LIBRARY_PATH: /usr/local/cuda-9.2/lib64

我不确定为什么在这种情况下 pycharm 工作正常,而当在代码中定义相同的变量时却没有(欢迎任何解释)。