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的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | fc21499f576b4a4e15b46aaf2f50fcad04d99f982c4903b60e2a49bbefe27fc8 |
|
MD5 | ac0850462cc51a6fd130153951e2eb03 |
|
BLAKE2b-256 | a4f1628ebe37797961df7499ffa0eadac8579217e87f00a1e484b78605146c71 |