Unix/Arch Linux

CUDNN + gcc 6.1 :(

ForceCore 2016. 5. 19. 19:31

... GCC가 업데이트 되면서 NVCC와 호환이 안 맞게 되었다. 으아아

Arch Linux의 단점이 드러나는 부분이다. 너무 최신이라 문제가 가끔씩 된다.


but... 나는 시스템 패키지를 건드는 것에 대한 두려움은 없다. ㅋㅋ

/usr/lib/python3.5/site-packages/theano/sandbox/cuda/__init__.py

여기에서 nvcc에 들어가는 parameter들이 결정된다.


https://github.com/Theano/Theano/issues/4514

내가 써야 하는 flag는 이거구만.~


-std=c++11 -Xcompiler -D__CORRECT_ISO_CPP11_MATH_H_PROTO


~/.theanorc

[global]
device = gpu
floatx = float32

[nvcc]
flags=-std=c++11 -D__CORRECT_ISO_CPP11_MATH_H_PROTO


[cuda]
root = /opt/cuda



$ sudo vi /usr/lib/python3.5/site-packages/theano/sandbox/cuda/__init__.py


                    compiler = nvcc_compiler.NVCC_compiler()
                    preargs = ['-O3'] + compiler.compile_args()

                    #gcc 6.1 fix...
                    preargs = ['-std=c++11', '-D__CORRECT_ISO_CPP11_MATH_H_PROTO'] \
                        + compiler.compile_args()

                    compiler.compile_str(
                            'cuda_ndarray',
                            code,
                            location=cuda_ndarray_loc,
                            include_dirs=[cuda_path],
                            libs=[config.cublas.lib],
                            preargs=preargs,
                    )

... 여기 적절하게 넣어봤다. 돌려봤더니 이번엔 Keras가 말썽이다.


ImportError: cannot import name '_on_gpu'


이렇네 -_-;;;;;;;;


라고 생각했는데, 라이브러리 부분은 문제 없고, 내가 다운받은 코드 안에 _on_gpu 가 들어 있었다. 이걸 없애니 일단 돌아간다.