Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cuda 解AX=B的线性方程_Cuda_Linear Algebra_Sparse Matrix_Cusp Library_Cusolver - Fatal编程技术网

Cuda 解AX=B的线性方程

Cuda 解AX=B的线性方程,cuda,linear-algebra,sparse-matrix,cusp-library,cusolver,Cuda,Linear Algebra,Sparse Matrix,Cusp Library,Cusolver,我现在解了两次Ax=b方程 其中A是稀疏矩阵NxN x、 b是大小为N的向量(我有b1和b2) 我想通过使用cusparse函数一次性解决这两个问题来减少时间 所以我想从我的2b中建立一个大小为Nx2的矩阵,用A来解它,就像方程AX=b所能做的那样 理论上正确吗 我应该使用哪个cusparse函数 请注意,我使用的是稀疏矩阵,而不是密集矩阵 谢谢 来回答您的问题 是的,用这种方法可以解决多个RHS向量的适当条件良好的稀疏问题 除非您的LHS稀疏矩阵是三对角矩阵或三角形矩阵,否则您不能直接使用c

我现在解了两次Ax=b方程

其中A是稀疏矩阵NxN

x、 b是大小为N的向量(我有b1和b2)

我想通过使用cusparse函数一次性解决这两个问题来减少时间

所以我想从我的2b中建立一个大小为Nx2的矩阵,用A来解它,就像方程AX=b所能做的那样

  • 理论上正确吗
  • 我应该使用哪个cusparse函数
  • 请注意,我使用的是稀疏矩阵,而不是密集矩阵


    谢谢

    来回答您的问题

  • 是的,用这种方法可以解决多个RHS向量的适当条件良好的稀疏问题

  • 除非您的LHS稀疏矩阵是三对角矩阵或三角形矩阵,否则您不能直接使用cusparse进行此操作

    cusolver 7.5包含几个用于分解稀疏矩阵的“低级”例程,这意味着您可以对不同的RH进行一次分解并多次重用分解,例如,可以在LU分解后调用,以根据需要使用相同的预计算分解进行多次求解。(注意,我最初假设在cusolve中有一个稀疏的getrs类函数,但现在似乎没有。几年前,我肯定和NVIDIA谈过一个用例,并认为他们已经添加了它,很抱歉这里的混乱)


  • cusolver可能有用。看一看,batch在这里没有帮助,因为它指的是a矩阵而不是b向量。无论如何,谢谢你,只是为了确保我理解正确-我需要将我的左手作为三角形(或三对角)来使用cusparse。对的另外,getrs用于密集矩阵-它如何适合这里?谢谢@Rotem.O:是的,cusparse实际上没有一个解算器,只是稀疏的blas类操作。所以有上下三角矩阵或三对角矩阵的反向替换例程,但仅此而已。您可以使用另一个包(如cusolver)进行因式分解(即Cholesky或LU,具体取决于您的矩阵)。getrs引用是一个错误。我陷入了文档的错误部分,寻找一个函数来解决多个RHS问题。我会在有机会时更新答案当前,
    cusolverSpXcsrluSolve()
    仅提供CPU路径。作为一种替代方案,我们可以随时使用该解决方案。