last updated: 2026-05-18 10:26:49 -0700
commit: 29ac263
finished trackfm

TrackFM Lit Review

Nathaniel Chappelle

2026-05-15

Source Information

General Notes

Remote Memory Systems

Kernel-based remote memory

Library-based remote memory

Compiler-based remote memory

TrackFM Design

TrackFM Implementation

Predictions

Largest gap is remote pointer transformation, so:

Far Memory Pointer Transformation

Bridging AIFM with Compiler

Object Size Selection

Object State Table

Guards

Loop Overheads

Compiler can determine induction variable of a loop, so it can know if guards within a bunch of array elements are redundant. So instead it uses locality guards at object boundaries to check that the entire chunk is safe.

Also uses prefetching since it can detect sequential access at compile-time. This is a strength of compiler-based over kernel-based.

Uses a simple cost model to understand if iteration space is large enough to be faster than the simple guard approach.

Key Findings

Critique/Gaps

Questions

Relations

References (if any)

diff --git a/lit-reviews/tauro2024trackfm.md b/lit-reviews/tauro2024trackfm.md
index 6311217..bc8bdd8 100644
--- a/lit-reviews/tauro2024trackfm.md
+++ b/lit-reviews/tauro2024trackfm.md
@@ -6,10 +6,6 @@ bibliography: bibliography/references.bib
 csl: bibliography/chicago-author-date.csl
 ---
 
-## Progress
-
-pg. 4/19
-
 ## Source Information
 
 - **Title:** TrackFM: Far-out Compiler Support for a Far Memory World
@@ -139,6 +135,46 @@ Largest gap is remote pointer transformation, so:
   - Interposes allocation sites and chunks allocations into objects in the
     global pool at runtime
 
+#### Object Size Selection
+
+- Constrained to choose a single object size at compile time for the entire
+  application
+- Auto tuning approach is feasible (could just try from $2^6$ to $2^{12}$ and
+  recompile for each)
+
+#### Object State Table
+
+- AIFM requires a metadata reference and an object reference
+- TrackFM eliminates need for metadata reference by using a
+  [[../concepts/cache]] state table, using index calculation instead of indirect
+  memory reference
+
+### Guards
+
+- Custody check
+  - Checks whether pointer is managed by TrackFM
+    - If not jump to target load/store
+    - If true perform table lookup to find state table entry corresponding to
+      AIFM object
+- Fast Path Guard
+  - Checks if object is guaranteed to be local, prevents evacuation of object
+    until load/store
+- Slow Path Guard
+  - If unsafe, call into TrackFM runtime $\rightarrow$ call into AIFM runtime to
+    dereference object (may involve remote fetch)
+
+### Loop Overheads
+
+Compiler can determine induction variable of a loop, so it can know if guards
+within a bunch of array elements are redundant. So instead it uses locality
+guards at object boundaries to check that the entire chunk is safe.
+
+Also uses prefetching since it can detect sequential access at compile-time.
+This is a strength of compiler-based over kernel-based.
+
+Uses a simple cost model to understand if iteration space is large enough to be
+faster than the simple guard approach.
+
 ## Key Findings
 
 - Compiler based approach to software-based far memory
@@ -148,10 +184,22 @@ Largest gap is remote pointer transformation, so:
 - New compiler analysis and transformation passes that improve performance for
   target applications
 - Design and implementation of TrackFM, compiler-based far memory system
+- Near parity with AIFM performance
+- Hybrid (kernel + compiler) would be promising as kernel-based performs well
+  with temporal locality
+- Hardware that compiler could manage (similar to page mechanism) might be
+  beneficial
 
 ## Critique/Gaps
 
--
+- Future work could allow for multiple object sizes (only a few fixed object
+  sizes make sense, likely to be powers of 2 from 64B to 4KB)
+- Capture inter-procedural data structure semantics
+- Languages whos memory semantics more closely match those of far memory (Rust)
+- Remote fetching for trivial computation is wasteful, so offload to remote node
+  to employ near-data processing (using static analysis)
+- Profiling stage to prune set of heap allocations available for remoting based
+  on access frequency (similar to MaPHeA)
 
 ## Questions
 
@@ -159,9 +207,12 @@ Largest gap is remote pointer transformation, so:
   frontend can make use of TrackFM?
 - Could [Derive](http://derivelinux.org) actually be a great test bed for trying
   to make all libraries TrackFM aware?
+- So AIFM can't use libc++ objects?
 
 ## Relations
 
 - [[../concepts/locality]]
+- [[../concepts/DiLOS]]
+- [[../concepts/MaPHeA]]
 
 ## References (if any)