相似性#

template<typename VT, typename ET, typename WT>
void jaccard(legacy::GraphCSRView<VT, ET, WT> const &graph, WT const *weights, WT *result)#

计算所有顶点的 Jaccard 相似性系数。

计算图中每对通过边连接的顶点的 Jaccard 相似性系数。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • VT – 顶点标识符类型。支持的值:int (有符号, 32 位)

  • ET – 边标识符类型。支持的值:int (有符号, 32 位)

  • WT – 边权重类型。支持的值:float 或 double。

参数:
  • graph[in] 输入图对象

  • weights[in] 加权 Jaccard 的输入顶点权重设备指针,对于无权 Jaccard 可为 NULL。

  • result[out] 结果值的设备指针,需要由调用者预先分配内存

template<typename VT, typename ET, typename WT>
void jaccard_list(legacy::GraphCSRView<VT, ET, WT> const &graph, WT const *weights, ET num_pairs, VT const *first, VT const *second, WT *result)#

计算选定顶点对的 Jaccard 相似性系数。

计算每对指定顶点的 Jaccard 相似性系数。顶点指定为对,其中 pair[n] = (first[n], second[n])

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • VT – 顶点标识符类型。支持的值:int (有符号, 32 位)

  • ET – 边标识符类型。支持的值:int (有符号, 32 位)

  • WT – 边权重类型。支持的值:float 或 double。

参数:
  • graph[in] 输入图对象

  • weights[in] 加权 Jaccard 的输入顶点权重,对于无权 Jaccard 可为 NULL。

  • num_pairs[in] 指定的顶点 ID 对的数量

  • first[in] 每对中第一个顶点 ID 的设备指针

  • second[in] 每对中第二个顶点 ID 的设备指针

  • result[out] 结果值的设备指针,需要由调用者预先分配内存

template<typename VT, typename ET, typename WT>
void overlap(legacy::GraphCSRView<VT, ET, WT> const &graph, WT const *weights, WT *result)#

计算图中所有顶点的 Overlap 系数。

计算图中每对通过边连接的顶点的 Overlap 系数。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • VT – 顶点标识符类型。支持的值:int (有符号, 32 位)

  • ET – 边标识符类型。支持的值:int (有符号, 32 位)

  • WT – 边权重类型。支持的值:float 或 double。

参数:
  • graph[in] 输入图对象

  • weights[in] 加权 overlap 的输入顶点权重设备指针,对于无权 overlap 可为 NULL。

  • result[out] 结果值的设备指针,需要由调用者预先分配内存

template<typename VT, typename ET, typename WT>
void overlap_list(legacy::GraphCSRView<VT, ET, WT> const &graph, WT const *weights, ET num_pairs, VT const *first, VT const *second, WT *result)#

计算选定顶点对的 overlap 系数。

计算每对指定顶点的 overlap 系数。顶点指定为对,其中 pair[n] = (first[n], second[n])

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • VT – 顶点标识符类型。支持的值:int (有符号, 32 位)

  • ET – 边标识符类型。支持的值:int (有符号, 32 位)

  • WT – 边权重类型。支持的值:float 或 double。

参数:
  • graph[in] 输入图对象

  • weights[in] 加权 overlap 的输入顶点权重设备指针,对于无权 overlap 可为 NULL。

  • num_pairs[in] 指定的顶点 ID 对的数量

  • first[in] 每对中第一个顶点 ID 的设备指针

  • second[in] 每对中第二个顶点 ID 的设备指针

  • result[out] 结果值的设备指针,需要由调用者预先分配内存

template<typename vertex_t, typename edge_t, typename weight_t, bool multi_gpu>
rmm::device_uvector<weight_t> jaccard_coefficients(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, std::tuple<raft::device_span<vertex_t const>, raft::device_span<vertex_t const>> vertex_pairs, bool do_expensive_check = false)#

计算 Jaccard 相似性系数。

.*

对指定的每对顶点计算相似性。请注意,相似性算法期望对称图。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • vertex_t – 顶点标识符类型。需要是整数类型。

  • edge_t – 边标识符类型。需要是整数类型。

  • weight_t – 边权重类型。需要是浮点类型。

  • multi_gpu – 标志,指示模板实例化应针对单 GPU (false)

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

  • graph_view – 图视图对象。

  • edge_weight_view – 可选视图对象,包含 graph_view 的边权重。如果 edge_weight_view.has_value() == true,则使用与图相关的权重。如果为 false,则假设所有边的权重为 1。

  • vertex_pairs – 定义要计算相似性的顶点对的设备跨度元组。在多 GPU 环境中,每个顶点对应该位于此 GPU 本地。

  • do_expensive_check – 一个标志,用于对输入参数运行昂贵的检查(如果设置为 true)。

