采样#

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}。