跳转到主要内容

cugraph为NetworkX的后端

项目描述

nx-cugraph

描述

RAPIDS nx-cugraph是NetworkX的后端,用于使用GPU加速运行支持的算法。

系统要求

nx-cugraph需要以下条件

  • NVIDIA GPU,Volta架构或更高版本,具有计算能力 7.0+
  • CUDA 11.2, 11.4, 11.5, 11.8, 或 12.0
  • Python版本3.9, 3.10, 或 3.11
  • NetworkX >= 版本3.0(建议使用版本3.2或更高版本)

有关系统要求的更多详细信息,请参阅RAPIDS系统要求文档

安装

nx-cugraph可以使用conda或pip进行安装。

conda

最新夜间版本

conda install -c rapidsai-nightly -c conda-forge -c nvidia nx-cugraph

最新稳定版本

conda install -c rapidsai -c conda-forge -c nvidia nx-cugraph

pip

最新夜间版本

python -m pip install nx-cugraph-cu11 --extra-index-url https://pypi.anaconda.org/rapidsai-wheels-nightly/simple

最新稳定版本

python -m pip install nx-cugraph-cu11 --extra-index-url https://pypi.nvidia.com

备注

  • 上面的pip示例安装了CUDA 11。要安装CUDA 12,请将-cu11替换为-cu12
  • 有关安装任何RAPIDS包的相关信息,请参阅此处

启用nx-cugraph

如果使用以下任何一项,NetworkX将使用nx-cugraph作为图分析后端

NETWORKX_AUTOMATIC_BACKENDS环境变量。

可以通过设置环境变量 NETWORKX_AUTOMATIC_BACKENDS 来让 NetworkX 自动将调用支持的后端 API 分发到指定的后端。设置 NETWORKX_AUTOMATIC_BACKENDS=cugraph 以使用 nx-cugraph 并无代码更改地 GPU 加速支持的所有 API。示例

bash> NETWORKX_AUTOMATIC_BACKENDS=cugraph python my_networkx_script.py

backend= 关键字参数

要显式指定 API 的特定后端,请使用 backend= 关键字参数。此参数优先于环境变量 NETWORKX_AUTOMATIC_BACKENDS。这要求运行使用 backend= 关键字参数的代码的用户安装指定的后端。

示例

nx.betweenness_centrality(cit_patents_graph, k=k, backend="cugraph")

基于类型的分发

NetworkX 还支持自动将特定图类型关联的后端分发到后端。就像上面的 backend= 关键字参数示例一样,这需要用户为特定后端编写代码,因此需要安装后端,但具有确保特定行为而无需运行时转换的优势。

要使用 nx-cugraph 的基于类型的分发,用户必须在他们的代码中直接导入后端,以访问为创建 nx-cugraph 后端特定图实例提供的实用程序。

示例

import networkx as nx
import nx_cugraph as nxcg

G = nx.Graph()
...
nxcg_G = nxcg.from_networkx(G)             # conversion happens once here
nx.betweenness_centrality(nxcg_G, k=1000)  # nxcg Graph type causes cugraph backend
                                           # to be used, no conversion necessary

支持算法

nx-cugraph 后端将 NetworkX 连接到 pylibcugraph(cuGraph 到其基于 CUDA 的图分析库的底层 Python 接口)和 CuPy(一个 GPU 加速的数组库),并使用 NetworkX 熟悉且易于使用的 API。

以下是 nx-cugraph 当前支持的算法列表。

算法

bipartite
 └─ generators
     └─ complete_bipartite_graph
centrality
 ├─ betweenness
 │   ├─ betweenness_centrality
 │   └─ edge_betweenness_centrality
 ├─ degree_alg
 │   ├─ degree_centrality
 │   ├─ in_degree_centrality
 │   └─ out_degree_centrality
 ├─ eigenvector
 │   └─ eigenvector_centrality
 └─ katz
     └─ katz_centrality
cluster
 ├─ average_clustering
 ├─ clustering
 ├─ transitivity
 └─ triangles
community
 └─ louvain
     └─ louvain_communities
