We have introduced a new RPacketLastInteractionTracker class to keep track of the last interaction of a RPacket.

Image

As a result of the tracker restructuring, the peak memory usage has been reduced from 4 GB to approximately 1 GB.

Before Restructure

Image

After Restructure

Image

We also added detailed boundary interaction to the RPacketTracker, the structure of which looks like

Image

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.