def test_filter_unreachable(graph_file, source): gc.collect() cu_M = utils.read_csv_file(graph_file) print("sources size = " + str(len(cu_M))) print("destinations size = " + str(len(cu_M))) # cugraph Pagerank Call G = cugraph.DiGraph() G.from_cudf_edgelist(cu_M, source="0", destination="1", edge_attr="2") print("cugraph Solving... ") t1 = time.time() df = cugraph.sssp(G, source) t2 = time.time() - t1 print("Time : " + str(t2)) reachable_df = cugraph.filter_unreachable(df) if np.issubdtype(df["distance"].dtype, np.integer): inf = np.iinfo(reachable_df["distance"].dtype).max # noqa: F841 assert len(reachable_df.query("distance == @inf")) == 0 elif np.issubdtype(df["distance"].dtype, np.inexact): inf = np.finfo(reachable_df["distance"].dtype).max # noqa: F841 assert len(reachable_df.query("distance == @inf")) == 0 assert len(reachable_df) != 0
def get_shortest_dists(self, poi: namedtuple) -> None: """ Use `cugraph.sssp` to calculate shortest paths from POI to postcodes First subsets road graph, then finds shortest paths, ensuring all paths are routed that are known to be important to each POI. Saves to `hdf` to allow restarts. Parameters ---------- poi : namedtuple Single POI created from `df.itertuples()` """ if self.buffer: self.graph = self.create_sub_graph(poi=poi) shortest_paths: cudf.DataFrame = cugraph.filter_unreachable( cugraph.sssp(self.graph, source=poi.node_id)) pc_dist = shortest_paths[shortest_paths.vertex.isin(self.postcode_ids)] self.idx += 1 pc_dist["idx"] = self.idx if self.log_file.exists(): self.distances = cudf.read_csv(self.log_file).append(pc_dist) else: self.distances = pc_dist[["vertex", "distance", "idx"]] self.distances = (self.distances.sort_values( "distance").drop_duplicates("vertex").reset_index()[[ "vertex", "distance", "idx" ]]) self.distances.to_csv(self.log_file, index=False)
def test_filter_unreachable(managed, pool, graph_file, source): gc.collect() rmm.finalize() rmm_config.use_managed_memory = managed rmm_config.use_pool_allocator = pool rmm_config.initial_pool_size = 2 << 27 rmm.initialize() assert(rmm.is_initialized()) cu_M = utils.read_csv_file(graph_file) # Device data sources = cu_M['0'] destinations = cu_M['1'] print('sources size = ' + str(len(sources))) print('destinations size = ' + str(len(destinations))) # cugraph Pagerank Call G = cugraph.Graph() G.add_edge_list(sources, destinations) print('cugraph Solving... ') t1 = time.time() df = cugraph.sssp(G, source) t2 = time.time() - t1 print('Time : '+str(t2)) reachable_df = cugraph.filter_unreachable(df) if(np.issubdtype(df['distance'].dtype, np.integer)): inf = np.iinfo(reachable_df['distance'].dtype).max # noqa: F841 assert len(reachable_df.query("distance == @inf")) == 0 elif(np.issubdtype(df['distance'].dtype, np.inexact)): inf = np.finfo(reachable_df['distance'].dtype).max # noqa: F841 assert len(reachable_df.query("distance == @inf")) == 0 assert len(reachable_df) != 0
def test_filter_unreachable(managed, pool, graph_file, source): gc.collect() rmm.reinitialize( managed_memory=managed, pool_allocator=pool, initial_pool_size=2 << 27 ) assert(rmm.is_initialized()) cu_M = utils.read_csv_file(graph_file) print('sources size = ' + str(len(cu_M))) print('destinations size = ' + str(len(cu_M))) # cugraph Pagerank Call G = cugraph.DiGraph() G.from_cudf_edgelist(cu_M, source='0', destination='1', edge_attr='2') print('cugraph Solving... ') t1 = time.time() df = cugraph.sssp(G, source) t2 = time.time() - t1 print('Time : '+str(t2)) reachable_df = cugraph.filter_unreachable(df) if(np.issubdtype(df['distance'].dtype, np.integer)): inf = np.iinfo(reachable_df['distance'].dtype).max # noqa: F841 assert len(reachable_df.query("distance == @inf")) == 0 elif(np.issubdtype(df['distance'].dtype, np.inexact)): inf = np.finfo(reachable_df['distance'].dtype).max # noqa: F841 assert len(reachable_df.query("distance == @inf")) == 0 assert len(reachable_df) != 0