gpu上的大矩阵乘法

Sor*_*ram 7 cuda gpu gpgpu matrix-multiplication

我需要在GPU上使用CUDA实现矩阵乘法,以获得大型矩阵.单独每个矩阵的大小大于GPU内存.所以我认为我需要一种算法来有效地做到这一点.我绕着互联网走了但找不到任何东西.任何人都可以给我这样的算法的名称或链接.

谢谢

tal*_*ies 17

对此没有真正的算法; 通常,这些类型的线性代数运算,其中整个问题没有同时存储在存储器中,被称为"核心外"操作.

要解决这个问题,您不需要特别复杂的算法,只需要CUBLAS库和铅笔和纸.例如,您可以像这样分解矩阵产品:

在此输入图像描述

它为您提供了四个独立的子矩阵乘法运算.这些可以使用非常直接的主机代码使用四次调用CUBLAS gemm来计算.您可以将想法扩展到匹配问题大小和GPU容量所需的子矩阵.同样的原理也可用于在多个GPU上实现矩阵乘法问题(例如,请参阅此问题).

另外,您可以在哈佛开发的SciGPU-GEMM代码库和HPL-CUDA linpack实现中找到这个精确构思的工作实现(免责声明:我隶属于后者代码库).

  • 线性代数块矩阵算法中的@Rekin 是高效数值实现的中心主题。请参阅[此处](http://mathworld.wolfram.com/BlockMatrix.html)以及如何在[lapack](http://www.netlib.org/lapack/)内部组织块矩阵计算 (3认同)
  • @Rekin:我不明白你在问什么。它的数学来自我的头脑,你看到的图像由我用 LaTeX 渲染成 gif 并上传到 SO 图像托管服务。 (2认同)