我对从密集的 numpy 对象创建 cudf DataFrames 的推荐和快速方法感兴趣。我已经看到了许多将 2d numpy 矩阵的列拆分为元组然后调用cudf.DataFrame
元组列表的示例——这相当昂贵。使用numba.cuda.to_device
速度相当快。是否可以使用numba.cuda.to_device
或者是否有更有效的方法来构建 DataFrame ?
In [1]: import cudf
In [2]: import numba.cuda
In [3]: import numpy as np
In [4]: data = np.random.random((300,100))
In [5]: data.nbytes
Out[5]: 240000
In [6]: %time numba.cuda.to_device(data)
CPU times: user 8 ms, sys: 0 ns, total: 8 ms
Wall time: 4.45 ms
Out[6]: <numba.cuda.cudadrv.devicearray.DeviceNDArray at 0x7f8954f84550>
In [7]: record_data = (('fea%d'%i, data[:,i]) for i in range(data.shape[1]))
In [8]: %time cudf.DataFrame(record_data)
CPU times: user 960 ms, sys: 508 ms, total: 1.47 s
Wall time: 1.61 s
Out[8]: <cudf.DataFrame ncols=100 nrows=300 >
以上显示cudf.DataFrame
比直接调用慢约 360 倍numba.cuda.to_device