  When working at exascale, the various constraints imposed by the extreme
scale of the system bring new challenges for application users and
software/middleware developers. In that context, and to provide best
performance, resiliency and energy efficiency, software may be provided as a
service oriented approach, adjusting resource utilization to best meet facility
and user requirements. Remote procedure call (RPC) is a technique that
originally followed a client/server model and allowed local calls to be
transparently executed on remote resources. RPC consists of serializing the
local function parameters into a memory buffer and sending that buffer to a
remote target that in turn deserializes the parameters and executes the
corresponding function call, returning the result back to the caller. Building
reusable services requires the definition of a communication model to remotely
access these services and for this purpose, RPC can serve as a foundation for
accessing them. We introduce the necessary building blocks to enable this
ecosystem to software and middleware developers with an RPC framework called
Mercury.
