1 / 1

Operating System Support for Memory Abstractions in Parallel Languages

Operating System Support for Memory Abstractions in Parallel Languages.

Download Presentation

Operating System Support for Memory Abstractions in Parallel Languages

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

More Related