Компьютер зависает после запуска кода Numbapro CUDA

Может ли кто-нибудь объяснить мне, почему каждый раз, когда я запускаю этот код, мой компьютер зависает?

from numbapro import cuda
import numpy as np
from timeit import default_timer as time

n = 100
dtype = np.float32

@cuda.jit('void(float32[:,:], float32[:], float32[:])')
def cu_matrix_vector(A, b, c):
    y, x = cuda.grid(2)

    if x < n and y < n:
        c[y] = 0.0
        for i in range(n):
            c[y] += A[y, i] * b[i]


A = np.array(np.random.random((n, n)), dtype=dtype)
B = np.array(np.random.random((n, 1)), dtype=dtype)
C = np.empty_like(B)

blockDim = 32, 8
gridDim = (n + blockDim[0] - 1)/blockDim[0], (n + blockDim[1] - 1)/blockDim[1]

print 'blockDim = (%d,%d)' %blockDim

s = time()
stream = cuda.stream()
with stream.auto_synchronize():
    dA = cuda.to_device(A,stream)
    dB = cuda.to_device(B,stream)
    dC = cuda.to_device(C,stream)
    cu_matrix_vector[(bpg, bpg), (tpb, tpb),stream](dA, dB, dC)
    dC.to_host(stream)

e = time()
tcuda = e - s

print tcuda

После ввода кода мой компьютер зависает. Я не уверен, почему. Я ценю всю помощь заранее.


person kirikoumath    schedule 04.02.2014    source источник
comment
Возможно, вы захотите проверить свое оборудование. Правильно ли работают вентиляторы охлаждения графического процессора, процессора и блока питания?   -  person Roger Dahl    schedule 04.02.2014
comment
Полезным тестом было бы попробовать вашу программу на совершенно другой системе и посмотреть, не зависает ли она.   -  person Robert Crovella    schedule 04.02.2014


Ответы (1)


Массив B не должен быть двумерным массивом:

B = np.array(np.random.random((n, 1)), dtype=dtype)

Должно быть 1D:

B = np.array(np.random.random(n), dtype=dtype)

Что касается зависания, я предполагаю, что вы используете OSX. Драйвер CUDA должен возвращать код ошибки при ошибке запуска ядра, но в OSX кажется, что диспетчер отображения зависает.

person sklam    schedule 05.02.2014