Dlpack 互操作#
- group DLPack
函数
-
std::unique_ptr<table> from_dlpack(DLManagedTensor const *managed_tensor, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
将 DLPack DLTensor 转换为 cudf 表。
DLTensor 的
device_type
必须是kDLCPU
、kDLCuda
或kDLCUDAHost
,并且device_id
必须与当前设备匹配。ndim
必须设置为 1 或 2。dtype
必须有 1 个通道,并且位大小必须与支持的cudf::data_type
匹配。注意
此函数不会删除托管张量。
- 抛出:
cudf::logic_error – 如果 DLTensor 的任何字段不受支持
- 参数:
managed_tensor – 一个 1D 或 2D 列主序(Fortran 顺序)张量
stream – 用于设备内存操作和内核启动的 CUDA 流
mr – 用于分配返回表的设备内存的设备内存资源
- 返回:
包含张量数据副本的表
-
DLManagedTensor *to_dlpack(table_view const &input, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
将 cudf 表转换为 DLPack DLTensor。
所有列必须具有相同的数据类型,且此类型必须是数值类型。列可以是可空类型,但空值数量必须为零。如果输入表为空或行数为零,结果将为 nullptr。
注意
必须使用返回的
DLManagedTensor
的deleter
方法来释放为张量分配的内存。- 抛出:
cudf::logic_error – 如果数据类型不相等或不是数值类型,或者任何列的空值数量非零
- 参数:
input – 要转换为 DLPack 的表
stream – 用于设备内存操作和内核启动的 CUDA 流
mr – 用于分配返回的 DLPack 张量设备内存的设备内存资源
- 返回:
包含表数据副本的 1D 或 2D DLPack 张量,或 nullptr
-
std::unique_ptr<table> from_dlpack(DLManagedTensor const *managed_tensor, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#