2014-02-04 4 views
1

Может кто-нибудь объяснить мне, почему каждый раз, когда я запускаю этот код, мой компьютер замерзает?Компьютер зависает после запуска 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 

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

+0

Возможно, вы захотите проверить свое оборудование. Правильно ли работают вентиляторы охлаждения процессора, процессора и источника питания? –

+0

Полезным тестом было бы попробовать вашу программу в совершенно другой системе и посмотреть, не замораживается ли она. –

ответ

2

массив B не должно быть 2D массив:

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

Это должно быть 1D:

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

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

Смежные вопросы