返回:

对应 vertex_pairs 的相似性系数

template<typename vertex_t, typename edge_t, typename weight_t, bool multi_gpu>
rmm::device_uvector<weight_t> cosine_similarity_coefficients(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, std::tuple<raft::device_span<vertex_t const>, raft::device_span<vertex_t const>> vertex_pairs, bool do_expensive_check = false)#

计算余弦相似性系数。

.*

对指定的每对顶点计算相似性。请注意,相似性算法期望对称图。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • vertex_t – 顶点标识符类型。需要是整数类型。

  • edge_t – 边标识符类型。需要是整数类型。

  • weight_t – 边权重类型。需要是浮点类型。

  • multi_gpu – 标志,指示模板实例化应针对单 GPU (false)

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

  • graph_view – 图视图对象。

  • edge_weight_view – 可选视图对象,包含 graph_view 的边权重。如果 edge_weight_view.has_value() == true,则使用与图相关的权重。如果为 false,则假设所有边的权重为 1。

  • vertex_pairs – 定义要计算相似性的顶点对的设备跨度元组。在多 GPU 环境中,每个顶点对应该位于此 GPU 本地。

  • do_expensive_check – 一个标志,用于对输入参数运行昂贵的检查(如果设置为 true)。

返回:

对应 vertex_pairs 的相似性系数

template<typename vertex_t, typename edge_t, typename weight_t, bool multi_gpu>
rmm::device_uvector<weight_t> sorensen_coefficients(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, std::tuple<raft::device_span<vertex_t const>, raft::device_span<vertex_t const>> vertex_pairs, bool do_expensive_check = false)#

计算 Sorensen 相似性系数。

.*

对指定的每对顶点计算相似性。请注意,相似性算法期望对称图。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • vertex_t – 顶点标识符类型。需要是整数类型。

  • edge_t – 边标识符类型。需要是整数类型。

  • weight_t – 边权重类型。需要是浮点类型。

  • multi_gpu – 标志,指示模板实例化应针对单 GPU (false)

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

  • graph_view – 图视图对象。

  • edge_weight_view – 可选视图对象,包含 graph_view 的边权重。如果 edge_weight_view.has_value() == true,则使用与图相关的权重。如果为 false,则假设所有边的权重为 1。

  • vertex_pairs – 定义要计算相似性的顶点对的设备跨度元组

  • vertex_pairs – 定义要计算相似性的顶点对的设备跨度元组。在多 GPU 环境中,每个顶点对应该位于此 GPU 本地。

  • do_expensive_check – 一个标志,用于对输入参数运行昂贵的检查(如果设置为 true)。

返回:

对应 vertex_pairs 的相似性系数

template<typename vertex_t, typename edge_t, typename weight_t, bool multi_gpu>
rmm::device_uvector<weight_t> overlap_coefficients(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, std::tuple<raft::device_span<vertex_t const>, raft::device_span<vertex_t const>> vertex_pairs, bool do_expensive_check = false)#

计算重叠相似系数。

.*

对指定的每对顶点计算相似性。请注意,相似性算法期望对称图。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • vertex_t – 顶点标识符类型。需要是整数类型。

  • edge_t – 边标识符类型。需要是整数类型。

  • weight_t – 边权重类型。需要是浮点类型。

  • multi_gpu – 标志,指示模板实例化应针对单 GPU (false)

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

  • graph_view – 图视图对象。

  • edge_weight_view – 可选视图对象,包含 graph_view 的边权重。如果 edge_weight_view.has_value() == true,则使用与图相关的权重。如果为 false,则假设所有边的权重为 1。

  • vertex_pairs – 定义要计算相似性的顶点对的设备跨度元组

  • vertex_pairs – 定义要计算相似性的顶点对的设备跨度元组。在多 GPU 环境中,每个顶点对应该位于此 GPU 本地。

  • do_expensive_check – 一个标志,用于对输入参数运行昂贵的检查(如果设置为 true)。

返回:

对应 vertex_pairs 的相似性系数

template<typename vertex_t, typename edge_t, typename weight_t, bool multi_gpu>
计算 overlap 相似性系数。

计算 Jaccard 所有对相似性系数。

.*

