我的目的是使用cuSolver软件包中的getrf
和getrs
,并使用AB=X
解决B=I
。
这是解决此问题的最佳方法吗?
如果是这样,在设备内存中创建col-major标识矩阵B
的最佳方法是什么?它可以使用for
循环轻松完成,但这会占用大量内存,而且速度很慢。有更快的方法吗?
请注意,cuSolver不会提供getri
。因此,我必须使用getrs
。
答案 0 :(得分:1)
直到CUDA提供LAPACK API getri
,我认为getrf
和getrs
是大型矩阵求逆的最佳选择。
矩阵B
与A
的大小相同,因此我不认为分配B
会使此任务消耗的内存比其输入/输出数据大得多。 / p>
getrf
和getrs
的复杂度分别为O(n^3)
和O(n^2)
,而设置B=I
的复杂度为O(n^2) + O(n)
。我不认为这应该成为整个过程的瓶颈。您可以共享您的实现,因此我们可以检查问题出在哪里。