Я пытаюсь запустить keras / theano с помощью графического процессора на ноутбуке Jupyter, моя система Mac High High Sierra 10.13 с NVIDIA GeForce GT 330M.
Я следовал инструкциям на этом сайте : я установил cuda и cudnn, затем отредактировал ~/.bash_profile
.Я не могу использовать эту команду $ THEANO_FLAGS=mode=FAST_RUN python imdb_cnn.py
, так как я использую ноутбук Jupyter.Более того, я также отредактировал .theanorc файл, и он выглядит так:
[global]
floatX = float32
device = gpu
force_device = True
optimizer_including=cudnn
[nvcc]
fastmath = True
[cuda]
root=Users/secarbone/cuda
Затем я попытался запустить этот код, чтобы проверить, использовал ли я Gpu:
from theano import function, config, shared, tensor
import numpy
import time
vlen = 10 * 30 * 768 # 10 x #cores x # threads per core
iters = 1000
rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], tensor.exp(x))
print(f.maker.fgraph.toposort())
t0 = time.time()
for i in range(iters):
r = f()
t1 = time.time()
print("Looping %d times took %f seconds" % (iters, t1 - t0))
print("Result is %s" % (r,))
if numpy.any([isinstance(x.op, tensor.Elemwise) and
('Gpu' not in type(x.op).__name__)
for x in f.maker.fgraph.toposort()]):
print('Used the cpu')
else:
print('Used the gpu')
... и вместо этого я использовал процессор!
Что я должен поставить поверх этого кода, чтобы использовать GPU?Я также пытался поставить это:
import os
os.environ['THEANO_FLAGS'] = "device=cuda,force_device=True,floatX=float32"
, но это не сработало, потому что я всегда получаю этот вывод:
[Elemwise{exp,no_inplace}(<TensorType(float32, vector)>)] Looping 1000
times took 2.618842 seconds Result is [1.2317803 1.6187934 1.5227807
... 2.2077181 2.2996776 1.6232328]
Used the cpu
РЕДАКТИРОВАТЬ : Я пытаюсь запустить предыдущий «тестовый» код на терминале, используя THEANO_FLAGS=mode=FAST_RUN,device=cuda0,floatX=float32 python gpuocpu.py
Я получаю эту ошибку:
ERROR (theano.gpuarray): Could not initialize pygpu, support disabled
Traceback (most recent call last):
File "/Users/secarbone/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 227, in <module>
use(config.device)
File "/Users/secarbone/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 214, in use
init_dev(device, preallocate=preallocate)
File "/Users/secarbone/miniconda3/lib/python3.6/site-packages/theano/gpuarray/__init__.py", line 99, in init_dev
**args)
File "pygpu/gpuarray.pyx", line 658, in pygpu.gpuarray.init
File "pygpu/gpuarray.pyx", line 587, in pygpu.gpuarray.pygpu_init
Я нашел этот поток , и я запускаюэто на терминале: set DEVICE=cuda0
и set GPUARRAY_CUDA_VERSION=80
, но я все еще получаю ту же ошибку плюс вывод, говорящий, что я использую процессор.
EDIT2 : Я переустановил Cuda (используя файл .dmg, а не из терминала), я следовал Руководство по установке Invidia и применил следующие советы:
- Снимите флажок Системные настройки>Экономия энергии> Автоматический графический переключатель
- Перетащите спящий бар компьютера в Никогда в Системных настройках> Экономия энергии
Теперь я получаю эту новую ошибку: Segmentation fault: 11
>>> import pygpu
>>> pygpu.test()
pygpu is installed in /Users/secarbone/miniconda3/lib/python3.6/site-packages/pygpu
NumPy version 1.15.4
NumPy relaxed strides checking option: True
NumPy is installed in /Users/secarbone/miniconda3/lib/python3.6/site-packages/numpy
Python version 3.6.7 |Anaconda, Inc.| (default, Oct 23 2018, 14:01:38) [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]
nose version 1.3.7
Segmentation fault: 11