Charades
Todo List
Module API for ROSS
A lot of this should be removed
File charades.h
Get rid of/move the other random declarations and defines as needed.
Member clear_globals ()
Can these just be initialized at declaration? Especially if they are all moved to more appropriate modules.
Member g_tw_rng_default
documentation needed
File globals.C
Many of these variables really belong to specific modules, and can also be made non-global.
Member Globals::abort_event
Is this the best place to store this?
Member Globals::avl_list_head

Can this go in the LP class for smaller hash tables?

Can this be changed to an unordered_map?

Member Globals::event_buffer
Can probably be moved to scheduler, which will handle event allocation and management.
Member Globals::g_last_gvt
This should be moved to GVT base class probably
Module GVT stats
Move these to the GVT controllers and add more
Class LPChare

See if moving the AVL tree from the scheduler to here would be feasible and not mess up performance.

Converting AVL tree to an STL type or an array based structure would make migration way simpler.

Member LPChare::all_events
should this be move to the LP level?
Member LPChare::isOptimistic
Should the LP class be specialised based on sync protocol as well?
Member LPChare::LPChare ()
Remove this if we no longer need a global lp proxy
Member LPChare::recv_anti_event (RemoteEvent *event)
This might not be needed once CD is no longer used for GVT
Member LPChare::recv_local_event (Event *e)
Locally sent events can't cause violations so this should be moved to the remote handler.
Member LPChare::scheduler
Should the LP class be specialized based on sync protocol as well?
Member LPChare::stop_scheduler ()
This should be moved to a standalone function at least and maybe even stored in a global CkCallback variable.
Member lps
Re-evaluate need for global/readonly proxies with the new arch
Class LPToken
Shouldn't this just be defined as a node in the data structure?
Member LPToken::LPToken ()
should this be disabled?
Class MemUsage
is this even used?
Module Migration methods
Some changes to events should be made to simplify/unify pupping
File statistics.h

More modular statistics

  • A top level composite statistics class
  • Smaller stats modules for things like scheduler, GVT, etc.
  • Modules register with the top level class

LP level statistics/tracing

  • Related to above, could be a module, however there would be one per LP
  • Tracing would require some added functionality to Projections

Better stats tracing

  • Probably subclass or composite pattern to make logging self-contained
  • Calling log() would dump current stats to file, and accumulate
  • Final reduction only needs aggregate stats
  • Maybe have a separate type for stats that is a pair when tracing is enabled, which will make all stats traceable more easily

Model specific stats and logging

  • May be entirely taken care of by modular and lp level above
Member Statistics::print () const

Add stats about PEs, num nodes, etc?

Improve these stats to include remote % and also track the sent events that were committed vs those sent and cancelled, or rolled back

Add stats about cancellations

Improve these stats to include remote % and also track the sent events that were committed vs those sent and cancelled, or rolled back

Add stats about cancellations

Member tw_synch_e
move to scheduler
File typedefs.h

Cleanup unneeded types

Move type declarations to appropriate modules as needed

Maybe make a seperate file for aliases that is only needed when using the old ROSS API.

Module Useful Typedefs
Only put here what needs to be exposed to model