我有兴趣解决以下形式的一系列线性系统:
也就是说,所有系统都使用相同的矩阵但他们有不同的右手边。矩阵是稀疏对称正定的。我目前正在使用 CHOLMOD 来解决每个系统。显然,我分解一次(Cholesky 分解),然后我按顺序执行前向/后向求解。
我现在正在尝试并行化这些操作。我想找到是并行的。在我第一次尝试使用pthreads时,我无法在四核 i7 机器上获得超过 2 倍的加速。我猜我不能超过 2X,因为我试图并行化的操作非常快,以至于它们的运行时间与从内存中读取 Cholseky 分解矩阵并将它们发送到每个核心所需的时间相当。我不确定,因为我在并行编程方面不是很有经验。
我的问题是:有没有更好的方法来做到这一点?如果我使用其他编程范例,我会期望更高的速度吗?此外,您是否知道已经执行此并行化的任何求解器。(我对并行化一个系统解决方案的包不感兴趣)。
这个问题似乎是令人尴尬的并行,我预计四核机器上的加速非常接近 4 倍,因为任务之间没有依赖关系。
谢谢