Поддерживает ли PySAT параллельное решение?

#python #multithreading #pysat

#python #многопоточность #pysat

Вопрос:

Я использую PySAT. Есть ли где-нибудь параметр threads number? Или упакованный решатель, который можно распараллелить таким образом?

(В настоящее время я использую решатель Glucose4.)

Комментарии:

1. Связано, но не то, о чем вы просите: github.com/pysathq/pysat/issues/49

2. Я открыл свою проблему здесь , и есть способ сделать это, но он не совсем универсален. Хитрость заключается в разделении регистра по n переменным, таким образом, вы можете использовать 2^n ядра. Вы решаете одну и ту же формулу в каждом потоке, но с True/False заменой этих переменных, и, надеюсь, это быстрее

Ответ №1:

Я покопался в исходном коде, и ответ, похоже, отрицательный.

Единственная ссылка на потоковую обработку в кодовой базе PySAT — это некоторый код, который проверяет, является ли текущий поток «основным», и настраивает логику обработки сигналов на основе этого. Ничто в библиотеке не позволяет пользователю контролировать уровень параллелизма, используемый фактическим решателем.

Лучший обходной путь был упомянут спрашивающим в комментариях: вручную разделить проблемное пространство на подзадачи, которые могут быть независимо решены параллельно. К счастью, SAT особенно легко поддается этому подходу.

Комментарий к публикации:

Хитрость заключается в разделении регистра по n переменным, таким образом, вы можете использовать 2^n ядра. Вы решаете одну и ту же формулу в каждом потоке, но с True False заменой / для этих переменных, и, надеюсь, это быстрее

Комментарии:

1. Я отредактировал свой комментарий, чтобы его было легче найти, потому что он немного более конкретен в отношении того, что вам на самом деле нужно делать