The ECE 4/599 Course Blog

TrackFM: Far-out Compiler Support for a Far Memory World

by Eugene Cohen (leader), Nanda Velugoti (blogger), David Luo (scribe), Rabecka Moffit, Benjamin Knutson

Introduction

TrackFM is a compiler-based far memory system which enables programmers to transparently upgrade their applications to use remote memory, extending the capacity of available main memory for those programs. TrackFM does this by using modern compiler analysis and transformation techniques to support far/remote memory. To optimize the data movement costs between server and client, TrackFM introduces novel compiler analysis and transformation passes (in the form of LLVM passes).

Along with the compiler techniques, TrackFM extends the library-based far memory solution, AIFM, to reuse it’s runtime and local/remote object management mechanims.

TrackFM Design and Implementation

TrackFM has 2 components:

  1. Compiler: Takes the unmodified application source code and uses the modern/novel compiler analysis and transformation passes to generate the transformed. It also injects required TrackFM runtime dependencies. TrackFM compiler employs two main analysis/transformation optimization for minimal remote access overheads:
  1. Runtime: TrackFM reuses AIFM’s runtime to create and manage remote objects, i.e., how to fetch/evict objects from remote server into the local memory.

Results

Discussion

Conclusion

In conclusion, TrackFM is a compiler/runtime-based solution that enables programmers to write application that can use far memory (with large memory capacity) transparently. Using TrackFM, programmers can expect performance on-par with the existing state-of-the-art library-based solutions (within 10%) along with 2x the programmer transparency. A lot of this is possible because of advancements made in the far memory hardware (RDMA), which provides low latency remote memory accesses, enabling the solutions like TrackFM.

References