Многоядерный Numpy на процессоре ARM - PullRequest
0 голосов
/ 24 августа 2018

Я хочу поработать с NumPy на моем Raspberry Pi 3 B +, который использует 64-битный ARM 4-ядерный Cortex-A53 (ARMv8) (СМ. РЕДАКТИРОВАТЬ ВНИЗ), и я не уверен, что дело в параллельной оптимизации, blas и т. д. Перед установкой NumPy (python 3) я установил lapack и atlas, используя

sudo apt-get install liblapack-dev
sudo apt-get install libatlas-base-dev

После чего я установил Numpy (используя pip3). Проверка настройки NumPy с помощью следующего кода:

import numpy as np
print (np.__config__.show())

Выходы:

openblas_info:
  NOT AVAILABLE
lapack_opt_info:
    library_dirs = ['/usr/lib/atlas-base/atlas', '/usr/lib/atlas-base']
    language = f77
    define_macros = [('ATLAS_INFO', '"\\"3.10.3\\""')]
    libraries = ['lapack', 'f77blas', 'cblas', 'atlas', 'f77blas', 'cblas']
    include_dirs = ['/usr/include/atlas']
openblas_lapack_info:
  NOT AVAILABLE
blis_info:
  NOT AVAILABLE
atlas_3_10_threads_info:
  NOT AVAILABLE
blas_mkl_info:
  NOT AVAILABLE
atlas_info:
    library_dirs = ['/usr/lib/atlas-base/atlas', '/usr/lib/atlas-base']
    language = f77
    define_macros = [('ATLAS_INFO', '"\\"3.10.3\\""')]
    libraries = ['lapack', 'f77blas', 'cblas', 'atlas', 'f77blas', 'cblas']
    include_dirs = ['/usr/include/atlas']
lapack_mkl_info:
  NOT AVAILABLE
atlas_3_10_blas_threads_info:
  NOT AVAILABLE
openblas_clapack_info:
  NOT AVAILABLE
accelerate_info:
  NOT AVAILABLE
atlas_blas_threads_info:
  NOT AVAILABLE
atlas_3_10_blas_info:
  NOT AVAILABLE
blas_opt_info:
    language = c
    library_dirs = ['/usr/lib/atlas-base']
    define_macros = [('HAVE_CBLAS', None), ('ATLAS_INFO', '"\\"3.10.3\\""')]
    libraries = ['f77blas', 'cblas', 'atlas', 'f77blas', 'cblas']
    include_dirs = ['/usr/include/atlas']
atlas_threads_info:
  NOT AVAILABLE
atlas_blas_info:
    language = c
    library_dirs = ['/usr/lib/atlas-base']
    define_macros = [('HAVE_CBLAS', None), ('ATLAS_INFO', '"\\"3.10.3\\""')]
    libraries = ['f77blas', 'cblas', 'atlas', 'f77blas', 'cblas']
    include_dirs = ['/usr/include/atlas']
atlas_3_10_info:
  NOT AVAILABLE
None

На машине Intel / AMD с mkl / lapack информация для каждой библиотеки включает «pthread», что, как я знаю, относится к многопоточности низкого уровня на c. Ни одна из библиотек от numpy на моем компьютере не содержит "pthread".

Когда я запускаю тест, в котором я умножаю большие матрицы, используя NumPy, при использовании команды "top" для просмотра процессов / ресурсов процесс python никогда не идет на 100% -ное использование процессора. Было бы около 400%, если бы я использовал 4 ядра.

Существует ли какое-либо решение на основе ARM, позволяющее numpy выполнять параллельные вычисления?

Спасибо!

EDIT:

Для чего бы то ни было, очевидно, что Raspbian использует 32-битную версию armv7L, хотя процессор может работать под управлением armv8. Есть и другие 64-битные ОС, которые вы можете поставить на пи.

...