Numpy с многопоточным процессом с openBlas в версии Redhat linux 7.4 и Anacoda Python 3.6.5 - PullRequest
0 голосов
/ 09 мая 2019

Постановка проблемы: мы хотели бы включить numpy с многопоточным процессом с openBlas в версии RHEL 7.4 и Anacoda Python 3.6.5 (/ opt / anaconda3), но не смогли этого достичь. Не могли бы вы помочь нам с точным местоположением для размещения файла site.cfg, а также поможет нам в обеспечении / тестировании шагов для многопоточности с использованием numpy

Выполнены следующие шаги
1) После установки OpenBLAS в каталог по умолчанию / opt мы удалили существующий numpy с помощью pip (pip uninstall numpy)
2) Затем создайте файл .numpy-site.cfg в корневом домашнем каталоге со следующим содержимым:

  [default]
            include_dirs = /opt/OpenBLAS/include
            library_dirs = /opt/OpenBLAS/lib
            [openblas]
            openblas_libs = openblas
            include_dirs = /opt/OpenBLAS/include
            library_dirs = /opt/OpenBLAS/lib
            [lapack]
            lapack_libs = openblas
            [atlas]
            atlas_libs = openblas
            libraries = openblas 

3) Затем снова установите numpy (pip install numpy)
4) подробности конфигурации, как показано ниже. Где library_dirs вместо этого указывает на '/ usr / local / lib' / opt / OpenBLAS / lib '

command tested :python -c "import numpy; print(numpy.config.show())"
o/p:

            blas_mkl_info:
            NOT AVAILABLE
            blis_info:
            NOT AVAILABLE
            openblas_info:
            libraries = ['openblas', 'openblas']
            library_dirs = ['/usr/local/lib']
            language = c
            define_macros = [('HAVE_CBLAS', None)]
            blas_opt_info:
            libraries = ['openblas', 'openblas']
            library_dirs = ['/usr/local/lib']
            language = c
            define_macros = [('HAVE_CBLAS', None)]
            lapack_mkl_info:
            NOT AVAILABLE
            openblas_lapack_info:
            libraries = ['openblas', 'openblas']
            library_dirs = ['/usr/local/lib']
            language = c
            define_macros = [('HAVE_CBLAS', None)]
            lapack_opt_info:
            libraries = ['openblas', 'openblas']
            library_dirs = ['/usr/local/lib']
            language = c
            define_macros = [('HAVE_CBLAS', None)]
            None

Затем мы протестировали одиночный и многопоточный сценарий, используя следующий

5.1) одиночная нить

           OMP_NUM_THREADS=1 python testmultithread.py

            version: 1.16.3
maxint:  9223372036854775807

BLAS info:
 * libraries ['mkl_rt', 'pthread']
 * library_dirs ['/opt/anaconda3/lib']
 * define_macros [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
 * include_dirs ['/usr/local/include', '/usr/include', '/opt/anaconda3/include']

dot: 7.072579 sec

command tested for single tread: ps -To pid,tid,tgid,tty,time,comm -p 12011
  PID   TID  TGID TT           TIME COMMAND
12011 12011 12011 pts/0    00:00:09 python

5.2) Многопоточность

           OMP_NUM_THREADS=2 python testmultithread.py

version: 1.16.3
maxint:  9223372036854775807

BLAS info:
 * libraries ['mkl_rt', 'pthread']
 * library_dirs ['/opt/anaconda3/lib']
 * define_macros [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
 * include_dirs ['/usr/local/include', '/usr/include', '/opt/anaconda3/include']

dot: 2.924053 sec

command tested for mulithread: ps -To pid,tid,tgid,tty,time,comm -p 13160
  PID   TID  TGID TT           TIME COMMAND
13160 13160 13160 pts/0    00:00:13 python
13160 13166 13160 pts/0    00:00:10 python



фрагмент кода testmultithread.py

#!/usr/bin/env python
import numpy
from numpy.distutils.system_info import get_info
import sys
import timeit

print("version: %s" % numpy.__version__)
print("maxint:  %i\n" % sys.maxsize)

info = get_info('blas_opt')
print('BLAS info:')
for kk, vv in info.items():
    print(' * ' + kk + ' ' + str(vv))

setup = "import numpy; x = numpy.random.random((5000, 5000))"
count = 10

t = timeit.Timer("numpy.dot(x, x.T)", setup=setup)
print("\ndot: %f sec" % (t.timeit(count) / count))

Вопросы

1) Где мы должны разместить numpy-site.cfg во время установки pip numpy . так как в корневой директории pip установка конфигураций не учитывается ..
2) когда мы делаем numpy config show ... library_dirs вместо этого указывает на «/ usr / local / lib» /opt/OpenBLAS/lib'.
Не могли бы вы помочь нам указать на правильный openblas?
3) когда мы запускаем многопоточный тестовый запрос в o / p, мы можем видеть детали из numpy.distutils.system_info import get_info показывает библиотеки ['mkl_rt', 'pthread'], но python -c "import numpy; print (numpy.config. show ()) "показывает openblas как упомянуто в разделе по умолчанию.
Используется ли openblas или mkl_rt?

4) Как указано в разделе Multithread 5.2: мы могли видеть, что два потока работают?
подтверждает ли это, что numpy работает на Multithread с использованием openbals?
Заранее спасибо

...