¿Cuál es el estado del arte con respecto a obtener numpy
para usar núcleos múltiples (en hardware Intel) para cosas como productos vectoriales internos y externos, multiplicaciones de matrices de vectores, etc.?numpy en hardware multinúcleo
Estoy contento de reconstruir numpy
si es necesario, pero en este punto estoy buscando formas de acelerar las cosas sin cambiar mi código.
Como referencia, mi show_config()
es el siguiente, y nunca he observado numpy
utilizar más de un núcleo:
atlas_threads_info:
libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/local/atlas-3.9.16/lib']
language = f77
include_dirs = ['/usr/local/atlas-3.9.16/include']
blas_opt_info:
libraries = ['ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/local/atlas-3.9.16/lib']
define_macros = [('ATLAS_INFO', '"\\"3.9.16\\""')]
language = c
include_dirs = ['/usr/local/atlas-3.9.16/include']
atlas_blas_threads_info:
libraries = ['ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/local/atlas-3.9.16/lib']
language = c
include_dirs = ['/usr/local/atlas-3.9.16/include']
lapack_opt_info:
libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/local/atlas-3.9.16/lib']
define_macros = [('ATLAS_INFO', '"\\"3.9.16\\""')]
language = f77
include_dirs = ['/usr/local/atlas-3.9.16/include']
lapack_mkl_info:
NOT AVAILABLE
blas_mkl_info:
NOT AVAILABLE
mkl_info:
NOT AVAILABLE
Dudo que pueda lograr ninguna aceleración mediante el cálculo multiproceso de productos de vectores de tamaño 4000. Tal producto de puntos solo necesita unos microsegundos para computar. La sobrecarga de asignar la tarea a un subproceso diferente probablemente al menos anulará cualquier velocidad que pueda obtener, incluso cuando use grupos de subprocesos. –
Estoy multiplicando matrices de 32M x (4k ... 1.5M) con matrices de (4k ... 1.5M) x algo, y traté de hacerlo usando la caja de herramientas de multiprocesamiento, sin embargo, esto parece crear una gran cantidad de memoria por encima , ya que los datos se copian en nuevos procesos (gracias a GIL por eso). Sería genial si todos los 8 núcleos fueran utilizados por atlas. – Herbert