我正在尝试将CUDA与numba结合使用。我刚刚从numba参考中得到了这个示例,我正在尝试运行它
from numba import cuda,jit, float32
@cuda.jit
def matmul(A, B, C):
"""Perform square matrix multiplication of C = A * B
"""
i, j = cuda.grid(2)
if i < C.shape[0] and j < C.shape[1]:
tmp = 0.
for k in range(A.shape[1]):
tmp += A[i, k] * B[k, j]
C[i, j] = tmp
现在我从此功能开始以这种方式对其进行测试:
a = np.arange(300).reshape(100,3).astype('float')
b = np.arange(-1000,-1000+300).reshape(100,3).astype('float')
c = np.zeros((len(a),len(b))).astype('float')
matmul(a,b,c)
所以我只声明2个数组和1个空数组。问题是,运行此命令后,c中唯一不为0的值为c [0,0]。我不明白这是怎么回事。有什么建议吗?谢谢