【发布时间】:2015-05-07 11:06:03
【问题描述】:
我需要你的一些建议,希望不会占用你太多时间。
所以这是我的问题: 我有一个小的方形密集矩阵,可能大小为 4x4、8x8、16x16、 我想用 CUDA 来反转它。
问题的特殊部分是我有 1024 个空闲 cuda 线程来执行此任务。 所以我怀疑像 Gauss Jordan 这样最普遍的逆向方法在这里无法正常工作,因为它们略微并行,并且只会使用大量 1024 中的大约 4-16 个线程。
但是我还能如何使用所有可用线程来反转这个矩阵呢?
感谢您的关注!
【问题讨论】:
-
使用
cublasSgetriBatched和cublasSgetrfBatched概述here。 -
如果需要,并且您有一个支持动态并行的设备,您甚至可以从设备中调用它们,如here
-
有趣的想法,谢谢。由于其他原因,我不确定它是否适合我的项目,但我会彻底检查它。
-
@IlyaAfanasiev:您可能需要查看 CUDA 注册开发者网站。有实现小矩阵逆的源代码可供下载(BSD 许可证)。如果我没记错的话,使用 Gauss-Jordan,每个线程一个元素。它可能列在“批处理求解器”下。根据您的项目,可能更容易将其合并到您的代码库中,否则我同意 Robert Crovella 的建议。
-
@njuffa 如果你想对此做出回答,我会赞成
标签: matrix cuda parallel-processing inversion