Предполагается, что функции scipy и numpy с автоматической резьбой не используют несколько ядер

Я использую Mac OS X 10.6.8 и использую Enthought Python Distribution. Я хочу, чтобы функции numpy использовали оба моих ядра. У меня возникла проблема, похожая на эту в этом посте:многопоточный блас в Python / Numpy но после выполнения шагов этого плаката у меня все еще остается та же проблема. Вот мой numpy.show_config ():

lapack_opt_info:
    libraries = ['mkl_lapack95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread']
    library_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/lib']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/include']
blas_opt_info:
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread']
    library_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/lib']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/include']
lapack_mkl_info:
    libraries = ['mkl_lapack95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread']
    library_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/lib']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/include']
blas_mkl_info:
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread']
    library_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/lib']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/include']
mkl_info:
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread']
    library_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/lib']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/include']

Как и в комментариях к исходному сообщению, я удалил строку, в которой установлена переменнаяMKL_NUM_THREADS=1, Но даже тогда функции numpy и scipy, которые должны использовать преимущества многопоточности, используют только одно из моих ядер одновременно. Есть что-то еще, что я должен изменить?

Изменить: Чтобы уточнить, я пытаюсь получить один единственный расчет, такой как numpy.dot (), чтобы использовать многопоточность самостоятельно в соответствии с реализацией MKL, я не пытаюсь воспользоваться тем фактом, что Numpy вычисления освобождают контроль GIL, следовательно, облегчает многопоточность с другими функциями.

Вот небольшой скрипт, который должен использовать многопоточность, но не на моем компьютере:

import numpy as np

a = np.random.randn(1000, 10000)
b = np.random.randn(10000, 1000)

np.dot(a, b) #this line should be multi-threaded

Ответы на вопрос(1)

Ваш ответ на вопрос