Relaxed (non-sequential) memory consistency is a notoriously subtle aspect of shared-memory parallel programming. Code with data races running under relaxed consistency may exhibit behavior that is highly counterintuitive to those accustomed to sequential programming. It is important for learners to develop an understanding of relaxed consistency and its effects, but this is difficult to develop through practice since such behavior depends on the underlying platform and other external factors. Motivated by the difficulties faced by our students, we have developed Rasho, a tool for exploring behavior of parallel programs under relaxed consistency. Rasho extracts and depicts execution scenarios from UPC source code, then allows learners to intervene in the scenarios, manipulating them to explore hypotheses about consistent and inconsistent code. This approach allows learners to play with relaxed consistency inside a responsive, informative visual space.
Presentation on Rasho, Universidad Catolica de Chile, April 2010.
UPC Research at Michigan Tech
Understanding relaxed memory consistency through interactive visualization. Tool demonstration, ACM Symposium on Software Visualization (SOFTVIS), Salt Lake City, UT, 2010.
Automated verification of UPC memory consistency. With O. Thorsen. Workshop on Verified Software: Theories, Tools, Experiments (VSTTE), Seattle, WA, 2006.
The UPC memory model: Problems and prospects. With W. Kuchera. International Parallel and Distributed Processing Symposium (IPDPS), Santa Fe, NM, 2004.
A proposal for a UPC memory consistency model. With K. Yelick and D. Bonachea. Technical Report, Lawrence Berkeley National Laboratory, 2003.