multithreading - 如何更好地控制 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 可以让我调整线程数?
解决方案
推荐阅读
- marklogic - 如何区分没有 http 应用程序命中 ML 和 ML 没有响应?
- powershell - PowerShell ForEach libreoffice 转换
- c# - 以递归方式遍历 jsondocument
- javascript - React如何更新api json中的嵌套数组?
- reactjs - 为什么这个 ProtectedRoute 配置给我错误
- azure-powershell - 计算应用服务计划的平均 CPU 利用率
- javascript - 如何将字符串数组转换为对象?
- python - shell如何获取python设置的环境变量
- tfs - 工作项类型 (WIT) 状态之间的自动转换
- python - 我不明白 python 文档中的符号