Abstract
A significant fraction of parallel scientific codes are iterative
with barriers between iterations or even between phases of the same
iteration. The sender of a message is assured that the receiver is
executing exactly the same iteration or phase as it. This opens up
the opportunity to use one-sided communication without
synchronization, explicit or implicit, between the sender and
receiver of every message. The synchronization inherent in the
application is sufficient to ensure correctness. We present
CkDirect, an interface for such one-sided communication in the
message driven Charm++ runtime system. CkDirect helps avoid
unnecessary synchronization and message copying as well as
scheduling overhead in iterative scientific codes. We describe the
interface as well as its implementations on two different
interconnects: Infiniband and Blue Gene/P. We evaluate CkDirect
through a micro-benchmark, two simple scientific codes: stencil
computation and matrix multiplication, as well as a full fledged
quantum chemistry application called OpenAtom.