我正在尝试在实时3D建模中优化应用程序。应用程序的计算部分几乎完全在CUDA中的GPU上运行。该应用程序需要一个小的(6x6)双精度对称正定线性系统Ax = b 500+每秒的解决方案。目前,这是通过使用Cholesky的基于CPU的高效线性代数库完成的,但必须每秒从CPU- GPU复制数据并将其复制回GPU数百次,并且每次都会启动内核开销等。
如何仅在GPU上完全不用将数据上载到CPU的情况下就可以在GPU上计算线性系统的解决方案?我已经阅读了一些有关MAGMA库的信息,但它似乎使用了混合算法而不是仅GPU算法。
我已经准备好为GPU上的单个线性系统提供的解决方案比现有的基于CPU的库慢得多的事实,但是我想看看是否可以通过消除两者之间的数据通信来弥补主机和设备以及内核启动的开销等每秒数百次。如果没有仅GPU的类似LAPACK的替代产品,那我将如何实施一些解决方案来仅在GPU上解决这种特殊的6x6情况?例如,使用GPU BLAS库无需花费大量时间就可以完成此工作吗?
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)右侧的标题为“最新下载”。从顶部开始的第五项是“分批求解器”。单击该按钮,它将带您到代码下载页面。
(5)单击“下载”链接,然后单击“接受”以接受许可条款。您的下载应开始。