components
 ├─ connected
 │   ├─ connected_components
 │   ├─ is_connected
 │   ├─ node_connected_component
 │   └─ number_connected_components
 └─ weakly_connected
     ├─ is_weakly_connected
     ├─ number_weakly_connected_components
     └─ weakly_connected_components
core
 ├─ core_number
 └─ k_truss
dag
 ├─ ancestors
 └─ descendants
isolate
 ├─ is_isolate
 ├─ isolates
 └─ number_of_isolates
link_analysis
 ├─ hits_alg
 │   └─ hits
 └─ pagerank_alg
     └─ pagerank
operators
 └─ unary
     ├─ complement
     └─ reverse
reciprocity
 ├─ overall_reciprocity
 └─ reciprocity
shortest_paths
 ├─ generic
 │   ├─ has_path
 │   ├─ shortest_path
 │   └─ shortest_path_length
 ├─ unweighted
 │   ├─ all_pairs_shortest_path
 │   ├─ all_pairs_shortest_path_length
 │   ├─ bidirectional_shortest_path
 │   ├─ single_source_shortest_path
 │   ├─ single_source_shortest_path_length
 │   ├─ single_target_shortest_path
 │   └─ single_target_shortest_path_length
 └─ weighted
     ├─ all_pairs_bellman_ford_path
     ├─ all_pairs_bellman_ford_path_length
     ├─ all_pairs_dijkstra
     ├─ all_pairs_dijkstra_path
     ├─ all_pairs_dijkstra_path_length
     ├─ bellman_ford_path
     ├─ bellman_ford_path_length
     ├─ dijkstra_path
     ├─ dijkstra_path_length
     ├─ single_source_bellman_ford
     ├─ single_source_bellman_ford_path
     ├─ single_source_bellman_ford_path_length
     ├─ single_source_dijkstra
     ├─ single_source_dijkstra_path
     └─ single_source_dijkstra_path_length
traversal
 └─ breadth_first_search
     ├─ bfs_edges
     ├─ bfs_layers
     ├─ bfs_predecessors
     ├─ bfs_successors
     ├─ bfs_tree
     ├─ descendants_at_distance
     └─ generic_bfs_edges
tree
 └─ recognition
     ├─ is_arborescence
     ├─ is_branching
     ├─ is_forest
     └─ is_tree

生成器

classic
 ├─ barbell_graph
 ├─ circular_ladder_graph
 ├─ complete_graph
 ├─ complete_multipartite_graph
 ├─ cycle_graph
 ├─ empty_graph
 ├─ ladder_graph
 ├─ lollipop_graph
 ├─ null_graph
 ├─ path_graph
 ├─ star_graph
 ├─ tadpole_graph
 ├─ trivial_graph
 ├─ turan_graph
 └─ wheel_graph
community
 └─ caveman_graph
ego
 └─ ego_graph
small
 ├─ bull_graph
 ├─ chvatal_graph
 ├─ cubical_graph
 ├─ desargues_graph
 ├─ diamond_graph
 ├─ dodecahedral_graph
 ├─ frucht_graph
 ├─ heawood_graph
 ├─ house_graph
 ├─ house_x_graph
 ├─ icosahedral_graph
 ├─ krackhardt_kite_graph
 ├─ moebius_kantor_graph
 ├─ octahedral_graph
 ├─ pappus_graph
 ├─ petersen_graph
 ├─ sedgewick_maze_graph
 ├─ tetrahedral_graph
 ├─ truncated_cube_graph
 ├─ truncated_tetrahedron_graph
 └─ tutte_graph
social
 ├─ davis_southern_women_graph
 ├─ florentine_families_graph
 ├─ karate_club_graph
 └─ les_miserables_graph

其他

classes
 └─ function
     └─ is_negatively_weighted
convert
 ├─ from_dict_of_lists
 └─ to_dict_of_lists
convert_matrix
 ├─ from_pandas_edgelist
 └─ from_scipy_sparse_array
relabel
 ├─ convert_node_labels_to_integers
 └─ relabel_nodes

要请求 nx-cugraph 后端对未列出的 NetworkX API 的支持,请访问 cuGraph GitHub 仓库

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

nx_cugraph_cu11-24.8.0.tar.gz (5.1 kB 查看散列)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面