cuDF GPU利用率低

  • 本文关键字:利用率 GPU cuDF cudf
  • 更新时间 :
  • 英文 :


我有一项任务,涉及在数据帧上运行许多查询。我比较了在Xeon CPU(Pandas(和RTX 2080(CUDF(上运行这些查询的性能。对于10万行的数据帧,GPU速度更快,但不会太快。在运行查询时,查看nvidia-smi输出和GPU利用率约为3-4%。

我的问题是,我能做些什么来加快cuDF任务并实现高GPU利用率?

例如,对于CPU用例,我可以在8个CPU内核上并行运行其中的8个查询。

NUM_ELEMENTS = 100000
df = cudf.DataFrame()
df['value1'] = cp.random.sample(NUM_ELEMENTS)
df['value2'] = cp.random.sample(NUM_ELEMENTS)
df['value3'] = cp.random.sample(NUM_ELEMENTS)

c1 = np.random.random()
c2 = np.random.random()
c3 = np.random.random()
res = df.query('((value1 < @c1) & (value2 > @c2) & (value3 < @c3))')

这是一个不需要太多GPU周期的示例代码,但我想对数据运行数千个这样的查询,我不想按顺序运行它们。有没有办法在cuDF数据帧上并行运行多个query((调用,以最大限度地提高GPU利用率?

我们正在努力在cudf中启用这一功能,但这目前是cudf库的一个限制。您正在寻找的并行机制是使用CUDA Streams(https://developer.nvidia.com/blog/gpu-pro-tip-cuda-7-streams-simplify-concurrency/)。我们还不完全支持cuDF Python库中的CUDA流,但我们正在积极研究

您可以使用cupy和numba的组合以及它们对CUDA流的支持来解决此问题(https://docs.cupy.dev/en/stable/reference/generated/cupy.cuda.Stream.html,https://numba.pydata.org/numba-doc/dev/cuda-reference/host.html#stream-管理(,但你会在一个非常实验的地区。

最新更新