Does this mean that the language compilers are putting in memory fences for us, to work for the underlying architecture's memory consistency model? Would that mean a different implementation for each of the architecture's that you could compile a language for?
Something I thought was interesting from lecture (AFAI remember): Sometimes, data races aren't actually bugs, especially in things like stochastic gradient descent libraries where you might want a little bit of "natural" randomness to presumably get you explore to different local minima each time.
Does the second bullet point mean that fences are placed to ensure SC for singular threads, and any multithreaded data access requires locking from the programmers end?
Please log in to leave a comment.