1

次のプログラムを実行しようとしています。

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:

ライブラリをアンインストールしても解決しませんでした。

4

2 に答える 2

1

私も先週、同様の問題を経験しました。Anaconda 環境を 2.7 から 3.4 にアップグレードしたところ、numbapro を使用するコードが同じ「cuInit を呼び出すと CUDA_ERROR_NO_DEVICE が発生する」というエラーで失敗し始めました。

私のアップグレードがあなたのものと同じ原因であるかどうかはわかりませんが、念のため言及します。(ARMプロセッサを使用してUbuntuを使用していることにも言及する必要があります。)

cuda_6.5.14_linux_aarch64_native.run インストーラーをダウンロードし、Ubuntu コマンド ラインで再起動して、これらの最新ドライバーをインストールしました。X を再起動した後、iPython を開き、以下を正常に実行します。

import numbapro
numbapro.check_cuda()

これが役立つことを願っています。

于 2015-01-02T16:21:37.223 に答える
0

現在発生しているエラーとは関係ありませんが、VectorAdd を呼び出す行のコードにもエラーがあることに注意してください。

あなたが持っている:

C = VectorAdd(A, B, C)

そのはず:

C = VectorAdd(A, B)
于 2016-10-13T16:16:35.903 に答える