2014-12-08 4 views
1

Я пытаюсь запустить следующую программу:Numbapro перестал работать на графическом процессоре

import numpy as np 
from timeit import default_timer as timer 
from numbapro import vectorize 


@vectorize(["float32(float32, float32)"], target='gpu') 
def VectorAdd(a,b): 
     return a + b 

def main(): 
     N = 32e6 

     A = np.ones(N, dtype=np.float32) 
     B = np.ones(N, dtype=np.float32) 
     C = np.zeros(N, dtype=np.float32) 


     start = timer() 
     C = VectorAdd(A, B, C) 
     vectoradd_time = timer() - start 

     print "C[:5] = " + str(C[:5]) 
     print "C[-5:] = " + str(C[-5:]) 

     print "VectorAdd took %f seconds" % vectoradd_time 


if __name__ == '__main__': 
     main() 

В первый раз я побежал он работал отлично. Но затем я попытался установить nvprof и некоторые дополнительные библиотеки и с тех пор я получаю следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "test.py", line 6, in <module> 
    @vectorize(["float32(float32, float32)"], target='gpu') 
    File "/home/matthias/anaconda/lib/python2.7/site-packages/numba/npyufunc/decorators.py", line 68, in wrap 
    vec.add(fty) 
    File "/opt/anaconda1anaconda2anaconda3/lib/python2.7/site-packages/numbapro/cudavec/vectorizers.py", line 78, in add 
    File "/home/matthias/anaconda/lib/python2.7/site-packages/numba/cuda/decorators.py", line 89, in kernel_jit 
    kernel.bind() 
    File "/home/matthias/anaconda/lib/python2.7/site-packages/numba/cuda/compiler.py", line 234, in bind 
    self._func.get() 
    File "/home/matthias/anaconda/lib/python2.7/site-packages/numba/cuda/compiler.py", line 181, in get 
    cuctx = get_context() 
    File "/home/matthias/anaconda/lib/python2.7/site-packages/numba/cuda/cudadrv/devices.py", line 126, in get_context 
    return _get_device(devnum=devnum).context 
    File "/home/matthias/anaconda/lib/python2.7/site-packages/numba/cuda/cudadrv/devices.py", line 118, in _get_device 
    _gpustack.push(get_gpu(devnum)) 
    File "/home/matthias/anaconda/lib/python2.7/site-packages/numba/cuda/cudadrv/devices.py", line 108, in get_gpu 
    return gpus[i] 
    File "/home/matthias/anaconda/lib/python2.7/site-packages/numba/cuda/cudadrv/devices.py", line 34, in __getitem__ 
    return self._gpus[item] 
    File "/home/matthias/anaconda/lib/python2.7/site-packages/numba/cuda/cudadrv/devices.py", line 23, in _gpus 
    self._tls.gpus = self._init_gpus() 
    File "/home/matthias/anaconda/lib/python2.7/site-packages/numba/cuda/cudadrv/devices.py", line 28, in _init_gpus 
    for num in range(driver.get_device_count()): 
    File "/home/matthias/anaconda/lib/python2.7/site-packages/numba/cuda/cudadrv/driver.py", line 256, in get_device_count 
    self.cuDeviceGetCount(byref(count)) 
    File "/home/matthias/anaconda/lib/python2.7/site-packages/numba/cuda/cudadrv/driver.py", line 201, in __getattr__ 
    self.initialize() 
    File "/home/matthias/anaconda/lib/python2.7/site-packages/numba/cuda/cudadrv/driver.py", line 182, in initialize 
    raise CudaSupportError("Error at driver init: \n%s:" % e) 
numba.cuda.cudadrv.error.CudaSupportError: Error at driver init: 
Call to cuInit results in CUDA_ERROR_NO_DEVICE: 

Удаление библиотеки не помогло.

+0

В верхней части трассировки стека, кажется, указывает, что как-то установка nvprof или те и другие библиотеки перепутались с драйвером CUDA, так как ваш устройство не обнаружено. Попробуйте переустановить его? –

ответ

1

Stein,

Я также испытал подобный вопрос на прошлой неделе. Я обновил среду Anaconda с 2,7 до 3,4, а мой код с использованием numbapro начал сбой с тем же «Call to cuInit» в CUDA_ERROR_NO_DEVICE.

Я не уверен, что мое обновление имеет ту же причину, что и ваша, но я упоминаю только что. (Я должен также упомянуть, что я на Ubuntu с использованием процессора ARM.)

Я загрузил установщик cuda_6.5.14_linux_aarch64_native.run, перезагрузился в командной строке Ubuntu и установил эти последние драйверы. После перезагрузки в X, я открываю IPython и запустите следующую успешно:

импорт numbapro numbapro.check_cuda()

Я надеюсь, что это может помочь.

0

Хотя это не связано с ошибкой, которую вы в настоящее время получаете, обратите внимание, что в вашем коде также есть ошибка в строке, которая вызывает VectorAdd.

У вас есть:

C = VectorAdd(A, B, C) 

Оно должно быть:

C = VectorAdd(A, B) 
Смежные вопросы