如何更好地控制 CPU 上每个 BLAS 内核调用所使用的线程数?

问题描述

我正在编写一个 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 才能让我调整线程数?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...