interop.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020-2024, NVIDIA CORPORATION.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #pragma once
18 
19 #include <cudf/column/column.hpp>
20 #include <cudf/detail/transform.hpp>
21 #include <cudf/table/table.hpp>
23 #include <cudf/types.hpp>
24 #include <cudf/utilities/export.hpp>
26 #include <cudf/utilities/span.hpp>
27 
28 #include <utility>
29 
30 struct DLManagedTensor;
31 
32 struct ArrowDeviceArray;
33 
34 struct ArrowSchema;
35 
36 struct ArrowArray;
37 
38 struct ArrowArrayStream;
39 
40 namespace CUDF_EXPORT cudf {
65 std::unique_ptr<table> from_dlpack(
66  DLManagedTensor const* managed_tensor,
69 
89 DLManagedTensor* to_dlpack(
90  table_view const& input,
93  // end of group
95 
109  std::string name;
110  std::vector<column_metadata> children_meta;
111 
117  column_metadata(std::string _name) : name(std::move(_name)) {}
118  column_metadata() = default;
119 };
120 
125 using unique_schema_t = std::unique_ptr<ArrowSchema, void (*)(ArrowSchema*)>;
126 
131 using unique_device_array_t = std::unique_ptr<ArrowDeviceArray, void (*)(ArrowDeviceArray*)>;
132 
150 
176  cudf::table&& table,
179 
205  cudf::column&& col,
208 
237  cudf::table_view const& table,
240 
269  cudf::column_view const& col,
272 
294  cudf::table_view const& table,
297 
319  cudf::column_view const& col,
322 
338 std::unique_ptr<cudf::table> from_arrow(
339  ArrowSchema const* schema,
340  ArrowArray const* input,
343 
357 std::unique_ptr<cudf::column> from_arrow_column(
358  ArrowSchema const* schema,
359  ArrowArray const* input,
362 
381 std::unique_ptr<table> from_arrow_host(
382  ArrowSchema const* schema,
383  ArrowDeviceArray const* input,
386 
400 std::unique_ptr<table> from_arrow_stream(
401  ArrowArrayStream* input,
404 
422 std::unique_ptr<column> from_arrow_host_column(
423  ArrowSchema const* schema,
424  ArrowDeviceArray const* input,
427 
432 using owned_columns_t = std::vector<std::unique_ptr<cudf::column>>;
433 
442 template <typename ViewType>
449  explicit custom_view_deleter(owned_columns_t&& owned) : owned_mem_{std::move(owned)} {}
450 
456  void operator()(ViewType* ptr) const { delete ptr; }
457 
459 };
460 
466  std::unique_ptr<cudf::table_view, custom_view_deleter<cudf::table_view>>;
467 
504  ArrowSchema const* schema,
505  ArrowDeviceArray const* input,
508 
514  std::unique_ptr<cudf::column_view, custom_view_deleter<cudf::column_view>>;
515 
547  ArrowSchema const* schema,
548  ArrowDeviceArray const* input,
551  // end of group
553 } // namespace CUDF_EXPORT cudf
A non-owning, immutable view of device data as a column of elements, some of which may be null as ind...
A container of nullable device data as a column of elements.
Definition: column.hpp:47
A set of cudf::column_view's of the same size.
Definition: table_view.hpp:200
A set of cudf::column's of the same size.
Definition: table.hpp:40
Class definition for cudf::column.
rmm::cuda_stream_view const get_default_stream()
Get the current default stream.
std::unique_ptr< cudf::table_view, custom_view_deleter< cudf::table_view > > unique_table_view_t
typedef for a unique_ptr to a cudf::table_view with custom deleter
Definition: interop.hpp:466
std::vector< std::unique_ptr< cudf::column > > owned_columns_t
typedef for a vector of owning columns, used for conversion from ArrowDeviceArray
Definition: interop.hpp:432
std::unique_ptr< column > from_arrow_host_column(ArrowSchema const *schema, ArrowDeviceArray const *input, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Create cudf::column from given ArrowDeviceArray input.
std::unique_ptr< cudf::column > from_arrow_column(ArrowSchema const *schema, ArrowArray const *input, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Create cudf::column from a given ArrowArray and ArrowSchema input.
unique_schema_t to_arrow_schema(cudf::table_view const &input, cudf::host_span< column_metadata const > metadata)
Create ArrowSchema from cudf table and metadata.
std::unique_ptr< table > from_arrow_stream(ArrowArrayStream *input, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Create cudf::table from given ArrowArrayStream input.
unique_table_view_t from_arrow_device(ArrowSchema const *schema, ArrowDeviceArray const *input, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Create cudf::table_view from given ArrowDeviceArray and ArrowSchema
unique_column_view_t from_arrow_device_column(ArrowSchema const *schema, ArrowDeviceArray const *input, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Create cudf::column_view from given ArrowDeviceArray and ArrowSchema
unique_device_array_t to_arrow_host(cudf::column_view const &col, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Copy column view data to host and create ArrowDeviceArray for it.
unique_device_array_t to_arrow_device(cudf::column_view const &col, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Create ArrowDeviceArray from a column view.
std::unique_ptr< cudf::column_view, custom_view_deleter< cudf::column_view > > unique_column_view_t
typedef for a unique_ptr to a cudf::column_view with custom deleter
Definition: interop.hpp:514
std::unique_ptr< ArrowSchema, void(*)(ArrowSchema *)> unique_schema_t
typedef for a unique_ptr to an ArrowSchema with custom deleter
Definition: interop.hpp:125
std::unique_ptr< ArrowDeviceArray, void(*)(ArrowDeviceArray *)> unique_device_array_t
typedef for a unique_ptr to an ArrowDeviceArray with a custom deleter
Definition: interop.hpp:131
std::unique_ptr< table > from_arrow_host(ArrowSchema const *schema, ArrowDeviceArray const *input, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Create cudf::table from given ArrowDeviceArray input.
std::unique_ptr< cudf::table > from_arrow(ArrowSchema const *schema, ArrowArray const *input, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
Create cudf::table from given ArrowArray and ArrowSchema input.
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())
Convert a DLPack DLTensor into a cudf table.
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())
Convert a cudf table into a DLPack DLTensor.
rmm::device_async_resource_ref get_current_device_resource_ref()
Get the current device memory resource reference.
cuda::mr::async_resource_ref< cuda::mr::device_accessible > device_async_resource_ref
cuDF interfaces
Definition: host_udf.hpp:39
APIs for spans.
Detailed metadata information for arrow array.
Definition: interop.hpp:108
column_metadata(std::string _name)
Construct a new column metadata object.
Definition: interop.hpp:117
std::vector< column_metadata > children_meta
Metadata of children of the column.
Definition: interop.hpp:110
std::string name
Name of the column.
Definition: interop.hpp:109
functor for a custom deleter to a unique_ptr of table_view
Definition: interop.hpp:443
void operator()(ViewType *ptr) const
operator to delete the unique_ptr
Definition: interop.hpp:456
owned_columns_t owned_mem_
Owned columns that must be deleted.
Definition: interop.hpp:458
custom_view_deleter(owned_columns_t &&owned)
Construct a new custom view deleter object.
Definition: interop.hpp:449
C++20 std::span with reduced feature set.
Definition: span.hpp:194
Class definition for cudf::table.
Class definitions for (mutable)_table_view
Type declarations for libcudf.