Я использую scipy
для вычисления поворотов векторов. Следующий код является минимальным, который воспроизводит мою проблему. Это не обязательно правильно математически.
import numpy as np
from scipy.linalg import expm
axis = np.array([5.0, 8.0, -2.0])
axis = axis/(np.sum(axis**2)**0.5)
theta = 0.001
for t in range(1000000):
cx = np.cross(np.eye(3), axis*theta)
M0 = expm(cx)
cx = np.dot(M0, cx)
print cx
Моя проблема в том, что выполнение этого кода занимает 300% моего процессора, то есть работает на 3 ядрах. Я полагаю, что это связано с функцией scipy.linalg.expm
, потому что только функции numpy
использовали только до 100%. У меня вопрос, как настроить scipy
на использование только одного ядра?
Я не помню, чтобы когда-либо связывали его с какой-либо библиотекой linalg, но вот мои конфиги:
#numpy
numpy.__config__.show()
lapack_opt_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/usr/local/lib']
define_macros = [('HAVE_CBLAS', None)]
language = c
blas_opt_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/usr/local/lib']
define_macros = [('HAVE_CBLAS', None)]
language = c
openblas_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/usr/local/lib']
define_macros = [('HAVE_CBLAS', None)]
language = c
blis_info:
NOT AVAILABLE
openblas_lapack_info:
libraries = ['openblas', 'openblas']
library_dirs = ['/usr/local/lib']
define_macros = [('HAVE_CBLAS', None)]
language = c
lapack_mkl_info:
NOT AVAILABLE
blas_mkl_info:
NOT AVAILABLE
#scipy
scipy.__config__.show()
lapack_opt_info:
libraries = ['openblas']
library_dirs = ['/usr/local/lib']
language = f77
blas_opt_info:
libraries = ['openblas']
library_dirs = ['/usr/local/lib']
language = f77
openblas_info:
libraries = ['openblas']
library_dirs = ['/usr/local/lib']
language = f77
openblas_lapack_info:
libraries = ['openblas']
library_dirs = ['/usr/local/lib']
language = f77
blas_mkl_info:
NOT AVAILABLE