如何判断哪个(顺序或并行)版本的英特尔 MKL 已链接?

计算科学 布拉斯 英特尔-mkl
2021-11-30 22:33:23

最近我正在使用带有英特尔 MKL BLAS 的 Umfpack。要将库链接到程序,必须链接 mkl_rt.lib / mkl_rt.so。但是,没有链接哪个版本:库的顺序或并行。

任何人都可以帮忙吗?提前致谢。

4个回答

我相信 MKL 在一个统一的库中具有线程并行和串行功能。您可以尝试将 OMP_NUM_THREADS 或 MKL_NUM_THREADS 设置为一系列值,看看性能如何变化。将任一设置为 1 将为您提供串行行为。

这里有一些很好的信息:
https ://software.intel.com/en-us/mkl-linux-developer-guide-calling-intel-mkl-functions-from-multi-threaded-applications

  • 设置 MKL_NUM_THREADS=n
  • 调用 mkl_set_num_threads(n)

使用 MKL 链接行顾问来确定对应的库。

https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor

如果您选择“单一动态库”,它使用“mkl_rt.lib”,看起来线程是活动的。

这两个版本的结果应该是一样的。是否要使用多个内核由您决定。