【发布时间】:2013-07-29 21:50:58
【问题描述】:
我正在使用英特尔 MKL 库求解具有多个右侧 (rhs) 向量的线性方程组(A*x = b)。 rhs 向量是通过单独的程序异步生成的,因此不可能一次解决所有问题。
为了加快程序速度,使用了多线程程序,其中每个线程负责求解单个 rhs 向量。由于矩阵A 始终为常数,因此应执行一次 LU 分解,随后在所有线程中使用这些因子。所以,我使用以下命令考虑A
dss_factor_real(handle, opt, data);
并将句柄传递给线程以使用以下命令解决问题:
dss_solve_real(handle, opt, rhs, nRhs, sol);
但是,我发现在dss_solve_real 的多个实例中使用相同的handle 不是线程安全的。显然,出于某种原因,MKL 库在每个创建竞争条件的实例中更改句柄。我阅读了 MKL 手册,但找不到任何相关内容。由于为每个线程分解A 是不合逻辑的,我想知道是否有任何方法可以克服这个问题并在任何地方使用相同的handle。
提前感谢您的帮助
【问题讨论】:
标签: c linear-algebra intel-mkl