图形实用工具包装器#

template<typename value_t>
void uniform_random_fill(rmm::cuda_stream_view const &stream_view, value_t *d_value, size_t size, value_t min_value, value_t max_value, raft::random::RngState &rng_state)#

使用均匀分布的随机值填充缓冲区。

使用指定最小值和最大值之间的均匀分布随机值填充缓冲区。

模板参数:

value_t – 操作值的类型(当前支持 int32_t, int64_t, float 和 double)

参数:
  • stream_view[in] 流视图

  • d_value[out] 要填充的设备数组

  • size[in] 数组中的元素数量

  • min_value[in] 最小值(包含)

  • max_value[in] 最大值(不包含)

  • rng_state[in] 包含伪随机数生成器状态的 RngState 实例。

template<typename value_t>
void scalar_fill(raft::handle_t const &handle, value_t *d_value, size_t size, value_t value)#

使用常量值填充缓冲区。

模板参数:

value_t – 操作值的类型

参数:
  • handle[in] RAFT 句柄对象,用于封装运行图算法所需的资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)。

  • d_value[out] 要填充的设备数组

  • size[in] 数组中的元素数量

  • value[in]

template<typename value_t>
void sort_ints(raft::handle_t const &handle, raft::device_span<value_t> values)#

排序设备范围。

模板参数:

value_t – 操作值的类型。必须是 int32_t 或 int64_t。

参数:
  • handle[in] RAFT 句柄对象,用于封装运行图算法所需的资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)。

  • values[out] 要排序的设备范围

template<typename value_t>
size_t unique_ints(raft::handle_t const &handle, raft::device_span<value_t> values)#

从设备范围中保留唯一元素。

模板参数:

value_t – 操作值的类型。必须是 int32_t 或 int64_t。

参数:
  • handle[in] RAFT 句柄对象,用于封装运行图算法所需的资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)。

  • values[in] 唯一元素的设备范围。

返回:

唯一元素的数量。

template<typename value_t>
void transform_increment_ints(raft::device_span<value_t> values, value_t value, rmm::cuda_stream_view const &stream_view)#

将设备范围的值增加一个常数值。

模板参数:

value_t – 操作值的类型。必须是 int32_t 或 int64_t。

参数:
  • values[out] 要更新的设备范围

  • value[in] 要添加到缓冲区每个元素的值

  • stream_view[in] 流视图

template<typename value_t>
void transform_not_equal(raft::device_span<value_t> values, raft::device_span<bool> result, value_t compare, rmm::cuda_stream_view const &stream_view)#

更新结果设备范围的值:如果输入设备范围中的值与比较值不相等,则设为 1;如果相等,则设为 0。

模板参数:

value_t – 操作值的类型。必须是 int32_t 或 int64_t。

参数:
  • values[in] 包含要比较值的设备范围

  • result[out] 包含比较结果的设备范围

  • compare[in] 要在 values 数组中查询的值

  • stream_view[in] 流视图

template<typename value_t>
void sequence_fill(rmm::cuda_stream_view const &stream_view, value_t *d_value, size_t size, value_t start_value)#

使用一系列值填充缓冲区。

使用序列 {start_value, start_value+1, start_value+2, …, start_value+size-1} 填充缓冲区。

类似于函数 std::iota,封装了函数 thrust::sequence

模板参数:

value_t – 操作值的类型。

参数:
  • stream_view[in] 流视图

  • d_value[out] 要填充的设备数组

  • size[in] 数组中的元素数量

  • start_value[in] 序列的起始值

template<typename value_t>
void stride_fill(rmm::cuda_stream_view const &stream_view, value_t *d_value, size_t size, value_t start_value, value_t stride)#

使用指定步长的一系列值填充缓冲区。

使用指定步长的序列 {start_value, start_value+stride, start_value+stride*2, …, start_value+stride*(size-1)} 填充缓冲区。

模板参数:

value_t – 操作值的类型

参数:
  • stream_view[in] 流视图

  • d_value[out] 要填充的设备数组

  • size[in] 数组中的元素数量

  • start_value[in] 序列的起始值

  • stride[in] 输入步长

template<typename vertex_t>
vertex_t compute_maximum_vertex_id(rmm::cuda_stream_view const &stream_view, vertex_t const *d_edgelist_srcs, vertex_t const *d_edgelist_dsts, size_t num_edges)#

计算边列表的最大顶点 ID。

max(d_edgelist_srcs.max(), d_edgelist_dsts.max())

模板参数:

vertex_t – 顶点类型

参数:
  • stream_view[in] 流视图

  • d_edgelist_srcs[in] 存储边源 ID 的设备数组

  • d_edgelist_dsts[in] 存储边目标 ID 的设备数组

  • num_edges[in] 输入源和目标数组中的边数量

  • the – 边列表中出现的最大值

template<typename vertex_t>
vertex_t compute_maximum_vertex_id(rmm::cuda_stream_view const &stream_view, rmm::device_uvector<vertex_t> const &d_edgelist_srcs, rmm::device_uvector<vertex_t> const &d_edgelist_dsts)#

计算边列表的最大顶点 ID。

max(d_edgelist_srcs.max(), d_edgelist_dsts.max())

模板参数:

vertex_t – 顶点类型

参数:
  • stream_view[in] 流视图

  • d_edgelist_srcs[in] 存储源 ID 的设备数组

  • d_edgelist_dsts[in] 存储目标 ID 的设备数组

  • the – 边列表中出现的最大值

template<typename vertex_t, typename edge_t>
std::tuple<rmm::device_uvector<vertex_t>, rmm::device_uvector<edge_t>> filter_degree_0_vertices(raft::handle_t const &handle, rmm::device_uvector<vertex_t> &&d_vertices, rmm::device_uvector<edge_t> &&d_out_degs)#

从此前沿过滤掉度为零的顶点。

模板参数:
  • vertex_t – 顶点类型

  • edge_t – 边类型

参数:
  • handle – RAFT 句柄对象,用于封装运行图算法所需的资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)。

  • d_vertices – 顶点输入列表

  • d_out_degs – 每个顶点的出度

返回:

一个包含更新后的顶点列表和出度设备向量的元组

template<typename data_t>
bool is_sorted(raft::handle_t const &handle, raft::device_span<data_t> span)#

检查设备范围是否已排序。

模板参数:

data_t – 范围中数据的类型

参数:
  • handle – RAFT 句柄对象,用于封装运行图算法所需的资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)。

  • span – 要检查的数据范围

返回:

如果已排序则为 true,否则为 false

template<typename data_t>
bool is_equal(raft::handle_t const &handle, raft::device_span<data_t> span1, raft::device_span<data_t> span2)#

检查两个设备范围是否相等。如果范围中的每个元素都相等,则返回 true。

模板参数:

data_t – 范围中数据的类型

参数:
  • handle – RAFT 句柄对象,用于封装运行图算法所需的资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)。

  • span1 – 要比较的数据范围

  • span2 – 要比较的数据范围

返回:

如果相等则为 true,否则为 false

template<typename data_t>
size_t count_values(raft::handle_t const &handle, raft::device_span<data_t const> span, data_t value)#

计算一个值在范围中出现的次数。

模板参数:

data_t – 范围中数据的类型

参数:
  • handle – RAFT 句柄对象,用于封装运行图算法所需的资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)。

  • span – 要比较的数据范围

  • value – 要计数的值

返回:

该值出现的实例次数计数