Algorithm 仅在GPU上求解小型对称正定Ax=b

Algorithm 仅在GPU上求解小型对称正定Ax=b,algorithm,cuda,gpu,linear-algebra,solver,Algorithm,Cuda,Gpu,Linear Algebra,Solver,我正在尝试优化实时3D建模中的应用程序。应用程序的计算部分几乎完全在CUDA的GPU上运行。该应用需要求解一个小型(6x6)双精度对称正定线性系统Ax=b 500+次/秒。目前,这是通过使用Cholesky的高效基于CPU的线性代数库来实现的,但需要每秒数百次将数据从CPU-GPU复制回GPU,以及每次启动内核的开销等 我如何在GPU上计算线性系统的解,而不必将数据放到CPU上?我读过一些关于MAGMA库的文章,但它似乎使用了混合算法,而不是只使用GPU的算法 我已经准备好在GPU上解决单个线性

我正在尝试优化实时3D建模中的应用程序。应用程序的计算部分几乎完全在CUDA的GPU上运行。该应用需要求解一个小型(6x6)双精度对称正定线性系统Ax=b 500+次/秒。目前,这是通过使用Cholesky的高效基于CPU的线性代数库来实现的,但需要每秒数百次将数据从CPU-GPU复制回GPU,以及每次启动内核的开销等

我如何在GPU上计算线性系统的解,而不必将数据放到CPU上?我读过一些关于MAGMA库的文章,但它似乎使用了混合算法,而不是只使用GPU的算法


我已经准备好在GPU上解决单个线性系统的速度会比现有的基于CPU的库慢很多,但我想看看是否可以通过消除主机和设备之间的数据通信以及每秒数百次内核启动的开销等来弥补这一点。如果没有GPU-only-LAPACK之类的替代方案,我将如何着手实施一些措施,仅在GPU上解决这个特殊的6x6问题?例如,不需要花费大量时间就可以使用GPU BLAS库吗?

去年秋天,NVIDIA在注册开发者网站上发布了批处理Ax=b解算器的代码。这段代码适用于通用矩阵,如果您可以将对称矩阵扩展为完整矩阵(这对于6x6不应该是一个问题?),它应该可以很好地满足您的需要。由于代码执行数据透视,这对于正定矩阵是不必要的,因此它对于您的情况不是最佳的,但是您可以根据自己的目的对其进行修改,因为代码是在BSD许可证下进行的

NVIDIA的标准开发人员网站目前遇到一些问题。以下是此时如何下载批处理解算器代码:

(1) 去

(2) 如果您已有NVdeveloper帐户(例如通过partners.nvidia.com),请单击屏幕右半部分的绿色“登录NVdeveloper”链接。否则点击“加入nvdeveloper”申请新帐户;申请新账户通常在一个工作日内获得批准

(3) 在提示下使用您的电子邮件地址和密码登录

(4) 右边有一个标题为“最新下载”的部分。顶部的第五项是“批处理解算器”。点击它,它会带你到代码的下载页面


(5) 单击“下载”链接,然后单击“接受”接受许可条款。您应该开始下载。

一个6x6线性系统非常小,您可以自己在CUDA代码中编写方程。。。显然,对于这样一个小的系统来说,很难从CUDA的并行性中获得任何好处,但是摆脱GPU-CPU通信确实会带来巨大的好处。您是否可能以不同的方式进行并行化?在单个GPU内核上解决系统问题,然后使用多个内核实现500+解决方案/秒。这将是最好的,除非你需要上一个系统的结果来开始下一个系统的工作。@Eiver在钱上。你能并行地做这500件事吗?还是它们相互依赖?对于6x6,这种方法看起来是可以手工编码的…非常感谢,从批处理解算器的初始外观来看,它似乎可以满足我的要求。我刚刚问了另一个关于线性代数和GPU的问题,您可能知道一些!