Azn*_*veh 5 multithreading openmp intel-mkl openblas
我正在编写一个 OpenMP 代码,在不同的线程中调用不同的 BLAS 内核,主要是具有不同大小的 DGEMM。为了最大限度地提高性能,我想控制我为每个 BLAS 调用的线程数。看起来这是一个非常明显的基本需求,尽管它很难做到。
OpenBLAS有一个功能openblas_set_num_threads(int n),在OpenBLAS代码的README文件中是这样描述的
这些仅在库初始化时使用一次,不可用于在单个 BLAS 调用中微调线程数。
所以我想我不能在 OpenBLAS 中使用这个功能。
MKL 有一个功能mkl_set_num_threads_local(int nt),当我使用 MKL 时,它似乎是我问题的答案。
有没有办法可以为每个 BLAS 调用调整线程数,而不管我使用的是什么库?(理想的选择)如果不是,是不是只有 MKL 才能让我调整线程数?