Как сделать матричный продукт между двумя DataFrame в GPU с помощью rapids.ai - PullRequest
0 голосов
/ 30 марта 2020

Я использую CUDF, это часть комплекта Rapids ML от Nvidia.

Используя этот комплект, как бы я сделал точечный продукт между двумя 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

например, как бы Я выполняю точечное произведение на вышеупомянутых Датафреймах?

1 Ответ

0 голосов
/ 30 марта 2020

cuDF напрямую не поддерживает эту операцию для Series или DataFrame, но вы можете выполнить нулевое копирование для преобразования в массивы CuPy, используя нотацию .values, выполнить эту операцию и преобразовать результат обратно в DataFrame с помощью from_gpu_matrix .

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
...