Compilers should get over themselves and respect semantic dependencies!
The out-of-thin-air (OOTA) properties of C11 and C++11 memory_order_relaxed
accesses have resulted in considerable consternation over the years, despite the fact that no one has managed to construct a real system that exhibits OOTA behaviors. And yet attempts to create memory models that exclude OOTA behaviors have produced results that have either been non-algorithmic, overly complex, or unloved by compiler implementers, and mostly all three.
This rant argues that compilers must respect semantic dependencies. By this it is not meant that I will personally scream at compiler implementers until they buckle down and do what I ask, tempting though such a course of action might be. It rather instead means that it is not possible to build a correct C or C++ implementation that exhibits OOTA behaviors in real-world conditions, courtesy of a couple of fundamental laws of physics, longstanding hardware practices, and existing formal (atemporal) memory models.
Mon 15 JanDisplayed time zone: London change
14:00 - 15:30 | |||
14:00 20mTalk | Compilers should get over themselves and respect semantic dependencies! The Future of Weak Memory | ||
14:20 20mTalk | A case against semantic dependencies The Future of Weak Memory Ori Lahav Tel Aviv University | ||
14:40 20mTalk | What Compilers desire from Weak Memory SemanticsRemote The Future of Weak Memory Akshay Gopalakrishnan McGill University File Attached | ||
15:00 20mTalk | Programmers love mind-bogglingly complicated weak memory models The Future of Weak Memory Simon Cooksey NVIDIA File Attached |