Работа с взаимозависимыми файлами в графопараллельных вычислениях - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь распараллелить следующий код ( MCVE ), создав граф задач, используя dask.delayed (или , реализуя вычислительный граф сам):

os.chdir('./kitchen1')
write_dough()   # writes file ./dough
write_topping() # writes file ./topping
write_pizza()   # requires ./dough and ./topping; writes ./pizza

Я вижу 2 трудности:

  1. write_dough ничего не возвращает. z=x+y проясняет зависимость между переменными; это не Dask не рекомендует полагаться на побочные эффекты . Есть ли идиоматическое решение c?
  2. os.chdir. Как включить его в график вычислений?
  3. Меня не волнует распараллеливание операций ввода-вывода, производительности и т. Д. c.

Вот мое текущее решение. Это добавляет сложности, и './kitchen1' везде, что безобразно. Каким будет элегантное решение?

write_dough, write_topping, write_pizza = map(dask.delayed, (write_dough, write_topping, write_pizza))

dough = write_dough('./kitchen1')
topping = write_topping('./kitchen1')
pizza = write_pizza(dough, topping, './kitchen1')

1 Ответ

0 голосов
/ 28 марта 2020

Я бы порекомендовал ваш текущий подход для явного прохождения через зависимости.

...