朱莉娅和拉帕克:pstrf多线程,但没有

时间:2014-11-11 14:01:02

标签: multithreading julia lapack

我在Julia编写的程序没有产生预期的计算性能。基本上,程序首先使用cholfact!计算大矩阵 A 的Cholesky分解,因此 A = L '即可。然后使用反斜杠运算符为不同的 b 解决 Lx = b

这导致直接调用Lapack。函数cholfact!pstrf!实现,反斜杠运算符使用trtrs!。这些是正确的Lapack函数。虽然函数pstrf!是并行执行的,但函数trtrs!却不是。分析器告诉我,大部分运行时都花费在trtrs!上。我程序中的代码行是

F = cholfact!(A, :L, pivot = true)     # precomputation, executed once

x = F[:L]\b[F.piv]    # inside a loop, b is computed from x every step

为什么两个Lapack函数之间存在差异?如何并行执行pstrf!

0 个答案:

没有答案