图形实用工具包装器#
- 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