【发布时间】:2022-01-08 12:33:48
【问题描述】:
我正在尝试获取 APSP(所有对短路径)之类的节点列表,并希望使用 rapids cugraph 进行 GPU 加速。 进行了一些研究并创建了这个正在运行但速度很慢的脚本。我想我做错了迭代,可能有更好的方法可以更快地达到相同的结果。我走错路了吗?谢谢!
import sqlalchemy
import cugraph
import cudf
import pandas as pd
from datetime import datetime
s_time = datetime.now()
engine = sqlalchemy.create_engine('postgresql://postgres:xxxxxxx@localhost:5432/postgres')
sql = "select id, source, target, cost, geom from xxx.roads_noded"
rc = "select source, target from xxx.routin_candidates"
df = pd.read_sql(sql, engine)
rcdf = pd.read_sql(rc, engine)
cuda_g = cudf.DataFrame.from_pandas(df)
cuda_nc = cudf.DataFrame.from_pandas(rcdf)
G = cugraph.Graph()
G.from_cudf_edgelist(cuda_g, source='source', destination='target', edge_attr='cost')
for index, row in cuda_nc.to_pandas().iterrows():
src = row['source']
dest = row['target']
routes = cugraph.sssp(G, src)
for index, row in routes.to_pandas().iterrows():
v = int(row['vertex'])
if v == dest:
p = cugraph.utils.get_traversed_path_list(routes, v)
autoroute = p[::-1]
print(autoroute)
e_time = datetime.now()
print('Duration: {}'.format(e_time - s_time))
【问题讨论】:
标签: routes gpu shortest-path hardware-acceleration rapids