【问题标题】:Query regarding cusparseSolveAnalysisInfo_t关于 cusparseSolveAnalysisInfo_t 的查询
【发布时间】:2013-07-18 14:37:01
【问题描述】:

我需要多次求解 Ax=B 并且 cusparseSolveAnalysisInfo_t 在循环中花费大量时间。

cusparseSolveAnalysisInfo_t 在 AX=B 的解中做了什么? 根据文档,我可以创建一次并将其用于不同的 B 集。 如果我想将它用于具有相同稀疏结构的不同 A 集怎么办。

【问题讨论】:

    标签: cuda sparse-matrix matrix-inverse


    【解决方案1】:

    参考the documentationcusparseSolveAnalysisInfo_t 类型的info 结构被传递给分析函数以捕获分析函数创建的数据。然后将其传递(不变)到求解函数以指导求解器。

    您可以在此cuda sample 中查看示例用法。

    如果更改 A,则必须重新创建它(即,如果更改 A,则必须重新运行分析步骤)。

    【讨论】:

    • 感谢罗伯特的回复。但我认为关于 cusparseSolveAnalysisInfo_t 的文档并不完全正确。文档说“求解阶段可以用不同的右手边执行多次,而分析阶段只需要执行一次。当必须为一组不同的权利求解稀疏三角形线性系统时,这尤其有用- 一次处理一个,而它的系数矩阵保持不变。”
    • 这里的系数矩阵在值方面不需要相同。它需要具有相同的结构,就是这样。在我的情况下,矩阵 A 的结构是相同的,只有值发生了变化。我创建了一次 analysisInfo 并使用不同的 A 和 B 一次又一次地调用求解部分。在我的情况下它工作正常。
    • 我同意你的说法,但要清楚,结构意味着:1. 矩阵维度和 2. 零元素与非零元素的关系。因此,只要先前的非零元素保持非零,并且先前的零元素保持零,值就可以改变。只要你满足了这些条件,我认为即使值发生变化,你也可以重复使用分析信息。
    • 是的罗伯特,我正在重新使用分析信息,因为我的矩阵总是三对角线稀疏的。而对于这样的矩阵,CUDA 提供了 cusparseSgtsvStriedBatch,这给了我一个直接的解决方案。谢谢。
    猜你喜欢
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    相关资源
    最近更新 更多