计算所有顶点对的相似性。请注意,在稀疏图中,许多顶点对的得分将为零。实际上,我们只计算图中两跳邻居顶点的相似性,因为非两跳邻居顶点的得分将为 0。

如果指定了 vertices,我们将计算 vertices 的两跳邻居的相似性。如果未指定 vertices,它将计算图中所有两跳邻居的相似性。

如果指定了 topk,则只返回得分最高的 topk 对顶点,如果未指定,则返回所有计算出的顶点对的得分。

请注意,整个图中的两跳邻居列表可能包含大量顶点对。如果图足够稠密,它可能大到顶点数的平方,这可能会导致内存不足。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • vertex_t – 顶点标识符类型。需要是整数类型。

  • edge_t – 边标识符类型。需要是整数类型。

  • weight_t – 边权重类型。需要是浮点类型。

  • multi_gpu – 标志,指示模板实例化应针对单 GPU (false)

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

  • graph_view – 图视图对象。

  • edge_weight_view – 可选视图对象,包含 graph_view 的边权重。如果 edge_weight_view.has_value() == true,则使用与图相关的权重。如果为 false,则假设所有边的权重为 1。

  • vertices – 可选的设备跨度,定义种子顶点。在多 GPU 环境中,顶点应该位于此 GPU 本地。

  • topk – 可选参数,指定应返回得分最高的顶点对的数量

  • do_expensive_check – 一个标志,用于对输入参数运行昂贵的检查(如果设置为 true)。

返回:

包含三个同等长度的设备向量 (v1, v2, score) 的元组。向量中的对应元素标识一个结果,v1 标识图中的一个顶点,v2 标识 v1 的一个两跳邻居,score 标识 v1 和 v2 之间的相似性得分。如果指定了 topk,则向量的长度不超过 topk 个元素。在多 GPU 环境中,如果指定了 topk,则所有结果将在 GPU 秩 0 上返回,否则将在顶点 v1 的本地 GPU 上返回。

template<typename vertex_t, typename edge_t, typename weight_t, bool multi_gpu>
std::tuple<rmm::device_uvector<vertex_t>, rmm::device_uvector<vertex_t>, rmm::device_uvector<weight_t>> cosine_similarity_all_pairs_coefficients(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, std::optional<raft::device_span<vertex_t const>> vertices, std::optional<size_t> topk, bool do_expensive_check = false)#

计算余弦所有对相似性系数。

.*

计算所有顶点对的相似性。请注意,在稀疏图中,许多顶点对的得分将为零。实际上,我们只计算图中两跳邻居顶点的相似性,因为非两跳邻居顶点的得分将为 0。

如果指定了 vertices,我们将计算 vertices 的两跳邻居的相似性。如果未指定 vertices,它将计算图中所有两跳邻居的相似性。

如果指定了 topk,则只返回得分最高的 topk 对顶点,如果未指定,则返回所有计算出的顶点对的得分。

请注意,整个图中的两跳邻居列表可能包含大量顶点对。如果图足够稠密,它可能大到顶点数的平方,这可能会导致内存不足。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • vertex_t – 顶点标识符类型。需要是整数类型。

  • edge_t – 边标识符类型。需要是整数类型。

  • weight_t – 边权重类型。需要是浮点类型。

  • multi_gpu – 标志,指示模板实例化应针对单 GPU (false)

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

  • graph_view – 图视图对象。

  • edge_weight_view – 可选视图对象,包含 graph_view 的边权重。如果 edge_weight_view.has_value() == true,则使用与图相关的权重。如果为 false,则假设所有边的权重为 1。

  • vertices – 可选的设备跨度,定义种子顶点。在多 GPU 环境中,顶点应该位于此 GPU 本地。

  • topk – 可选参数,指定应返回得分最高的顶点对的数量

  • do_expensive_check – 一个标志,用于对输入参数运行昂贵的检查(如果设置为 true)。

返回:

包含三个同等长度的设备向量 (v1, v2, score) 的元组。向量中的对应元素标识一个结果,v1 标识图中的一个顶点,v2 标识 v1 的一个两跳邻居,score 标识 v1 和 v2 之间的相似性得分。如果指定了 topk,则向量的长度不超过 topk 个元素。在多 GPU 环境中,如果指定了 topk,则所有结果将在 GPU 秩 0 上返回,否则将在顶点 v1 的本地 GPU 上返回。

template<typename vertex_t, typename edge_t, typename weight_t, bool multi_gpu>
std::tuple<rmm::device_uvector<vertex_t>, rmm::device_uvector<vertex_t>, rmm::device_uvector<weight_t>> sorensen_all_pairs_coefficients(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, std::optional<raft::device_span<vertex_t const>> vertices, std::optional<size_t> topk, bool do_expensive_check = false)#

