Ошибка Threading с использованием Atlas в numpy под Linux

У меня есть многопроцессорное (не многопоточное!) Приложение, использующее многопроцессорный модуль, работающий на Linux-боксе. Это приложение использует функцию numpy.linalg.solve , и если я пытаюсь создать для многих процессов, то я получаю ошибку:

assertion !pthread_create( &(ROOT->pid), ATTR, ROOT->fun, ROOT ) failed, line 84 of file /build/buildd-atlas_3.8.4-9-amd64-jk6dgk/atlas-3.8.4/build/atlas-base/../..//src/pthreads/misc/ATL_thread_tree.c

Обратите внимание: прежде чем я начал использовать функции из numpy.linalg , у меня не было проблем.

Подумайте, какая проблема может быть?

Edit: I tried to use scipy.linalg.solve and the problem is the same!

Edit: By replacing atlas with blas, the problem disappears. So it really seems the issue is within atlas

5
nl ja de
добавлено автор Satish, источник
добавлено автор Satish, источник
Ошибка такая же, контекст отличается, поскольку у меня нет многопоточной программы, а также я не использую Red-Hat.
добавлено автор PierreBdR, источник
Ошибка такая же, контекст отличается, поскольку у меня нет многопоточной программы, а также я не использую Red-Hat.
добавлено автор PierreBdR, источник

3 ответы

It just happens that the ATLAS developer recently answered that question here: http://sourceforge.net/p/math-atlas/support-requests/873/

Примечание. Я предполагаю, что у вас установлен ATLAS 3.10.

Меня тоже это раздражало. И если у вас есть такая же проблема, как у меня, то весьма вероятно, что:

  1. ATLAS был построен на другой машине, чем тот, на котором вы запускаете это на
  2. Эта машина сборки имеет больше ядер, чем ваша машина.
  3. ATLAS 3.10 не знает, как обрабатывать меньшее количество ядер, чем число, которое было у него во время сборки, и генерировать исключение.

Решение состоит в том, чтобы построить ATLAS на машине с числом ядер ниже или равным вашему текущему компьютеру.

Надеюсь это поможет,

2
добавлено
Интересно. Хотя я не знаю, является ли это моей проблемой. Если это так, не должна ли проблема возникать постоянно? В настоящее время это происходит, только если я использую все ядра уже путем запуска сразу нескольких процессов. Кроме того, в этом случае существует ли способ предотвратить использование ATLAS для многопроцессорной обработки?
добавлено автор PierreBdR, источник
Ну, я получаю ту же ошибку, что и ваша, если библиотеки используют сродство. Они связывают вашу скомпилированную программу с конкретной машиной/cpus. У меня есть аналогичные проблемы с OpenBlas, которые, кажется, исправлены (я пытаюсь переключиться на openblas действительно). При сопоставлении с libsatlas вместо libtatlas следует избегать атласа из многопоточности.
добавлено автор LeSchef, источник

It just happens that the ATLAS developer recently answered that question here: http://sourceforge.net/p/math-atlas/support-requests/873/

Примечание. Я предполагаю, что у вас установлен ATLAS 3.10.

Меня тоже это раздражало. И если у вас есть такая же проблема, как у меня, то весьма вероятно, что:

  1. ATLAS был построен на другой машине, чем тот, на котором вы запускаете это на
  2. Эта машина сборки имеет больше ядер, чем ваша машина.
  3. ATLAS 3.10 не знает, как обрабатывать меньшее количество ядер, чем число, которое было у него во время сборки, и генерировать исключение.

Решение состоит в том, чтобы построить ATLAS на машине с числом ядер ниже или равным вашему текущему компьютеру.

Надеюсь это поможет,

2
добавлено
Интересно. Хотя я не знаю, является ли это моей проблемой. Если это так, не должна ли проблема возникать постоянно? В настоящее время это происходит, только если я использую все ядра уже путем запуска сразу нескольких процессов. Кроме того, в этом случае существует ли способ предотвратить использование ATLAS для многопроцессорной обработки?
добавлено автор PierreBdR, источник
Ну, я получаю ту же ошибку, что и ваша, если библиотеки используют сродство. Они связывают вашу скомпилированную программу с конкретной машиной/cpus. У меня есть аналогичные проблемы с OpenBlas, которые, кажется, исправлены (я пытаюсь переключиться на openblas действительно). При сопоставлении с libsatlas вместо libtatlas следует избегать атласа из многопоточности.
добавлено автор LeSchef, источник

It just happens that the ATLAS developer recently answered that question here: http://sourceforge.net/p/math-atlas/support-requests/873/

Примечание. Я предполагаю, что у вас установлен ATLAS 3.10.

Меня тоже это раздражало. И если у вас есть такая же проблема, как у меня, то весьма вероятно, что:

  1. ATLAS был построен на другой машине, чем тот, на котором вы запускаете это на
  2. Эта машина сборки имеет больше ядер, чем ваша машина.
  3. ATLAS 3.10 не знает, как обрабатывать меньшее количество ядер, чем число, которое было у него во время сборки, и генерировать исключение.

Решение состоит в том, чтобы построить ATLAS на машине с числом ядер ниже или равным вашему текущему компьютеру.

Надеюсь это поможет,

2
добавлено
Интересно. Хотя я не знаю, является ли это моей проблемой. Если это так, не должна ли проблема возникать постоянно? В настоящее время это происходит, только если я использую все ядра уже путем запуска сразу нескольких процессов. Кроме того, в этом случае существует ли способ предотвратить использование ATLAS для многопроцессорной обработки?
добавлено автор PierreBdR, источник
Ну, я получаю ту же ошибку, что и ваша, если библиотеки используют сродство. Они связывают вашу скомпилированную программу с конкретной машиной/cpus. У меня есть аналогичные проблемы с OpenBlas, которые, кажется, исправлены (я пытаюсь переключиться на openblas действительно). При сопоставлении с libsatlas вместо libtatlas следует избегать атласа из многопоточности.
добавлено автор LeSchef, источник
Linux Help
Linux Help
2 686 участник(ов)

Правила: https://telegra.ph/Pravila-Linux-Help-10-15

Linux Security
Linux Security
652 участник(ов)

Данная группа принципиально про безопасность и в частности про безопасность Linux. Прочие темы просим обсуждать в профильных чатах.

Linux Gaming RUS
Linux Gaming RUS
28 участник(ов)

Русскоязычный чатик, посвящённый играм на различных дистрибутивах Linux, а также wine, proton Arch Linux RU @ArchLinuxChatRU Gnome RU @gnome_ru