Introducing Molly: Distributed Memory Parallelization with LLVM
Michael Kruse (LRI, INRIA Saclay - Ile de France)

TL;DR
Molly is an LLVM extension that automates distributed memory parallelization for programs with static loop structures, enabling efficient execution on supercomputers like Blue Gene/Q.
Contribution
It introduces a novel LLVM-based framework for automatic memory distribution and communication generation in distributed memory systems.
Findings
Demonstrates capabilities on Conway's Game of Life
Automates MPI communication generation
Supports program transformations on polyhedral sets
Abstract
Programming for distributed memory machines has always been a tedious task, but necessary because compilers have not been sufficiently able to optimize for such machines themselves. Molly is an extension to the LLVM compiler toolchain that is able to distribute and reorganize workload and data if the program is organized in statically determined loop control-flows. These are represented as polyhedral integer-point sets that allow program transformations applied on them. Memory distribution and layout can be declared by the programmer as needed and the necessary asynchronous MPI communication is generated automatically. The primary motivation is to run Lattice QCD simulations on IBM Blue Gene/Q supercomputers, but since the implementation is not yet completed, this paper shows the capabilities on Conway's Game of Life.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Distributed and Parallel Computing Systems · Advanced Data Storage Technologies
