We have introduced a new RPacketLastInteractionTracker class to keep track of the last interaction of a RPacket.
As a result of the tracker restructuring, the peak memory usage has been reduced from 4 GB to approximately 1 GB.
Before Restructure
After Restructure
We also added detailed boundary interaction to the RPacketTracker, the structure of which looks like
event_id
is the interaction number, current_shell_id
is the previous boundary, and next_shell_id
is the shell id to which the packet moved
We also researched a lot about Numba. Some of the things included using dynamic variables inside Numba using approaches like overload, branch pruning, etc., if you are interested about it, here are some toy code.
Also, we made sure to create lots of tests and benchmarks to ensure that the trackers are working at their best.
The detailed report for the GSoC project is available here.