method to distribute message receives across pes in node
If I have a group or array chare that needs to send a large number of messsages while the rest of the pes in the node have nothing more urgent to do I can use CkLoop to distribute the send work. On the other hand, if a group or array chare needs to receive a large number of urgent messages there is no corresponding mechanism to distribute this work to other threads in the node. The workaround is to send the messages to a nodegroup proxy that then directly calls a member function on the chare object regardless of the pe it belongs to and uses atomics to count the number of messages received. This means the sender has to know which node the target chare lives on and the nodegroup proxy needs to have pointers to all of the target objects. This could be handled more cleanly through the runtime, and ideally expressed in sdag as a parallel for loop or other control structure.