2

PCIE 总线带宽延迟会限制应用程序应如何以及何时将数据复制到 GPU 和从 GPU 复制数据。

直接使用 cuDF 时,我可以有效地将一大块数据移动到单个 DataFrame 中。

使用 dask_cudf 对我的 DataFrame 进行分区时,Dask 是否一次将一个分区复制到 GPU 内存中?分批?如果是这样,多个复制操作而不是单个更大的副本是否有显着的开销?

4

1 回答 1

1

这可能取决于您使用的调度程序。截至 2019 年 2 月 19 日,dask-cudf 默认使用单线程调度程序(如果在多个线程中使用,cudf 会出现一段时间的段错误),因此如果您不使用某些 dask.distributed 集群,任何传输都将是顺序的。如果您使用的是 dask.distributed 集群,那么这可能会同时发生在您的每个 GPU 上。

值得注意的是 dask.dataframe + cudf 除了 cudf 会做的事情之外,并没有做任何特别的事情。就好像您在一个 for 循环中调用了许多 cudf 调用,或者在每个 GPU 中调用了一个 for 循环,具体取决于上面的调度程序选择。

免责声明: cudf 和 dask-cudf 的变化很大。未来的读者可能应该在相信这个答案之前检查当前的文档。

于 2019-02-20T00:36:02.710 回答