多线程 MKL 和 Eigen

Multithreaded MKL and Eigen

我需要在 OSX 和 上尽可能轻松地使用并行线性代数 (即 最多我可以和我的同事一起使用 HomeBrew)分解库,因为我的问题中有很多 DOF。

我试过 Armadillo,它支持我需要的稀疏代数,我可以 link 使用 Accelerate 框架,但它只是 解决了 线性问题,它不支持分解 AFAIK。

接下来,MKL,但我似乎无能为力触发线程,即使使用 TBB:

tbb::task_scheduler_init scheduler(4);
mkl_set_dynamic(true);
mkl_set_num_threads(4);
mkl_set_num_threads_local(4);

Eigen 可能很酷,但似乎和 MKL 一样,它不会 运行 并行。

你有什么建议吗?

OSXclang不支持多线程Eigen和MKL需要的openmp

根据Intel® Math Kernel Library Link Line Advisor,MKL 不支持使用 clang 的 TBB 线程。

但它似乎支持带有额外 link 选项的 Intel OpenMP 库 -liomp5。你可以试试看是否有效。如果没有,您可能必须使用其他编译器,例如 gcc。你可以在 HomeBrew 中找到它。