Inhalt des Dokuments
ComponentC: A Parallel Programming Language for Developing Performance Portable Software
Multicore architectures increase the programming effort significantly. It is expected that future processors will contain more cores, have a heterogeneous architecture, and implement different memory models. These architectural features are currently visible to the programmer and dramatically increase the effort for creating performance portable software. ComponentC is a novel component-oriented parallel programming language, which allows the programmer to intuitively specify extendable and maintainable parallel code that is compatible with future multicore architectures.
ComponentC merges concepts of both sequential object-oriented and the inherently parallel hardware description languages. This results in language constructs (components and signals), which allow binding data, functionality, and execution, and admits intuitive inter-component communication. The execution model is sufficiently flexible to integrate advanced scheduling strategies. Furthermore, transparently to the programmer, ComponentC is conceptually able to adapt to various (shared) memory architectures.
Future work in this area is abundant. A few examples are developing a ComponentC parser frontend, research in runtime scheduling, porting parallel applications, integration in operating systems, a split private and shared address space, runtime management of local memory, and synchronization and communication hardware support.