【发布时间】:2017-12-31 15:20:06
【问题描述】:
我正在尝试使用 Anaconda 的 Numba 包中的 cuBLAS 函数,但遇到了问题。我需要输入矩阵按 C 顺序排列。输出可以是 Fortran 顺序。
我可以运行包中提供的示例脚本here。该脚本有两个函数,gemm_v1 和gemm_v2。在gemm_v1 中,用户必须按照 Fortran 顺序创建输入矩阵。在gemm_v2 中,它们可以传递给 GEMM 的 cuda 实现并在设备上转置。我可以让这些示例与方阵一起使用。但是,我不知道如何让gemm_v2 处理非方形输入矩阵。有没有办法处理非正方形的 C 阶输入矩阵?
注意:
理想情况下,在调用 GEMM 后,输入和输出矩阵都将保留在设备上以用于其他计算(这是迭代方法的一部分)。
【问题讨论】:
-
在对 blas 的调用中,您指定 gemm(transa, transb, m, n, k, alpha, A:r, B:r, beta, C:w);其中 transa 和 transb 是要应用于矩阵的操作。在 gemm_v1 示例中,这是恒等运算,在 gemm_v2 示例中,这是转置。然后,您指定 m、n 和 k。这些是 A (m) 的#rows、A 的#columns/B (n) 的#rows 和 B (k) 的列。如果将其保留在示例的语法中,则将其指定为平方矩阵,因此这是更改它的地方。确保矩阵的形状与声明相匹配。
标签: python anaconda numba cublas