2017-05-13 96 views
1

問題是我無法導入theano。我知道還有其他幾個關於同一問題的問題,但他們都沒有爲我工作,通常他們要麼與舊版本或不同的操作系統。我一直在努力解決這個問題,現在我已經嘗試了所有可以找到的解決方法和技巧,所以我無法想出其他任何東西來嘗試,而不是在這裏問問。Theano無法導入pygpu/cudnn(macOS,CUDA 8)

如果我嘗試python3 -c "import theano"沒有sudo,我得到如下:

ERROR (theano.gpuarray): Could not initialize pygpu, support disabled 
Traceback (most recent call last): 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 164, in <module> 
    use(config.device) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 151, in use 
    init_dev(device) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 68, in init_dev 
    context.cudnn_handle = dnn._make_handle(context) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/dnn.py", line 86, in _make_handle 
    raise RuntimeError("error creating cudnn handle") 
RuntimeError: error creating cudnn handle 

使用sudo,我得到

ERROR (theano.gpuarray): Could not initialize pygpu, support disabled 
Traceback (most recent call last): 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 164, in <module> 
    use(config.device) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 151, in use 
    init_dev(device) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 66, in init_dev 
    avail = dnn.dnn_available(name) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/dnn.py", line 175, in dnn_available 
    if not dnn_present(): 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/dnn.py", line 158, in dnn_present 
    dnn_present.avail, dnn_present.msg = _dnn_check_version() 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/dnn.py", line 131, in _dnn_check_version 
    v = version() 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gpuarray/dnn.py", line 339, in version 
    profile=False) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/compile/function.py", line 326, in function 
    output_keys=output_keys) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/compile/pfunc.py", line 486, in pfunc 
    output_keys=output_keys) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/compile/function_module.py", line 1795, in orig_function 
    defaults) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/compile/function_module.py", line 1661, in create 
    input_storage=input_storage_lists, storage_map=storage_map) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/link.py", line 699, in make_thunk 
    storage_map=storage_map)[:3] 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/vm.py", line 1047, in make_all 
    impl=impl)) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/op.py", line 935, in make_thunk 
    no_recycling) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/op.py", line 839, in make_c_thunk 
    output_storage=node_output_storage) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/cc.py", line 1190, in make_thunk 
    keep_lock=keep_lock) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/cc.py", line 1131, in __compile__ 
    keep_lock=keep_lock) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/cc.py", line 1586, in cthunk_factory 
    key=key, lnk=self, keep_lock=keep_lock) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/cmodule.py", line 1159, in module_from_key 
    module = lnk.compile_cmodule(location) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/cc.py", line 1489, in compile_cmodule 
    preargs=preargs) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/cmodule.py", line 2325, in compile_str 
    return dlimport(lib_filename) 
    File "/Users/np/miniconda3/lib/python3.6/site-packages/theano/gof/cmodule.py", line 302, in dlimport 
    rval = __import__(module_name, {}, {}, [module_name]) 
ImportError: dlopen(/Users/np/.theano/compiledir_Darwin-16.5.0-x86_64-i386-64bit-i386-3.6.1-64/tmp3r02thlc/m3d1cf20adb1014f04986e6a344a55bde.so, 2): Library not loaded: @rpath/libcudnn.6.dylib 
    Referenced from: /Users/np/.theano/compiledir_Darwin-16.5.0-x86_64-i386-64bit-i386-3.6.1-64/tmp3r02thlc/m3d1cf20adb1014f04986e6a344a55bde.so 
    Reason: image not found 

我知道這是動態鏈接一個問題,但我想不出爲什麼它不工作。

我曾嘗試以下:

  • 禁用SIP
  • 重新安裝CUDA和cudnn大概在10倍,現在
    • cudnn文件是在這兩個/Developer/NVIDIA/CUDA-8.0/lib/usr/local/cuda/lib
  • 重新安裝了python,conda,theano,pygpu也是一個現在輪10倍
  • 從頭
  • 編譯libgpuarray
  • 重啓幾次,以確保它不是那麼
  • 執行的update_dyld_shared_cache,看它是否是一個緩存的問題
  • 試圖與install_name_tool鏈接libcudnn.6.dylib到pygpu的.so的,但什麼也沒做

下面是.zshrc我的路徑:

export CUDA_HOME=/usr/local/cuda 
export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:/usr/local/cuda/extras/CUPTI/lib 
export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH 
export PATH=$CUDA_HOME/bi:$DYLD_LIBRARY_PATH:$PATH 

.theanorc

[global] 
floatX = float32 
device = cuda 
force_device = True 
allow_gc = False 
optimizer_including=cudnn 

[cuda] 
root = /usr/local/cuda 

[dnn] 
enabled = True 
include_path=/usr/local/cuda/include 
library_path=/usr/local/cuda/lib 

版本號:

  • MACOS 10.12.4
  • CUDA 8.0和6.0 cudnn
  • 的Python 3.6.1
  • Theano 0.9.0
  • libgpuarray 0.6 .4
  • pygpu 0.6.4

回答

1

我終於能夠通過將libcudnn *文件移動到/usr/lib來解決這個問題。我完全不知道爲什麼pygpu無法使用/usr/local/cuda/lib。沒有sudo我仍然得到RuntimeError: error creating cudnn handle錯誤,但現在它至少與sudo一起工作。

雖然現在我正在與Segmentation fault: 11戰鬥,但我猜這是一個不同的問題。 Theano是絕對的...