Существуют ли передаваемые переменные для каждого узла или для каждого работника? - PullRequest
0 голосов
/ 03 мая 2018

Контекст:

  • У нас большое количество вычислений, для которых требуется одна и та же большая неизменяемая структура данных (матрица) в качестве входных данных.
  • Чтобы сделать эту структуру данных доступной между узлами, я транслирую матрицу, используя: matrix_future = client.scatter(matrix, broadcast=True) и передаю matrix_future функциям с задержкой в ​​вычислительном графе, которые этого требуют. Эти функции выполняются независимо на разных узлах.
  • (ради вопроса) давайте предположим, что у нас есть 3 вычислительных узла: узел 1 запускает планировщик, узел 2 и узел 3 - по 10 рабочих каждый.

Вопрос:

  • На вычислительных узлах, на которых работают рабочие (узел 2 и узел 3): существует ли структура широковещательной передачи данных только один раз в памяти на узел или имеется копия на одного работника, таким образом, в 10 раз те же данные в памяти узла (1 на рабочий)
  • Если он используется совместно, где он находится на узле? Есть ли какой-нибудь объектный магазин, откуда он доступен рабочим?

Заранее спасибо.

1 Ответ

0 голосов
/ 03 мая 2018

Данные будут существовать в каждом рабочем процессе dask. У вас будет десять копий на каждом узле.

Работники Dask работают совершенно независимо. Они не знают других работников, которые могут находиться на том же узле.

Вместо этого вы можете рассмотреть возможность создания одного работника dask на каждом узле, который имеет десять потоков. Часто это правильный выбор, особенно если вы имеете дело с большими числовыми данными.

...