Как ограничить количество потоков, используемых OpenBlas от NumPy в Windows? - PullRequest
1 голос
/ 03 июня 2019

Я анализирую время выполнения скриптов в Python и хочу отключить оптимизацию MKL / OpenBLAS. Как правильно сделать это в Windows?

У меня Windows 10 x64 с Python 3.6 и numpy 1.16.3, установленная через pip.

Я пытался установить системные переменные env в Windows (OPENBLAS_NUM_THREADS, MKL_NUM_THREADS, NUMEXPR_NUM_THREADS, VECLIB_MAXIMUM_THREADS) и в скрипте Python:

import os

os.environ["OMP_NUM_THREADS"] = "1"
os.environ["OPENBLAS_NUM_THREADS"] = "1"
os.environ["MKL_NUM_THREADS"] = "1"
os.environ["NUMEXPR_NUM_THREADS"] = "1"
os.environ["VECLIB_MAXIMUM_THREADS"] = "1"

но выполнение этого куска кода:

import numpy as np
N = 10**4
a = np.random.random((N, N))
b = a@a

по-прежнему использует больше потоков, чем один.

Мой np.__config__.show() выглядит так:

blas_mkl_info:
  NOT AVAILABLE
blis_info:
  NOT AVAILABLE
openblas_info:
    library_dirs = ['C:\\projects\\numpy-wheels\\numpy\\build\\openblas']
    libraries = ['openblas']
    language = f77
    define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
    library_dirs = ['C:\\projects\\numpy-wheels\\numpy\\build\\openblas']
    libraries = ['openblas']
    language = f77
    define_macros = [('HAVE_CBLAS', None)]
lapack_mkl_info:
  NOT AVAILABLE
openblas_lapack_info:
    library_dirs = ['C:\\projects\\numpy-wheels\\numpy\\build\\openblas']
    libraries = ['openblas']
    language = f77
    define_macros = [('HAVE_CBLAS', None)]
lapack_opt_info:
    library_dirs = ['C:\\projects\\numpy-wheels\\numpy\\build\\openblas']
    libraries = ['openblas']
    language = f77
    define_macros = [('HAVE_CBLAS', None)]

На моем ПК нет пути, подобного C:\\projects\\numpy-wheels\\numpy\\build\\openblas, это должен быть путь от компьютера, на котором была скомпилирована библиотека.

Мой способ добиться исполнения в одном потоке - запустить скрипт из CMD следующим образом:

start /affinity 0x4 python script.py

но это не правильный способ управления оптимизацией математической библиотеки (и я не уверен, действительно ли эта команда ограничивает OpenBLAS).

...