计算 Sorensen 相似性系数。

.*

计算所有顶点对的相似性。请注意,在稀疏图中,许多顶点对的得分将为零。实际上,我们只计算图中两跳邻居顶点的相似性,因为非两跳邻居顶点的得分将为 0。

如果指定了 vertices,我们将计算 vertices 的两跳邻居的相似性。如果未指定 vertices,它将计算图中所有两跳邻居的相似性。

如果指定了 topk,则只返回得分最高的 topk 对顶点,如果未指定,则返回所有计算出的顶点对的得分。

请注意,整个图中的两跳邻居列表可能包含大量顶点对。如果图足够稠密,它可能大到顶点数的平方,这可能会导致内存不足。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • vertex_t – 顶点标识符类型。需要是整数类型。

  • edge_t – 边标识符类型。需要是整数类型。

  • weight_t – 边权重类型。需要是浮点类型。

  • multi_gpu – 标志,指示模板实例化应针对单 GPU (false)

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

  • graph_view – 图视图对象。

  • edge_weight_view – 可选视图对象,包含 graph_view 的边权重。如果 edge_weight_view.has_value() == true,则使用与图相关的权重。如果为 false,则假设所有边的权重为 1。

  • vertices – 可选的设备跨度,定义种子顶点。

  • topk – 可选参数,指定应返回得分最高的顶点对的数量

  • do_expensive_check – 一个标志,用于对输入参数运行昂贵的检查(如果设置为 true)。

返回:

包含三个同等长度的设备向量 (v1, v2, score) 的元组。向量中的对应元素标识一个结果,v1 标识图中的一个顶点,v2 标识 v1 的一个两跳邻居,score 标识 v1 和 v2 之间的相似性得分。如果指定了 topk,则向量的长度不超过 topk 个元素。在多 GPU 环境中,如果指定了 topk,则所有结果将在 GPU 秩 0 上返回,否则将在顶点 v1 的本地 GPU 上返回。

template<typename vertex_t, typename edge_t, typename weight_t, bool multi_gpu>
std::tuple<rmm::device_uvector<vertex_t>, rmm::device_uvector<vertex_t>, rmm::device_uvector<weight_t>> overlap_all_pairs_coefficients(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, std::optional<raft::device_span<vertex_t const>> vertices, std::optional<size_t> topk, bool do_expensive_check = false)#

计算重叠相似系数。

.*

计算所有顶点对的相似性。请注意,在稀疏图中,许多顶点对的得分将为零。实际上,我们只计算图中两跳邻居顶点的相似性,因为非两跳邻居顶点的得分将为 0。

如果指定了 vertices,我们将计算 vertices 的两跳邻居的相似性。如果未指定 vertices,它将计算图中所有两跳邻居的相似性。

如果指定了 topk,则只返回得分最高的 topk 对顶点,如果未指定,则返回所有计算出的顶点对的得分。

请注意,整个图中的两跳邻居列表可能包含大量顶点对。如果图足够稠密,它可能大到顶点数的平方,这可能会导致内存不足。

抛出:

cugraph::logic_error – 发生错误时。

模板参数:
  • vertex_t – 顶点标识符类型。需要是整数类型。

  • edge_t – 边标识符类型。需要是整数类型。

  • weight_t – 边权重类型。需要是浮点类型。

  • multi_gpu – 标志,指示模板实例化应针对单 GPU (false)

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

  • graph_view – 图视图对象。

  • edge_weight_view – 可选视图对象,包含 graph_view 的边权重。如果 edge_weight_view.has_value() == true,则使用与图相关的权重。如果为 false,则假设所有边的权重为 1。

  • vertices – 可选的设备跨度,定义种子顶点。

  • topk – 可选参数,指定应返回得分最高的顶点对的数量

  • do_expensive_check – 一个标志,用于对输入参数运行昂贵的检查(如果设置为 true)。

返回:

包含三个同等长度的设备向量 (v1, v2, score) 的元组。向量中的对应元素标识一个结果,v1 标识图中的一个顶点,v2 标识 v1 的一个两跳邻居,score 标识 v1 和 v2 之间的相似性得分。如果指定了 topk,则向量的长度不超过 topk 个元素。在多 GPU 环境中,如果指定了 topk,则所有结果将在 GPU 秩 0 上返回,否则将在顶点 v1 的本地 GPU 上返回。