... 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 가 들어 있었다. 이걸 없애니 일단 돌아간다.