【问题标题】:Disable/configure multithreading in default conda numpy在默认 conda numpy 中禁用/配置多线程
【发布时间】:2015-12-17 00:45:31
【问题描述】:

numpy 的某些版本/构建具有某些操作的多线程执行。 StackOverflow 上有很多关于如何启用此功能的问题。从理论上讲,它很棒。但是,我想禁用它。

原因是我在使用多处理进行并行化的脚本上下文中运行了一些 numpy 代码。默认的 numpy 多线程似乎不是很“聪明”,每个进程都会尝试使用我机器上的所有内核,如果我有多个进程正在运行,这会很快使事情过载。 (另外,这是一台共享机器,所以一般来说只是粗鲁的行为)。

我正在使用numpy 的版本,当前默认使用conda 安装。以下是关于我最终得到的 numpy 版本的信息:

In [1]: import numpy

In [2]: numpy.__version__
Out[2]: '1.10.2'

In [3]: numpy.__config__.show()
lapack_opt_info:
    libraries = ['openblas']
    library_dirs = ['/home/mwaskom/anaconda/lib']
    define_macros = [('HAVE_CBLAS', None)]
    language = c
blas_opt_info:
    libraries = ['openblas']
    library_dirs = ['/home/mwaskom/anaconda/lib']
    define_macros = [('HAVE_CBLAS', None)]
    language = c
openblas_info:
    libraries = ['openblas']
    library_dirs = ['/home/mwaskom/anaconda/lib']
    define_macros = [('HAVE_CBLAS', None)]
    language = c
openblas_lapack_info:
    libraries = ['openblas']
    library_dirs = ['/home/mwaskom/anaconda/lib']
    define_macros = [('HAVE_CBLAS', None)]
    language = c
blas_mkl_info:
  NOT AVAILABLE

当numpy符合MKL时,线程数可以通过环境变量来控制。这就是答案here。但是,使用通过conda 构建的MKL 需要花钱(而且免费的学术选项似乎已经停止)。所以我需要知道如何控制上面显示的 conda 构建中的多线程行为。

理想情况下,应该有一个环境变量或其他一些选项,让我可以根据我正在做的事情选择要使用的线程数。或者,有没有办法使用 conda 安装不会多线程的 numpy 版本?

【问题讨论】:

    标签: multithreading numpy anaconda blas conda


    【解决方案1】:

    原来多线程是通过OPENBLAS_NUM_THREADS 环境变量控制的,因此将其设置为1 将使事情保持串行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 2021-11-07
      相关资源
      最近更新 更多