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 散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | d6ee0c90f0effec64de5659ed46cf1ddeba7e89004eb2be4157865ab61b88e14 |
|
MD5 | 093d0962786457b0f13f75fd7d42fe1c |
|
BLAKE2b-256 | 0abc7e195d0c09bd769f5fb7e6e26920445bc72a98666064859c24e9c1e01a79 |