This document discusses memory consistency models for parallel programs. It covers:
- Shared memory is the most common approach to parallel programming. The memory model defines what values a read can return.
- The sequential consistency (SC) model is the most intuitive but not practical due to performance issues. The data-race-free model provides SC for programs without data races.
- Specifying semantics for programs with data races is challenging. Both hardware and software models have issues that cause mismatches.
- Current approaches are fundamentally broken. Future work needs higher-level models that enforce discipline and hardware designed together with language models. Deterministic parallel programming should be the default approach.