8

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

如何仅在 GPU 上计算线性系统的解,而无需将数据带到 CPU 上?我已经阅读了一些关于 MAGMA 库的信息,但它似乎使用混合算法而不是仅 GPU 算法。

我已经为 GPU 上的单个线性系统的解决方案将比现有的基于 CPU 的库慢很多这一事实做好准备,但我想看看是否可以通过删除之间的数据通信来弥补这一点主机和设备以及内核启动的开销等每秒数百次。如果那里没有 GPU 唯一的类似 LAPACK 的替代方案,我将如何实施一些东西来仅在 GPU 上解决这个特定的 6x6 案例?例如,是否可以在没有大量时间投资的情况下使用 GPU BLAS 库来完成?

4

1 回答 1

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) 点击“下载”链接,然后点击“接受”接受许可条款。您的下载应该开始了。

于 2012-07-30T17:23:32.157 回答