  Irregular memory access patterns pose performance and user productivity
challenges on distributed-memory systems. They can lead to fine-grained remote
communication and the data access patterns are often not known until runtime.
The Partitioned Global Address Space (PGAS) programming model addresses these
challenges by providing users with a view of a distributed-memory system that
resembles a single shared address space. However, this view often leads
programmers to write code that causes fine-grained remote communication, which
can result in poor performance. Prior work has shown that the performance of
irregular applications written in Chapel, a high-level PGAS language, can be
improved by manually applying optimizations. However, applying such
optimizations by hand reduces the productivity advantages provided by Chapel
and the PGAS model. We present an inspector-executor based compiler
optimization for Chapel programs that automatically performs remote data
replication. While there have been similar compiler optimizations implemented
for other PGAS languages, high-level features in Chapel such as implicit
processor affinity lead to new challenges for compiler optimization. We
evaluate the performance of our optimization across two irregular applications.
Our results show that the total runtime can be improved by as much as 52x on a
Cray XC system with a low-latency interconnect and 364x on a standard Linux
cluster with an Infiniband interconnect, demonstrating that significant
performance gains can be achieved without sacrificing user productivity.
