Cuda gpu上的大矩阵乘法

Cuda gpu上的大矩阵乘法,cuda,gpu,gpgpu,matrix-multiplication,Cuda,Gpu,Gpgpu,Matrix Multiplication,我需要在GPU上用CUDA实现大型矩阵的矩阵乘法。每个矩阵的大小都比GPU内存大。所以我想我需要一个算法来有效地做到这一点。我在网上到处找,但找不到。有谁能告诉我这些算法的名称或链接吗 谢谢这方面没有正式的算法;一般来说,这类线性代数运算,其中整个问题不会同时存储在内存中,称为“核心外”运算 要解决这个问题,你不需要特别复杂的算法,只需要库布拉斯图书馆和一支铅笔和一张纸。例如,可以按如下方式分解矩阵积: 这会给你四个独立的子矩阵乘法运算。这些可以通过使用非常简单的主机代码对CUBLAS gem

我需要在GPU上用CUDA实现大型矩阵的矩阵乘法。每个矩阵的大小都比GPU内存大。所以我想我需要一个算法来有效地做到这一点。我在网上到处找,但找不到。有谁能告诉我这些算法的名称或链接吗


谢谢

这方面没有正式的算法;一般来说,这类线性代数运算,其中整个问题不会同时存储在内存中,称为“核心外”运算

要解决这个问题,你不需要特别复杂的算法,只需要库布拉斯图书馆和一支铅笔和一张纸。例如,可以按如下方式分解矩阵积:

这会给你四个独立的子矩阵乘法运算。这些可以通过使用非常简单的主机代码对CUBLAS gemm进行四次调用来计算。您可以将此想法扩展到与问题大小和GPU容量匹配所需的任意多个子矩阵。同样的原理也可用于在多个GPU上实现矩阵乘法问题(参见示例)


在另一种情况下,您可以在哈佛开发的代码库和linpack实现(免责声明:我隶属于后一个代码库)中找到这一精确想法的有效实现。

简单地拆分矩阵,如
[A0;A1]*[b0b1]=[A0*b0a0*B1;A1*b0a1*B1]
?这也许是个好的开始。分解是从哪里来的?答案当然很好@雷金:我不明白你在问什么。它的数学来自我的大脑,你看到的图像由我用乳胶渲染成gif,并上传到SO图像托管服务。对不起,我指的是数学公式。不久前,我上了一堂代数课,关于大矩阵乘法的话题被认为是计算上最难解决的问题之一。这让我产生了一种错误的感觉,认为这是不可能的。@Rekin在线性代数中,块矩阵算法是高效数值实现的中心主题。请参见以及如何在内部组织块矩阵计算