多线程 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 中找到它。
我需要在 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 中找到它。