如何使用Rapids.ai在GPU中的两个DataFrame之间做矩阵点积

问题描述 投票:0回答:1

我正在使用CUDF,它是Nvidia的Rapids ML套件的一部分。

使用此套件,如何在两个DataFrame之间做点积?

a = cudf.DataFrame([[0.1, 0.2, 0.3, 0.4], [0.1, 0.2, 0.3, 0.4]])
b = cudf.DataFrame([[0.1, 0.2], [0.1, 0.2]])
a.T.dot(b) # It doesn't work, cudf doesn't supprot .dot

例如我如何在上述数据框上执行点积运算?

gpu rapids cudf
1个回答
0
投票

cuDF不直接在Series或DataFrame上支持此操作,但是您可以使用.values表示法对复制到CuPy数组进行零复制,执行此操作,然后将结果转换回带有from_gpu_matrix的DataFrame。

import cudf

a = cudf.DataFrame([[0.1, 0.2, 0.3, 0.4], [0.1, 0.2, 0.3, 0.4]])
b = cudf.DataFrame([[0.1, 0.2], [0.1, 0.2]])
res = cudf.DataFrame.from_gpu_matrix(
    a.values.T.dot(b.values)
)

print(res)
    0   1
0   0.02    0.04
1   0.04    0.08
2   0.06    0.12
3   0.08    0.16
© www.soinside.com 2019 - 2024. All rights reserved.