Python использует только одно ядро - PullRequest
0 голосов
/ 09 января 2020

У меня есть сценарий python, который обрабатывает файлы с датчиками из файла md4 и выводит их на изображение. Поэтому я использую библиотеки libs asammdf и matplotlib - они имеют зависимость от numpy.

На моем windows главном компьютере там, где я разработал сценарий, все работает отлично - все потоки используются и скорость сценария в порядке. windows cpu view with many threads Но на других устройствах, где сценарий также должен запускаться для обработки большего количества файлов, сценарий использует только одно ядро ​​с несколькими потоками при работе в Ubuntu 16.04 с собственной скомпилированной python 3.7.0:

linux htop only one core with many threads

Я много искал и пробовал все, что есть в sugessted - некоторые из них немного старше Ubuntu 12 ..:
https://shahhj.wordpress.com/2013/10/27/numpy-and-blas-no-problemo/
Импорт многопроцессорной поддержки scipy breaks в Python
Почему многопроцессорная обработка использует только одно ядро ​​после импорта numpy?

Машины linux установлены новые - установлены только python3 .7, pip3 и python libs. Я даже скачал новейший образ Ubuntu 19.10, где предустановлен python3 .7.5. Что я сделал:

  • пробовал os.sched_setaffinity
  • пробовал os.system ("taskset -p 0xff% d"% os.getpid ())

текущая маска сродства pid 20534: ff
новая маска сродства pid 20534: ff

  • установила ATLAS и задала альтернативы, но те, которые, кажется, не приняты ..

на моей windows машине у меня есть: python 3.7.1 и выход для >>> import numpy; numpy.show_config()

blas_mkl_info:   NOT AVAILABLE blis_info:   NOT AVAILABLE openblas_info:
    library_dirs = ['C:\\projects\\numpy-wheels\\numpy\\build\\openblas']
    libraries = ['openblas']
    language = f77
    define_macros = [('HAVE_CBLAS', None)] blas_opt_info:
    library_dirs = ['C:\\projects\\numpy-wheels\\numpy\\build\\openblas']
    libraries = ['openblas']
    language = f77
    define_macros = [('HAVE_CBLAS', None)] lapack_mkl_info:   NOT AVAILABLE openblas_lapack_info:
    library_dirs = ['C:\\projects\\numpy-wheels\\numpy\\build\\openblas']
    libraries = ['openblas']
    language = f77
    define_macros = [('HAVE_CBLAS', None)] lapack_opt_info:
    library_dirs = ['C:\\projects\\numpy-wheels\\numpy\\build\\openblas']
    libraries = ['openblas']
    language = f77
    define_macros = [('HAVE_CBLAS', None)]

на моих linux машинах: python 3.7.0 и numpy config:

blas_mkl_info:
  NOT AVAILABLE
blis_info:
  NOT AVAILABLE
openblas_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
lapack_mkl_info:
  NOT AVAILABLE
openblas_lapack_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]
lapack_opt_info:
    libraries = ['openblas', 'openblas']
    library_dirs = ['/usr/local/lib']
    language = c
    define_macros = [('HAVE_CBLAS', None)]

В моем коде нет многопоточных логи c или чего-то подобного - все многопоточные логи c обрабатываются внутри Я использую библиотек. Я надеюсь, что кто-то может помочь. Я думаю, что это очень странно, у меня все еще есть проблемы такого рода, так много лет спустя из приведенных выше вопросов я связался.

РЕДАКТИРОВАТЬ: причина вопроса была удалена: я проверил в b ios, что все ядра и гиперпоточность активированы

1 Ответ

0 голосов
/ 10 января 2020

asammdf полностью однопоточный. На компьютере windows вы можете использовать numpy с библиотеками Intel MKL, поэтому может быть, поэтому операции numpy векторизованы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...