Dask 配列に巨大な数ギガバイトのマトリックスがあります。私が次のことをした場合:
usv = dask.array.linalg.svd(A)
に続く
u.compute()
s.compute()
v.compute()
Dask がプロセスの中間値を再利用することを保証できますか、それとも u、s、および v に対してすべてが再実行されますか?
Dask 配列に巨大な数ギガバイトのマトリックスがあります。私が次のことをした場合:
usv = dask.array.linalg.svd(A)
に続く
u.compute()
s.compute()
v.compute()
Dask がプロセスの中間値を再利用することを保証できますか、それとも u、s、および v に対してすべてが再実行されますか?
あなたが書いた方法では、中間値を再利用しません(おそらく、分散スケジューラを使用している場合を除きます)。
いずれにせよ、あなたはそれを書き直したくなるでしょう
from dask import compute
u, s, v = compute(u, s, v)
その場合、すべての中間値が共有されます。
詳細については、 http://dask.pydata.org/en/latest/scheduler-overview.html#the-compute-functionを参照してください。