Я пытаюсь использовать несколько графических процессоров с многопроцессорностью в Python3. Я могу запустить простой тестовый пример, как следующее:Возможные причины CUDA получить ошибку свойств устройства с помощью Python3/Theano?
import theano
import theano.tensor as T
import multiprocessing as mp
import time
# import lasagne
def target():
import theano.sandbox.cuda
print("target about to use")
theano.sandbox.cuda.use('gpu1')
print("target is using")
import lasagne
time.sleep(15)
print("target is exiting")
x = T.scalar('x', dtype='float32')
p = mp.Process(target=target)
p.start()
time.sleep(1)
import theano.sandbox.cuda
print("master about to use")
theano.sandbox.cuda.use('gpu0')
print("master is using")
import lasagne
time.sleep(4)
print("master will join")
p.join()
print("master is exiting")
Когда я запускаю это, я мастер и породил процесс каждый из которых использует GPU успешно:
>> target about to use
>> master about to use
>> Using gpu device 1: GeForce GTX 1080 (CNMeM is enabled with initial size: 50.0% of memory, cuDNN 5105)
>> target is using
>> Using gpu device 0: GeForce GTX 1080 (CNMeM is enabled with initial size: 50.0% of memory, cuDNN 5105)
>> master is using
>> master will join
>> target is exiting
>> master is exiting
Но в более сложных код базы, когда я пытаюсь установить ту же схему, то порождал работник терпит неудачу с:
ERROR (theano.sandbox.cuda): ERROR: Not using GPU. Initialisation of device 1 failed:
Unable to get properties of gpu 1: initialization error
ERROR (theano.sandbox.cuda): ERROR: Not using GPU. Initialisation of device gpu failed:
Not able to select available GPU from 2 cards (initialization error).
И я с трудом чеканка вниз, что вызывает это. В приведенном выше фрагменте кода проблема воссоздается, если lasagne
импортируется вверху, перед форкировкой. Но мне удалось запретить мой код импортировать lasagne
до тех пор, пока не разветвится и не попытается использовать графический процессор (я проверил sys.modules.keys()
), и все еще проблема сохраняется. Я не вижу ничего, что связывает Теано, кроме самого theano
и theano.tensor
, импортируемого перед форкингом, но в приведенном выше примере это прекрасно.
Кто-нибудь еще преследовал что-то подобное?
Что такое ОС хост-системы? –
Ubuntu 16.04, CUDA 8.0 и кратковременный Theano 0.9-dev4. –
Может быть, проблема с «кровотечением» может быть проблемой. Вы пробовали со стабильной версией? –