We introduce dag consistency, a relaxed consistency model for distributed shared memory which is suitable for multithreaded programming. We have implemented dag consistency in software for the Cilk multithreaded runtime system running on a Connection Machine CM5. Our implementation includes a dag-consistent distributed cactus stack for storage allocation. We provide empirical evidence of the flexibility and efficiency of dag consistency for applications that include blocked matrix multiplication, Strassen's matrix multiplication algorithm, and a Barnes-Hut code. Although Cilk schedules the executions of these programs dynamically, their performances are competitive with statically scheduled implementations in the literature. We also prove that the number F_P of page faults incurred by a user program running on P processors can be related to the number F_1 of page faults running serially by the formula F_P \leq F_1 + 2Cs, where C is the cache size and s is the number of thread migrations executed by Cilk's scheduler.
Index Terms:
dag consistency, distributed shared memory, multithreading, cactus stack, dynamic scheduling, page faults, memory model
Citation:
Robert D. Blumofe, Matteo Frigo, Christopher F. Joerg, Charles E. Leiserson, Keith H. Randall, "Dag-Consistent Distributed Shared Memory," ipps, pp.132, 10th International Parallel Processing Symposium (IPPS '96), 1996