Safe Asynchronous Multicore Memory Operations
Asynchronous memory operations provide a means for coping with the memory wall problem in multicore processors, and are available in many platforms and languages, e.g., the cell broadband engine, CUDA and OpenCL. Reasoning about the correct usage of such operations involves complex analysis of memory accesses to check for races. The authors present a method and tool for proving memory-safety and race-freedom of multicore programs that use asynchronous memory operations. Their approach uses separation logic with permissions, and their tool automates this method, targeting a C-like core language.