跳转到主要内容

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环境变量可用于在调用后端支持的API时自动将NetworkX调度到指定的后端。将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后端特定Graph实例的实用程序。

示例

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后端将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_cu12-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 状态页面