Я хочу поработать с 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-битные ОС, которые вы можете поставить на пи.