Browsing by Author "Councilman, Aaron"
Now showing 1 - 2 of 2
- Results Per Page
- Sort Options
Item An Extensible Implementation-Agnostic Parallel Programming Framework for C in ableC(2021) Councilman, Aaron;Modern processors are multicore and this trend is only likely to increase in the future. To truly exploit the power of modern computers, programs need to take advantage of multiple cores by exploiting parallelism. Writing parallel programs is difficult not only because of the inherent difficulties in ensuring correctness but also because many languages, especially low-level languages like C, lack good abstractions and rather rely on function calls. Because low-level imperative languages like C remain dominant in systems programming, and espe- cially in high-performance applications, developing parallel programs in C is important, but its reliance on function calls results in boiler-plate heavy code. This work intends to reduce the need for boiler-plate by introducing higher-level syntax for parallelism, and it does so in such a manner so as to decouple the implementation of the parallelism from its semantics, allowing programmers to reason about the semantics of their program and separately tune the implementation to fi nd the best performance possible. Furthermore, this work does so in an extensible manner, allowing new implementations of parallelism and synchronization to be developed independently and allowing programmers to use any selection of these imple- mentations that they wish. Finally, this system is flexible and allows new abstractions for parallel programming to be built on top of it and bene t from the varied implementations while also providing programmers higher-level abstractions. This system can also be used to combine different parallel programming implementations in manners that would be difficult without it, and does so while still providing reasonable runtime performance.Item An Investigation of Composable Language Extensions for Parallel Programming(2019-01-17) Carlson, Travis; Coomey, Ciaradh; Councilman, Aaron; Stephen, Patrick; Van Wyk, EricThis paper demonstrates how parallel programming language features can be specified as composable language extensions to a general-purpose host programming language. To illustrate the expressiveness of language abstractions defined in this way we have re-implemented, as language extensions, various abstractions previously described in the literature that were implemented as part of traditional monolithic programming languages. These include abstractions for spawning parallel tasks, abstractions implementing bounded buffered channels and lattice-based variables to simplify the communication between parallel tasks, and domain-specific abstractions for simple specification of tensor computations backed by a code-generation technique for the efficient storage and processing of tensor computations. The general-purpose host language is C, as implemented in the AbleC extensible C compiler framework. This system provides certain guarantees of extension composability that ensure that independentlydeveloped language extensions can be automatically composed by programmers that are not experts in language design or implementation. Thus programmers can freely select the abstractions that match their programming problem, their preferred programming style and level of expertise, and their desired performance requirements. This approach also provides benefits to researchers designing and developing new abstractions for parallel programming. It allows them to focus their efforts on the implementation of their new abstractions and re-use the host language implementation of general purpose features such as arithmetic expressions, control-flow statements, type checking, and other basic compiler infrastructure.