Projections: Particle Exercise (Extension)

For this exercise, continue by building upon your work for the previous exercise. You will now work to enable dynamic migration so Charm++ balancers can actually move work around.

  1. Implement PUP serialization for your chare array as documented.
  2. At appropriate intervals, call AtSync() so the runtime knows the chare is ready for potential migration.
  3. Select a load-balancing strategy. For this exercise we will use GreedyRefineLB (use option -balancer GreedyRefineLB).
  4. Re-run the application as in Part 1 and compare how the program behaves differently.