我正在使用英特尔 MKL 库来求解(A*x = b)
具有多个右侧 (rhs) 向量的线性方程组。rhs 向量是通过单独的程序异步生成的,因此不可能一次解决所有问题。
为了加快程序速度,使用了多线程程序,其中每个线程负责求解单个 rhs 向量。由于矩阵A
总是恒定的,LU 分解应该执行一次,然后在所有线程中使用这些因子。所以,我考虑A
使用以下命令
dss_factor_real(handle, opt, data);
并使用以下命令将句柄传递给线程以解决问题:
dss_solve_real(handle, opt, rhs, nRhs, sol);
但是,我发现handle
在多个dss_solve_real
. 显然,出于某种原因,MKL 库在每个创建竞争条件的实例中更改句柄。我阅读了 MKL 手册,但找不到任何相关内容。由于对每个线程进行因式分解是不合逻辑的A
,我想知道是否有任何方法可以克服这个问题并在handle
任何地方使用相同的方法。
在此先感谢您的帮助