Можно ли узнать, какие функции SciPy / NumPy работают на нескольких ядрах? - PullRequest
4 голосов
/ 04 августа 2011

Я пытаюсь выяснить, какие функции в SciPy / NumPy выполняются на нескольких процессорах.Например, я могу прочитать в справочном руководстве SciPy, что SciPy использует это, но меня больше интересует, какие именно функции выполняют параллельные вычисления, потому что не все из них.Сценарий мечты, конечно, будет, если он будет включен при вводе справки (SciPy.foo), но, похоже, это не так.

Любая помощь будет высоко оценена.

Бест,

Матиас

1 Ответ

4 голосов
/ 04 августа 2011

Я думаю, что вопрос лучше адресовать используемым вами библиотекам BLAS / LAPACK, а не SciPy / NumPy.

Некоторые библиотеки BLAS / LAPACK, такие как MKL , используют несколько ядеризначально там, где другие реализации могут и не быть.

В качестве примера взят scipy.linalg.solve, вот его исходный код (с некоторым кодом обработки ошибок для ясности пропущен):

def solve(a, b, sym_pos=0, lower=0, overwrite_a=0, overwrite_b=0,
          debug = 0):
    if sym_pos:
        posv, = get_lapack_funcs(('posv',),(a1,b1))
        c,x,info = posv(a1,b1,
                        lower = lower,
                        overwrite_a=overwrite_a,
                        overwrite_b=overwrite_b)
    else:
        gesv, = get_lapack_funcs(('gesv',),(a1,b1))
        lu,piv,x,info = gesv(a1,b1,
                             overwrite_a=overwrite_a,
                             overwrite_b=overwrite_b)

    if info==0:
        return x
    if info>0:
        raise LinAlgError, "singular matrix"
    raise ValueError,\
          'illegal value in %-th argument of internal gesv|posv'%(-info)

Как вы можете видетьэто всего лишь тонкая оболочка вокруг двух семейств функций LAPACK (например, DPOSV и DGESV).

На уровне SciPy параллелизма не происходит, но вы наблюдаете функцию с использованием нескольких ядер наваша система.Единственное возможное объяснение состоит в том, что ваша библиотека LAPACK способна использовать несколько ядер, без NumPy / SciPy, которые делают что-либо для этого .

...