LoginSignup
0

More than 5 years have passed since last update.

TSUBAME2.5でtheano with cuDNN5

Posted at

theano 0.8以上でcuDNNを利用する場合、一部においてcuDNNv5以上が必須となります
ex) theano.tensor.nnet.bn.batch_normalization

ところがtsubame上のcuda7.5にinstallされているcuDNNはv4となっています。
この件についてgsicの方にお問い合わせしたところ、以下にCUDA7.5用cuDNN v5がinstallされているとのことです

/usr/apps.sp3/nosupport/gsic/cudnn/5.1-cuda7.5/cuda/

というわけでCUDA7.5を使いながらcuDNNv5の利用ができるっぽいのですが、pathの設定が問題です。cuDNNv5の方が優先されるようにPATHを通しても、TheanoはCUDA側を優先するようです。
探し回った結果、

Theano-0.9.0.dev2-py3.5.egg/theano/sandbox/cuda/__init__.py

# 350行目付近
class DnnVersion(GpuOp):                                                                                
    def c_compiler(self):                                                               
        return nvcc_compiler.NVCC_compiler                                                              

    def c_headers(self):                                                                                
        return ['cudnn.h']                                                                              

    def c_header_dirs(self):                                                                            
        return [config.dnn.include_path]                                                                

    def c_libraries(self):                                                                              
        return ['cudnn']                                                                                

    def c_lib_dirs(self):                                                                               
        return [config.dnn.library_path]                                                                

    def c_compile_args(self):                                                                           
        return ['-Wl,-rpath,' + config.dnn.library_path]

なるほどー。というわけで

.theanorc
[dnn]
include_path=/usr/apps.sp3/nosupport/gsic/cudnn/5.1-cuda7.5/cuda/include                                
library_path=/usr/apps.sp3/nosupport/gsic/cudnn/5.1-cuda7.5/cuda/lib64                                 
enabled=True
from keras.layers import Dense,Input,BatchNormalization
BatchNormalization()(Dense(32)(Input(shape=(32,))))

# Elemwise{switch,no_inplace}.0

めでたしめでたし

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0