gpt4 book ai didi

c++ - 转换 gsl 线性代数以用于 scalapack 或其他并行矩阵库

转载 作者:搜寻专家 更新时间:2023-10-31 01:54:38 24 4
gpt4 key购买 nike

我有一个深度嵌入 GNU 科学库 (GSL) 矩阵算法的代码,该代码的主要计算是求解一个大型线性方程组,该方程组需要很长时间串行处理,并且具有 GSL 和 BLAS 函数,是否有一种并行化此计算或将其转换为在 ScaLAPACK 等已经并行的库中使用的方法?

最佳答案

如果您的矩阵稀疏,即它包含很多零项,那么您可以轻松实现许多稀疏矩阵代数包而不会遇到太多麻烦。不幸的是,这将要求您以稀疏格式存储矩阵,据我所知,gsl 不会这样做。一旦您的矩阵以某种稀疏格式存储,您就应该能够轻松处理大型系统,即使是在串行应用程序中也是如此。

我建议使用 UMFPACK,因为它不需要您将数据放入其结构中,因此实现所需的工作量最少。

关于并行性的说明:如果您的代码当前是串行的,那么使用并行求解器并非易事。可能实现多线程包可能很简单,但我对线程程序的经验不多。此外,真正的并行(分布式内存)直接求解器并不是那么高效,因为每个处理器都需要自己的完整矩阵拷贝,最好使用迭代方法。

多一点细节会有所帮助:长时间是多长时间?您是否出于某种原因需要求逆,或者您只是在求解方程组?

关于c++ - 转换 gsl 线性代数以用于 scalapack 或其他并行矩阵库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9386113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com