采样#
- template<typename vertex_t, typename edge_t, typename weight_t, typename index_t, bool multi_gpu>
std::tuple<rmm::device_uvector<vertex_t>, rmm::device_uvector<weight_t>, rmm::device_uvector<index_t>> random_walks(raft::handle_t const &handle, graph_view_t<vertex_t, edge_t, false, multi_gpu> const &graph_view, std::optional<edge_property_view_t<edge_t, weight_t const*>> edge_weight_view, vertex_t const *ptr_d_start, index_t num_paths, index_t max_depth, bool use_padding, std::unique_ptr<sampling_params_t> sampling_strategy)#从起始源返回随机游走 (RW),其中每条路径都有给定的最大长度。随机引擎假定为均匀分布。
.*
- 已弃用
一旦所有功能迁移到较新的 API,此算法将被弃用:uniform_random_walks()、biased_random_walks() 和 node2vec_random_walks()。
- 模板参数:
graph_t – 图/视图的类型(通常是 graph_view_t)。
index_t – 用于存储索引和大小的类型。
graph_t – 图/视图的类型(通常是 graph_view_t)。
index_t – 用于存储索引和大小的类型。
- 参数:
handle – 用于封装资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)以运行图算法的 RAFT 句柄对象。
graph – 用于生成 RW 的图(视图)对象。
ptr_d_start – 用于 RW 起始顶点索引集的设备指针。
num_paths – = 路径数量。
max_depth – RW 的最大长度。
use_padding – (可选)指定返回是否使用填充格式 (true) 或合并(压缩)格式;使用填充时,输出是顶点路径矩阵和边路径(权重)矩阵;在这种情况下,矩阵按行主顺序存储;顶点路径矩阵使用
num_vertices
值填充,权重矩阵使用0
值填充;selector_type – 采样策略的标识符:uniform、biased 等;默认为 uniform = 0;
handle – 用于封装资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)以运行图算法的 RAFT 句柄对象。
graph – 用于生成 RW 的图(视图)对象。
ptr_d_start – 用于 RW 起始顶点索引集的设备指针。
num_paths – = 路径数量。
max_depth – RW 的最大长度。
use_padding – (可选)指定返回是否使用填充格式 (true) 或合并(压缩)格式;使用填充时,输出是顶点路径矩阵和边路径(权重)矩阵;在这种情况下,矩阵按行主顺序存储;顶点路径矩阵使用
num_vertices
值填充,权重矩阵使用0
值填充;sampling_strategy – 采样策略的指针:uniform、biased 等;可能的值 {0==uniform, 1==biased, 2==node2vec};默认为 nullptr == uniform;
- 返回值:
std::tuple<rmm::device_uvector<vertex_t>, rmm::device_uvector<weight_t>, rmm::device_uvector<index_t>> 填充或合并的 RW 路径的三元组;在合并情况下(默认),返回值包含每个路径对应的顶点和边权重,以及对应的路径大小。这旨在最大限度地减少传递给 Python 层的 DF 数量。此处“合并”的含义是,不同大小路径的 2D 数组表示为 1D 连续数组。在填充情况下,返回的是一个 num_paths x max_depth 的顶点路径矩阵;以及一个 num_paths x (max_depth-1) 的边(权重)路径矩阵,以及一个空的大小数组。注意:如果图是无权重的,边(权重)路径由
weight_t{1}
条目组成;- 返回值:
std::tuple<rmm::device_uvector<vertex_t>, rmm::device_uvector<weight_t>, rmm::device_uvector<index_t>> 填充或合并的 RW 路径的三元组;在合并情况下(默认),返回值包含每个路径对应的顶点和边权重,以及对应的路径大小。这旨在最大限度地减少传递给 Python 层的 DF 数量。此处“合并”的含义是,不同大小路径的 2D 数组表示为 1D 连续数组。在填充情况下,返回的是一个 num_paths x max_depth 的顶点路径矩阵;以及一个 num_paths x (max_depth-1) 的边(权重)路径矩阵,以及一个空的大小数组。注意:如果图是无权重的,边(权重)路径由
weight_t{1}
条目组成;
- template<typename vertex_t, typename edge_t, typename weight_t, bool multi_gpu>
std::tuple<rmm::device_uvector<vertex_t>, std::optional<rmm::device_uvector<weight_t>>> uniform_random_walks(raft::handle_t const &handle, raft::random::RngState &rng_state, graph_view_t<vertex_t, edge_t, false, multi_gpu> const &graph_view, std::optional<edge_property_view_t<edge_t, weight_t const*>> edge_weight_view, raft::device_span<vertex_t const> start_vertices, size_t max_length)#从起始源返回均匀随机游走,其中每条路径都有给定的最大长度。
.*
start_vertices
可以包含重复项,在这种情况下,每个实例将生成不同的随机游走。如果
edge_weight_view.has_value()
为 true,返回值包含边权重。如果edge_weight_view.has_value()
为 false,返回值将是 std::nullopt。
- 模板参数:
vertex_t – 顶点标识符的类型。需要是整数类型。
edge_t – 边标识符的类型。需要是整数类型。
weight_t – 边权重的类型。需要是浮点类型。
multi_gpu – 指示模板实例化是否应针对单 GPU (false) 的标志
- 参数:
handle – 用于封装资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)以运行图算法的 RAFT 句柄对象。
graph_view – 要操作的图视图
edge_weight_view – 包含
graph_view
边权重的可选视图对象。start_vertices – 定义起始顶点的设备 span
max_length – 随机游走的最大长度
seed – (可选,默认为系统时间),用于随机数生成的种子
- 返回值:
tuple 包含顶点的设备向量和边权重(如果
edge_weight_view.has_value()
为 true)
对于每个输入选择器,顶点向量中将有 (max_length+1) 个元素,其中包含起始顶点以及随机游走中的后续顶点。如果路径在达到 max_length 之前终止,则顶点将填充
invalid_vertex_id(对于有符号 vertex_t 为 -1,对于无符号 vertex_t 类型为 std::numeric_limits<vertex_t>::max())
对于每个输入选择器,权重向量中将有 max_length 个元素,其中包含路径中边的权重。如果路径在达到 max_length 之前终止,则后续边权重将设置为 weight_t{0}。
- template<typename vertex_t, typename edge_t, typename weight_t, bool multi_gpu>
std::tuple<rmm::device_uvector<vertex_t>, std::optional<rmm::device_uvector<weight_t>>> biased_random_walks(raft::handle_t const &handle, raft::random::RngState &rng_state, graph_view_t<vertex_t, edge_t, false, multi_gpu> const &graph_view, edge_property_view_t<edge_t, weight_t const*> edge_weight_view, raft::device_span<vertex_t const> start_vertices, size_t max_length)#从起始源返回偏向随机游走,其中每条路径都有给定的最大长度。
.*
下一个顶点根据边权重进行偏向。遍历出边的概率将是该边权重除以出边权重的总和。
start_vertices
可以包含重复项,在这种情况下,每个实例将生成不同的随机游走。
- 抛出:
cugraph::logic_error – 如果图是无权重的
- 模板参数:
vertex_t – 顶点标识符的类型。需要是整数类型。
edge_t – 边标识符的类型。需要是整数类型。
weight_t – 边权重的类型。需要是浮点类型。
multi_gpu – 指示模板实例化是否应针对单 GPU (false) 的标志
- 参数:
handle – 用于封装资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)以运行图算法的 RAFT 句柄对象。
graph_view – 要操作的图视图
edge_weight_view – 包含
graph_view
边权重的视图对象。start_vertices – 定义起始顶点的设备 span
max_length – 随机游走的最大长度
seed – (可选,默认为系统时间),用于随机数生成的种子
- 返回值:
tuple 包含顶点的设备向量和边权重
对于每个输入选择器,顶点向量中将有 (max_length+1) 个元素,其中包含起始顶点以及随机游走中的后续顶点。如果路径在达到 max_length 之前终止,则顶点将填充
invalid_vertex_id(对于有符号 vertex_t 为 -1,对于无符号 vertex_t 类型为 std::numeric_limits<vertex_t>::max())
对于每个输入选择器,权重向量中将有 max_length 个元素,其中包含路径中边的权重。如果路径在达到 max_length 之前终止,则后续边权重将设置为 weight_t{0}。
- template<typename vertex_t, typename edge_t, typename weight_t, bool multi_gpu>
std::tuple<rmm::device_uvector<vertex_t>, std::optional<rmm::device_uvector<weight_t>>> node2vec_random_walks(raft::handle_t const &handle, raft::random::RngState &rng_state, graph_view_t<vertex_t, edge_t, false, multi_gpu> const &graph_view, std::optional<edge_property_view_t<edge_t, weight_t const*>> edge_weight_view, raft::device_span<vertex_t const> start_vertices, size_t max_length, weight_t p, weight_t q)#从起始源返回具有 node2vec 偏向的随机游走,其中每条路径都有给定的最大长度。
.*
start_vertices
可以包含重复项,在这种情况下,每个实例将生成不同的随机游走。如果
edge_weight_view.has_value()
= true,返回值包含边权重,且 node2vec 计算将使用这些边权重。如果edge_weight_view.has_value()
== false,则返回值将不包含边权重,且 node2vec 计算将假定所有边的权重为 1。
- 模板参数:
vertex_t – 顶点标识符的类型。需要是整数类型。
edge_t – 边标识符的类型。需要是整数类型。
weight_t – 边权重的类型。需要是浮点类型。
multi_gpu – 指示模板实例化是否应针对单 GPU (false) 的标志
- 参数:
handle – 用于封装资源(例如 CUDA 流、通信器以及各种 CUDA 库的句柄)以运行图算法的 RAFT 句柄对象。
graph_view – 要操作的图视图
edge_weight_view – 包含
graph_view
边权重的可选视图对象。如果edge_weight_view.has_value()
== false,则假定边权重为 1.0。start_vertices – 定义起始顶点的设备 span
max_length – 随机游走的最大长度
p – node2vec 返回参数
q – node2vec 输入/输出参数
seed – (可选,默认为系统时间),用于随机数生成的种子
- 返回值:
tuple 包含顶点的设备向量和边权重
对于每个输入选择器,顶点向量中将有 (max_length+1) 个元素,其中包含起始顶点以及随机游走中的后续顶点。如果路径在达到 max_length 之前终止,则顶点将填充
invalid_vertex_id(对于有符号 vertex_t 为 -1,对于无符号 vertex_t 类型为 std::numeric_limits<vertex_t>::max())
对于每个输入选择器,权重向量中将有 max_length 个元素,其中包含路径中边的权重。如果路径在达到 max_length 之前终止,则后续边权重将设置为 weight_t{0}。