互操作 Dlpack#

group interop_dlpack

函数

std::unique_ptr<table> from_dlpack(DLManagedTensor const *managed_tensor, rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

将DLPack DLTensor转换为cudf表。

DLTensor 的 device_type 必须是 kDLCPUkDLCudakDLCUDAHost,并且 device_id 必须与当前设备匹配。ndim 必须设置为 1 或 2。dtype 必须有 1 个通道,并且位大小必须匹配支持的 cudf::data_type

注意

托管张量不会被此函数删除。

Throws:

cudf::logic_error – 如果任何DLTensor字段不受支持

Parameters:
  • managed_tensor – 一个一维或二维的列主序(Fortran顺序)张量

  • mr – 用于分配返回表的设备内存的设备内存资源

Returns:

包含张量数据副本的表格

DLManagedTensor *to_dlpack(table_view const &input, rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

将cudf表转换为DLPack DLTensor。

所有列必须具有相同的数据类型,并且该类型必须是数字类型。列可以为空,但空值计数必须为零。如果输入表为空或没有行,结果将为nullptr。

注意

返回的DLManagedTensordeleter方法必须用于释放为张量分配的内存。

Throws:

cudf::logic_error – 如果数据类型不相等或不是数值类型,或者任何列具有非零的空值计数

Parameters:
  • input – 要转换为 DLPack 的表格

  • mr – 用于分配返回的DLPack张量的设备内存的设备内存资源

Returns:

1D 或 2D DLPack 张量,包含表格数据的副本,或 nullptr