copying.hpp
转到此文件的文档。
1 /*
2  * Copyright (c) 2018-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  * https://apache.ac.cn/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 
21 #include <cudf/scalar/scalar.hpp>
24 #include <cudf/table/table.hpp>
25 #include <cudf/types.hpp>
26 #include <cudf/utilities/export.hpp>
28 
29 #include <memory>
30 #include <vector>
31 
32 namespace CUDF_EXPORT cudf {
33 
48 enum class out_of_bounds_policy : bool {
49  NULLIFY,
51 };
52 
84 std::unique_ptr<table> gather(
85  table_view const& source_table,
86  column_view const& gather_map,
87  out_of_bounds_policy bounds_policy = out_of_bounds_policy::DONT_CHECK,
90 
106 std::unique_ptr<table> reverse(
107  table_view const& source_table,
110 
126 std::unique_ptr<column> reverse(
127  column_view const& source_column,
130 
173 std::unique_ptr<table> scatter(
174  table_view const& source,
175  column_view const& scatter_map,
176  table_view const& target,
179 
216 std::unique_ptr<table> scatter(
217  std::vector<std::reference_wrapper<scalar const>> const& source,
218  column_view const& indices,
219  table_view const& target,
222 
226 enum class mask_allocation_policy : int32_t {
227  NEVER,
228  RETAIN,
229  ALWAYS
230 };
231 
238 std::unique_ptr<column> empty_like(column_view const& input);
239 
246 std::unique_ptr<column> empty_like(scalar const& input);
247 
265 std::unique_ptr<column> allocate_like(
266  column_view const& input,
267  mask_allocation_policy mask_alloc = mask_allocation_policy::RETAIN,
270 
287 std::unique_ptr<column> allocate_like(
288  column_view const& input,
289  size_type size,
290  mask_allocation_policy mask_alloc = mask_allocation_policy::RETAIN,
293 
304 std::unique_ptr<table> empty_like(table_view const& input_table);
305 
338 void copy_range_in_place(column_view const& source,
339  mutable_column_view& target,
340  size_type source_begin,
341  size_type source_end,
342  size_type target_begin,
344 
377 std::unique_ptr<column> copy_range(
378  column_view const& source,
379  column_view const& target,
380  size_type source_begin,
381  size_type source_end,
382  size_type target_begin,
385 
423 std::unique_ptr<column> shift(
424  column_view const& input,
425  size_type offset,
426  scalar const& fill_value,
429 
461 std::vector<column_view> slice(column_view const& input,
468 std::vector<column_view> slice(column_view const& input,
469  std::initializer_list<size_type> indices,
471 
505 std::vector<table_view> slice(table_view const& input,
512 std::vector<table_view> slice(table_view const& input,
513  std::initializer_list<size_type> indices,
515 
549 std::vector<column_view> split(column_view const& input,
556 std::vector<column_view> split(column_view const& input,
557  std::initializer_list<size_type> splits,
559 
595 std::vector<table_view> split(table_view const& input,
602 std::vector<table_view> split(table_view const& input,
603  std::initializer_list<size_type> splits,
605 
626 std::unique_ptr<column> copy_if_else(
627  column_view const& lhs,
628  column_view const& rhs,
629  column_view const& boolean_mask,
632 
652 std::unique_ptr<column> copy_if_else(
653  scalar const& lhs,
654  column_view const& rhs,
655  column_view const& boolean_mask,
658 
678 std::unique_ptr<column> copy_if_else(
679  column_view const& lhs,
680  scalar const& rhs,
681  column_view const& boolean_mask,
684 
702 std::unique_ptr<column> copy_if_else(
703  scalar const& lhs,
704  scalar const& rhs,
705  column_view const& boolean_mask,
708 
746 std::unique_ptr<table> boolean_mask_scatter(
747  table_view const& input,
748  table_view const& target,
749  column_view const& boolean_mask,
752 
785 std::unique_ptr<table> boolean_mask_scatter(
786  std::vector<std::reference_wrapper<scalar const>> const& input,
787  table_view const& target,
788  column_view const& boolean_mask,
791 
806 std::unique_ptr<scalar> get_element(
807  column_view const& input,
808  size_type index,
811 
815 enum class sample_with_replacement : bool {
816  FALSE,
817  TRUE
818 };
819 
848 std::unique_ptr<table> sample(
849  table_view const& input,
850  size_type const n,
851  sample_with_replacement replacement = sample_with_replacement::FALSE,
852  int64_t const seed = 0,
855 
873 bool has_nonempty_nulls(column_view const& input,
875 
899 
968 std::unique_ptr<column> purge_nonempty_nulls(
969  column_view const& input,
972 
974 } // namespace CUDF_EXPORT cudf
作为元素列的设备数据的非拥有、不可变视图,其中某些元素可能为空,如...所示
作为元素列的设备数据的非拥有、可变视图,其中某些元素可能为空,如...所示
表示单个值的拥有类。
一组大小相同的 cudf::column_view。
列视图类定义
mask_allocation_policy
指示何时根据现有掩码分配掩码。
std::unique_ptr< column > reverse(column_view const &source_column, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
反转列的元素。
std::unique_ptr< column > copy_if_else(scalar const &lhs, scalar const &rhs, column_view const &boolean_mask, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回一个新列,其中每个元素根据布尔掩码的值从 lhs 或 rhs 中选择。
std::unique_ptr< column > allocate_like(column_view const &input, size_type size, mask_allocation_policy mask_alloc=mask_allocation_policy::RETAIN, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
创建一个指定大小且与输入类型相同但未初始化的新列。
bool may_have_nonempty_nulls(column_view const &input)
近似检查列或其后代是否可能包含非空的空元素。
void copy_range_in_place(column_view const &source, mutable_column_view &target, size_type source_begin, size_type source_end, size_type target_begin, rmm::cuda_stream_view stream=cudf::get_default_stream())
就地将元素范围从一列复制到另一列。
std::unique_ptr< table > sample(table_view const &input, size_type const n, sample_with_replacement replacement=sample_with_replacement::FALSE, int64_t const seed=0, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
从给定的输入中随机采集 n 个样本。
bool has_nonempty_nulls(column_view const &input, rmm::cuda_stream_view stream=cudf::get_default_stream())
检查列或其后代是否包含非空的空行。
std::unique_ptr< column > purge_nonempty_nulls(column_view const &input, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
将输入复制到输出,同时清除列或其后代中的任何非空的空行。
std::unique_ptr< column > copy_range(column_view const &source, column_view const &target, size_type source_begin, size_type source_end, size_type target_begin, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
将元素范围从一列复制到另一列(创建新列)。
out_of_bounds_policy
用于处理可能的越界索引的策略。
sample_with_replacement
指示一行是否可以采样多次。
std::unique_ptr< scalar > get_element(column_view const &input, size_type index, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
从列中获取指定索引处的元素。
std::unique_ptr< table > empty_like(table_view const &input_table)
创建一个由与输入表类型相同的空列组成的表。
@ RETAIN
如果输入包含空值掩码,则分配一个。
@ DONT_CHECK
不执行边界检查,性能更佳。
@ NULLIFY
对应于越界索引的输出值为空。
@ FALSE
每行只能采样一次。
@ TRUE
每行可以采样多次。
std::unique_ptr< table > gather(table_view const &source_table, column_view const &gather_map, out_of_bounds_policy bounds_policy=out_of_bounds_policy::DONT_CHECK, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
采集指定行(包括空值)的一组列。
std::unique_ptr< table > scatter(std::vector< std::reference_wrapper< scalar const >> const &source, column_view const &indices, table_view const &target, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
根据散布映射将标量值行散布到目标表的副本中。
std::unique_ptr< table > boolean_mask_scatter(std::vector< std::reference_wrapper< scalar const >> const &input, table_view const &target, column_view const &boolean_mask, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
根据布尔掩码中为 true 的值,将标量值散布到输出表的相应行。
std::unique_ptr< column > shift(column_view const &input, size_type offset, scalar const &fill_value, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
通过偏移所有值来创建新列。
std::vector< table_view > slice(table_view const &input, std::initializer_list< size_type > indices, rmm::cuda_stream_view stream=cudf::get_default_stream())
根据索引集将 table_view 切分成 table_view 的集合。
std::vector< table_view > split(table_view const &input, std::initializer_list< size_type > splits, rmm::cuda_stream_view stream=cudf::get_default_stream())
根据预期分割衍生的索引集将 table_view 分割成 table_view 的集合。
rmm::cuda_stream_view const get_default_stream()
获取当前的默认流。
@ ALWAYS
无论对压缩的影响如何,都使用字典。
@ NEVER
从不使用字典编码。
rmm::device_async_resource_ref get_current_device_resource_ref()
获取当前的设备内存资源引用。
cuda::mr::async_resource_ref< cuda::mr::device_accessible > device_async_resource_ref
int32_t size_type
列和表的行索引类型。
定义: types.hpp:95
cudf::lists_column_view 的类定义。
cuDF 接口
cudf::scalar 的类定义。
cudf::strings_column_view 的类定义。
具有简化功能集的 C++20 std::span。
定义: span.hpp:194
cudf::structs_column_view 的类定义。
cudf::table 的类定义。
libcudf 的类型声明。