Какой код python, написанный на стороне клиента #dask, действительно добавляется к графу задачи?
В этом скрипте, например, я читаю набор данных hdf5 из 4 dim, используя al oop для четвертого измерения. Я вычисляю сумму для каждого тусклого света, называемого здесь g для генерации, и вычитаю результат этого поколения и предыдущий. Затем я вызываю производную .visualize (), чтобы посмотреть, как она генерирует график.
alive = []
derivate = []
board = []
deriv = 0
rest_1 = 0
hf5 = h5py.File('Datata.h5', 'r')
hds5 = hf5.get('dataset')
list(hf5.keys())
last_gen = hds5.attrs.get('last_gen')
for g in range(0,generations):
board = hds5[g]
arr = da.asarray(board, chunks=(4,5,4))
res = arr.sum()
if g!=0 :
deriv = res - rest_1
rest_1 = res
deriv.visualize()
Вот график, который я получаю
- Здесь без вызова .compute () оператор вычитания добавляется к графу dask, по-видимому, как мы это объясним?
- Если я добавлю .compute () в «res = arr.sum (). compute ( ) ", а остальное оставить как есть, где будет выполняться вычитание? на стороне клиента или в одном из рабочих?
- Другой вопрос, более общий: хочу ли я сохранить частичные суммы в рабочих и выполнить вычитание (на частичной сумме текущего и последнего поколения ) в рабочих, есть ли способ сказать, что я хочу, чтобы эти операции выполнялись над одними и теми же фрагментами в разных поколениях? (например, worker 0 всегда будет работать с 3 первыми строками каждого поколения, как в mpi, даже если это совсем не одно и то же)?