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

时间:2012-07-29 17:06:44

标签: algorithm cuda gpu linear-algebra solver

我正在尝试在实时3D建模中优化应用程序。应用程序的计算部分几乎完全在CUDA中的GPU上运行。该应用需要小(6x6)双精度对称正定线性系统的解决方案Ax = b每秒500+次。目前,这是使用Cholesky的高效CPU线性代数库完成的,但是需要从CPU - GPU复制数据,然后每秒数百次返回GPU,并且每次都会启动内核的开销等。

如何在GPU上计算线性系统的解决方案,而无需将数据全部输入CPU?我已经阅读了一些关于MAGMA库的内容,但它似乎使用的是混合算法,而不是仅使用GPU的算法。

我已经准备好了这样一个事实,即GPU上的单个线性系统的解决方案将比现有的基于CPU的库慢得多,但我想看看是否可以通过删除主机和设备之间的数据通信以及内核启动的开销等每秒数百次。如果没有GPU只有类似LAPACK的替代方案那么我将如何在GPU上实现一些解决这个特定6x6案例的东西呢?如果没有GPU BLAS库的大量时间投资,可以做到吗?

1 个答案:

答案 0 :(得分:3)

去年秋天,NVIDIA向已注册的开发者网站发布了批量Ax = b解算器的代码。此代码适用于通用矩阵,并且应该可以很好地满足您的需求,前提是您可以将对称矩阵扩展为完整矩阵(这不应该是6x6的问题?)。由于代码执行旋转,这对于正定矩阵来说是不必要的,它对于您的情况并不是最佳的,但是您可以根据BSD许可证为您的目的修改它。

NVIDIA的标准开发者网站目前正在遇到一些问题。以下是如何下载批量求解器代码的方法:

(1)转到http://www.nvidia.com/content/cuda/cuda-toolkit.html

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

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

(4)右侧有一个标题为“最新下载”的部分。顶部的第五项是“Batched Solver”。单击它,它将带您进入代码的下载页面。

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