相关疑难解决方法(0)

将mkl_set_num_threads与numpy一起使用

我试图mkl_set_num_threads像这样设置numpy计算的线程数

import numpy
import ctypes
mkl_rt = ctypes.CDLL('libmkl_rt.so')
mkl_rt.mkl_set_num_threads(4)
Run Code Online (Sandbox Code Playgroud)

但我不断收到分段错误:

Program received signal SIGSEGV, Segmentation fault.
0x00002aaab34d7561 in mkl_set_num_threads__ () from /../libmkl_intel_lp64.so
Run Code Online (Sandbox Code Playgroud)

获取线程数是没问题的:

print mkl_rt.mkl_get_max_threads()
Run Code Online (Sandbox Code Playgroud)

如何让我的代码工作?或者是否有其他方法可以在运行时设置线程数?

python numpy intel-mkl

14
推荐指数
2
解决办法
4530
查看次数

python中的无意识多线程(scikit-learn)

我正在使用sklearn模块的混合子模块用于高斯混合模型...当我在多核系统上运行我的代码时,它使用多个核,即使我在代码中没有要求它.这是默认行为吗?更重要的是,我该如何禁用它?

谢谢

python multithreading scikit-learn

5
推荐指数
1
解决办法
2913
查看次数

如何更好地控制 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 才能让我调整线程数?

multithreading openmp intel-mkl openblas

5
推荐指数
0
解决办法
98
查看次数