theano.test(): сбой оптимизации из-за Constant_folding (в Ubuntu)

При запуске theano.test() в операционной системе Ubuntu выдается сообщение об ошибке сбоя оптимизации:

ERROR (theano.gof.opt): Optimization failure due to: constant_folding

ERROR (theano.gof.opt): TRACEBACK:

ERROR (theano.gof.opt): Traceback (most recent call last):

File "/usr/local/lib/python2.7/dist-packages/theano/gof/opt.py", line 1286, in process_node
replacements = lopt.transform(node)
File "/usr/local/lib/python2.7/dist-packages/theano/tensor/opt.py", line 3996, in constant_folding
no_recycling=[])

File "/usr/local/lib/python2.7/dist-packages/theano/sandbox/cuda/__init__.py", line 237, in make_thunk
compute_map, no_recycling)

File "/usr/local/lib/python2.7/dist-packages/theano/gof/op.py", line 606, in make_thunk
output_storage=node_output_storage)

File "/usr/local/lib/python2.7/dist-packages/theano/gof/cc.py", line 948, in make_thunk
keep_lock=keep_lock)

File "/usr/local/lib/python2.7/dist-packages/theano/gof/cc.py", line 891, in __compile__
keep_lock=keep_lock)

File "/usr/local/lib/python2.7/dist-packages/theano/gof/cc.py", line 1322, in cthunk_factory
key=key, fn=self.compile_cmodule_by_step, keep_lock=keep_lock)
File "/usr/local/lib/python2.7/dist-packages/theano/gof/cmodule.py", line 996, in module_from_key
module = next(compile_steps)

File "/usr/local/lib/python2.7/dist-packages/theano/gof/cc.py", line 1237, in compile_cmodule_by_step
preargs=preargs)

File "/usr/local/lib/python2.7/dist-packages/theano/sandbox/cuda/nvcc_compiler.py", line 444, in compile_str
return dlimport(lib_filename)

File "/usr/local/lib/python2.7/dist-packages/theano/gof/cmodule.py", line 284, in dlimport
rval = __import__(module_name, {}, {}, [module_name])

ImportError: ('/home/csz/.theano/compiledir_Linux-3.11.0-20-generic-x86_64-with-Ubuntu-12.04-precise-x86_64-2.7.3-64/tmpcF2It0/3ea6a99a1a8d1d8523de8d72c27b90f4.so: undefined symbol: _Z25CudaNdarray_CopyFromArrayP11CudaNdarrayP23tagPyArrayObject_fields', '[GpuFromHost(TensorConstant{0.0})]')

Кто-нибудь знает способ решить эту проблему или что именно происходит?


person csz-carrot    schedule 25.06.2014    source источник
comment
У меня тоже такая проблема на Windows 10 x64 на процессоре   -  person rilut    schedule 19.04.2016


Ответы (1)


Это может быть вызвано многими вещами. Ошибка связана с GPU. Итак, во-первых, убедитесь, что вы можете скомпилировать пример nvidia и что они работают нормально. Чтобы убедиться, что это не проблема.

Проблема в том, что Theano не может импортировать скомпилированный модуль GPU, потому что не нашел нужного ему символа. Этот отсутствующий символ «_Z25CudaNdarray_CopyFromArrayP11CudaNdarrayP23tagPyArrayObject_fields» находится в общей библиотеке, которую Theano уже предварительно скомпилировала.

Какая у вас ОС? Обязательно обновите Theano до последней разрабатываемой версии. Недавно было исправление (в понедельник, если мне не изменяет память), которое могло решить эту проблему на некоторых ОС.

person nouiz    schedule 25.06.2014
comment
Спасибо за ваш совет. Я могу скомпилировать образцы nvidia и обновить последнюю версию Theano, но в theano.test() все еще есть ошибки. Но я могу использовать GPU для запуска своих программ. Устройство ЦП также вызывает эту проблему: ImportError: ("Произошла следующая ошибка при компиляции узла", Dot22(Subtensor{int64:int64:}.0, W), '\n', '/home/csz/.theano /compiledir_Linux-3.11.0-20-generic-x86_64-with-Ubuntu-12.04-precise-x86_64-2.7.3-64/tmppzxNss/443217667310e7697fed0ce96e26ea6e.so: неопределенный символ: _gflotran_st_write_done', '[Dot22 матрица)›, Вт)]') - person csz-carrot; 26.06.2014
comment
Я нашел решение, используя флаг Theano «blas.ldflags=-lblas -lgfortran». Спасибо за помощь! - person csz-carrot; 26.06.2014
comment
У тебя было 2 проблемы. Первым в вопросах было про GPU. Кажется, обновление Theano исправило это. Здорово, что вы сами нашли решение второй проблемы с gfortran. - person nouiz; 26.06.2014