似乎我的 numpy 库正在使用 4 个线程,设置 OMP_NUM_THREADS=1
并不能阻止这一点。
numpy.show_config()
给了我这些结果:
atlas_threads_info:
libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/lib64/atlas']
define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')]
language = f77
include_dirs = ['/usr/include']
blas_opt_info:
libraries = ['ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/lib64/atlas']
define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')]
language = c
include_dirs = ['/usr/include']
atlas_blas_threads_info:
libraries = ['ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/lib64/atlas']
define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')]
language = c
include_dirs = ['/usr/include']
openblas_info:
NOT AVAILABLE
lapack_opt_info:
libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/lib64/atlas']
define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')]
language = f77
include_dirs = ['/usr/include']
所以我知道它使用的是 blas,但我不知道如何让它使用 1 个线程进行矩阵乘法。
最佳答案
有一些常见的多 CPU 库可用于数值计算,包括 NumPy 内部。您可以在运行脚本之前设置一些环境标志,以限制它们使用的 CPU 数量。
尝试设置以下所有内容:
export MKL_NUM_THREADS=1
export NUMEXPR_NUM_THREADS=1
export OMP_NUM_THREADS=1
有时很难看出究竟在哪里引入了多线程。
其他答案显示其他库的环境标志。它们也可能起作用。
关于python - 限制numpy中的线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30791550/