Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance issues with large graphs #6

Open
jameshanlon opened this issue Jul 26, 2021 · 0 comments
Open

Performance issues with large graphs #6

jameshanlon opened this issue Jul 26, 2021 · 0 comments
Labels
enhancement New feature or request

Comments

@jameshanlon
Copy link
Owner

jameshanlon commented Jul 26, 2021

Some recent work looking at the performance of 'path exists' queries shows that the runtime of netlist-paths falls behind Fusion Compiler in large designs. See the following results, where at <= 256 nodes performance is better but >256 nodes performance is worse:

Screenshot 2021-07-24 at 17 21 53

In each test the netlist is loaded once, and a path exists query is performed for each node.

The following table shows the time to execute the query is linearly related to the number of vertices:

Screenshot 2021-07-24 at 19 45 41

The code that is timed in the above table:

waypoint = py_netlist_paths.Waypoints(egr_port, ing_port)
path_exists = netlist.path_exists(waypoint)

Using valgrind --tool=callgrind to profile the execution of netlist-paths highlights the following:

  • 55% Boost DFS.
  • 25% Waypoints and vertex search.

The first may be explained by the boost::graph algorithm incurring overheads for being a libary routine, and there being potential for optimisations specific to the netlist-paths use case.

The second is due mainly to there being a loop over all vertices in the graph.

Callgrind output:
callgrind.out.8165.txt

@jameshanlon jameshanlon added the enhancement New feature or request label Jul 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant