我有一项任务涉及在数据帧上运行许多查询。我比较了在 Xeon CPU (Pandas) 与 RTX 2080 (CUDF) 上运行这些查询的性能。对于 100k 行的数据帧,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 利用率?