1

我想了解 Dask 对象的高效内存管理过程。我已经设置了一个 Dask GPU 集群,并且能够执行跨集群运行的任务。但是,对于 dask 对象,特别是当我运行计算函数时,在 GPU 上运行的进程通过使用越来越多的内存而迅速增长,很快我就会收到“内存不足错误”。

我想了解如何在使用完 dask 对象后释放内存。在以下示例中,在计算函数之后,我如何释放该对象。我正在运行以下代码几次。内存在运行的进程中不断增长

import cupy as cp
import pandas as pd
import cudf
import dask_cudf

nrows = 100000000
df2 = cudf.DataFrame({'a': cp.arange(nrows), 'b': cp.arange(nrows)})
ddf2 = dask_cudf.from_cudf(df2, npartitions=5)
ddf2['c'] = ddf2['a'] + 5
ddf2

ddf2.compute()
4

1 回答 1

0

请查看 Nick Becker 的这篇博文。 您可能需要先设置客户端。

您首先阅读 cudf,您不应该将其作为练习。您应该直接阅读 dask_cudf。

当 dask_cudf 计算时,结果作为 cudf 数据帧返回,它必须适合 GPU 的剩余内存。有可能首先读入 cudf 可能占用了你的大部分记忆。

然后,您可以在使用 client.cancel() 完成后删除一个 dask 对象。

于 2021-05-05T23:09:52.787 回答