Memref dialect: volatile and atomic accesses

Hi All -

Regarding the memref dialect load and store and related operations I couldn’t tell if the spec requires these to be implemented as if volatile and atomic (llvm does have volatile qualifiers) ?

Is this an oversight or work in progess?

more fundamentally the execution model of llvm was a single thread executing the IR. However for GPUs some operations are collective and it is not clear how the various builtin dialects specify such requirements?


Practically, these lower to non-atomic non-volatile operations in all upstream flows. A better memory model likely falls into the “nobody needed it enough to implement” category ( FAQ - MLIR ).

@wsmoses and I have looked into modeling GPU synchronizations via side effects assuming structured control flow, similar modeling is likely possible for collectives.