将dask_cudf分区加载到GPU内存中时,每个分区有多少开销?

时间:2019-02-14 18:41:07

标签: dask rapids cudf

PCIE总线带宽等待时间限制了应用程序应如何以及何时将数据复制到GPU以及从GPU复制数据。

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

使用dask_cudf对DataFrame进行分区时,Dask是否一次将分区复制到GPU内存中一次?分批?如果是这样,那么从多个复制操作而不是单个较大的复制操作中会产生大量开销吗?

1 个答案:

答案 0 :(得分:1)

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

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

免责声明:cudf和dask-cudf的流量很大。将来的读者可能应该在信任此答案之前先阅读当前文档。