我有一个应用程序,需要我计算二维矩阵的一些大型 Kronecker 积并将结果乘以大型二维矩阵。我想在 CUDA 的 GPU 上实现这一点,并且更愿意为此使用经过调整的库实现,而不是编写我自己的(当然不是最佳的)Kronecker 产品。我有 CUDA、BLAS、LAPACK 等方面的经验,但不幸的是,常见的 GPU 实现(岩浆、cuBLAS、cula 等)中没有 kron(A,B) 函数。
我已经搜索了一些解决方案,但找不到适合我需要的库。(关于 SO 最接近的问题是使用 CUDA 在 gpu 上并行 Kronecker 张量产品,但这看起来像是针对特殊情况的自定义解决方案,不适合我的需求。我正在寻找可以在最通用的情况下工作的 Kronecker 产品案子。)
我读过 BLAS 中的 DGEMM 可用于实现 Kronecker 产品。是否有使用 DGEMM(或其单一/复杂变体)实现 Kronecker 产品的标准算法?在我看来,唯一的方法是在循环中调用 DGEMM 并将结果平铺到更大的矩阵中,这似乎不是很有效。或者,有没有人知道另一个可能提供我正在寻找的实现或论文?