python - cuBLAS Dgemm 产品与 python

标签 python matrix cuda pycuda cublas

我有 2 个简单矩阵 AB,我正在计算它们的乘法。 数组看起来像这样(使用 numpy 作为模型)

A=np.array(([1,2,3],[4,5,6])).astype(np.float64)
B=np.array(([7,8],[9,10],[11,12])).astype(np.float64)

这是矩阵的形状

A: (2, 3)

B: (3, 2)

现在,我尝试使用 cublasDgemmBatched 来做到这一点获取产品。

我对应用 cublasDgemmBatched 时的 m、nk 值感到困惑。 另外,我不确定数组的主维(ldaldbldc)是多少。

有一个nice 3d example在这里,但我似乎无法让这个函数在二维矩阵上工作。

理想情况下,我希望得到与 np.dot 相同的结果.

最佳答案

我没有 skcuda.blas 来确认这一点。但更完整的示例可能如下所示

A = np.array(([1, 2, 3], [4, 5, 6])).astype(np.float64)
B = np.array(([7, 8], [9, 10], [11, 12])).astype(np.float64)

m, k = A.shape
k, n = B.shape

a_gpu = gpuarray.to_gpu(A)
b_gpu = gpuarray.to_gpu(B)
c_gpu = gpuarray.empty((m, n), np.float64)

alpha = np.float64(1.0)
beta = np.float64(0.0)

a_arr = bptrs(a_gpu)
b_arr = bptrs(b_gpu)
c_arr = bptrs(c_gpu)

cublas_handle = cublas.cublasCreate()

cublas.cublasDgemm(cublas_handle, 'n','n',
                   n, m, k, alpha,
                   b_arr.gpudata, m,
                   a_arr.gpudata, k,
                   beta, c_arr.gpudata, m)

关于python - cuBLAS Dgemm 产品与 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33769297/

相关文章:

c++ - 将 CUDA 与 Eigen 一起使用时找不到 math_functions.hpp

python - 使用Python进行回溯算法

android - SurfaceTexture.getTransformMatrix 的返回值是什么意思,谁能解释一下?

java - 在 if 语句中比较太多变量

r - 将行添加到列表中的矩阵中,以便所有矩阵都具有相同顺序的统一行数

cuda - 支持 CUDA 的 GPU 是否也支持 OpenCL?

cuda - 如何在 CUDA 中将结构体数组的指针变量从主机复制到设备

python 字符串替换为 % character/**kwargs weirdness

python - 与pygame一起使用时如何防止pyttsx产生断断续续的语音?

python - 解析传入字节流的最佳方法?