-
Notifications
You must be signed in to change notification settings - Fork 2
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
Change memory of graphs from vector<vector<node_t>> to views on flat memory CSR #18
Comments
The first iteration will simple change neighbours_t from I will support both
This is done using the following data:
Methods will be added to convert between rectangular-sparse and CSR. |
TODO: How to make sensible constructors, when not allowed to allocate memory?
Obstacle to solve: All current constructors (from spirals, transforms, etc.) rely on being able to allocate memory. Idea for solving this without introducing a huge cascade of rewriting:
|
Major rewrite.
Want to use the fullerene graph library together with SYCL code and full isomer-space code / collections of graphs, allocated on flat memory. Three issues: 1) vector<vector<node_t>> forces many allocations/deallocations, becomes a problem when we're aiming at nanosecond-range processing per graph; 2) std::vector does not allow wrapping existing memory (allocated from outside), so we can't just overlay the functionality on contiguous memory allocated for graph collections such as the IsomerBatches; and 3) code using any heap allocated memory cannot be used in GPU kernels, so std::vector needs to be culled completely also for that reason.
Want:
Pt. (1) will be implemented using std::span, forcing shift to C++20. Hence, from now on, C++20 features will become fair game.
The text was updated successfully, but these errors were encountered: