У меня есть проблема, когда я должен проанализировать комбинации 500C5 (255244687600) чего-то. Распространение его по кластеру 10- node, где каждый кластер обрабатывает примерно 10 ^ 6 комбинаций в секунду, означает, что задание будет завершено через семь часов.
Проблема, которую я имею, заключается в распределении комбинаций 255244687600 по 10 узлам. Я хотел бы представить каждый node с помощью 25524468760, однако алгоритмы, которые я использую, могут производить только комбинации последовательно, я хотел бы иметь возможность передавать набор элементов и ряд комбинаций, например, [0-10 ^ 7], [10 ^ 7,2,0 10 ^ 7] и т.д., И сами узлы определяют комбинации.
Алгоритмы, которые я использую в данный момент, следующие:
-
Вопрос о переполнении стека Эффективно вычисляемые векторные комбинации
Я рассмотрел использование мастера node, который перечисляет каждую из комбинаций и отправляет работу на каждый из узлов. Однако накладные расходы, возникающие при итерации комбинаций из одного node, и передача назад и вперед работы огромны, и это впоследствии приведет к тому, что мастер node станет узким местом.
Есть ли какие-либо хорошие алгоритмы итерации комбинации, предназначенные для эффективного/оптимального распределенного перечисления?