10 likes | 113 Views
Operating System Support for Memory Abstractions in Parallel Languages.
E N D
Operating System Support for Memory Abstractions in Parallel Languages [1] I. A. Lee, S. Boyd-Wickizer, Z. Huang, and C. E. Leiserson “Using Memory Mapping to Support Cactus Stacks in Work-Stealing Runtime Systems” PACT ’10: Proceedings of the 19th International Conference on Parallel Architectures and Compiler Techniques. [2] I. A. Lee, A. Shafi, and C. E. Leiserson “Memory-Mapping Support for Reducer Hyperobjects” SPAA ‘12: Proceedings of the 24th ACM Symposium on Parallel Algorithms and Architectures (Best Paper) Modern parallel languages, such as Cilk++ and Cilk Plus, offer high-order memory abstractions to support common patterns of parallel programming, where different branches of parallel computation may see different viewsof the same memory location. A Ex 1: a cactus stack that supports different views of stack in parallel Ex 2: a reducer hyperobjectthat supports parallel updates to an object by an associative operator: A A A B D E C B reducer_string res = ... ; string strs[10]; /* computation to populate strs */ ... /* concatenate computed strings */ parallel_for(i = 0; i++; i < 10) { res = res +strs[i]; } cout << res; B C C D E D E invocation tree where all siblings may execute in parallel same output as the sequential execution views of the stack for parallel computations It turns out that we can devise efficient operating system support for both abstractions. A A A A B B B B C C C C D D D D E E E E : spawn : spawn : spawn : spawn A A A A A A A A A A A A A A A A A A A A A A A A B B B B C C C C C C C C C C C C C C C C B B B B D D D D E E E E D D D D E E E E invocation tree invocation tree invocation tree invocation tree views of stack views of stack views of stack views of stack