2013-11-26

High Productivity Parallel Programming with SAC and S-Net: from Language Design to Compilers and Runtime Systems

Prof. Dr. Clemens Grelck, University of Amsterdam

2 Dec 2013, 10:00–11:30; Location: S4|10-1

Parallel Programming has long closely been tied to high performance computing. Today's ubiquity of multi-core chip architectures radically changes this: parallel programming moves from a niche market into the main stream of computing. At the same time, hardware becomes more and more diverse: varying numbers of cores with complex cache hierarchies, general-purpose graphics accelerators and other heterogeneous architectures like Intel's Xeon Phi accelerator, all with their specific, more or less machine-oriented programming models, challenge today's and even more so tomorrow's programmers. These rapid changes concern experienced hpc programmers and average software engineers alike. Since traditional software no longer automatically benefits from hardware innovation, new programming models are needed that reconcile productivity, portability and performance in the presence of modern compute architectures.

We present two complementary high-productivity programming models for parallel systems and their associated tool chains: SAC and S-Net. SAC (Single Assignment C) is a declarative array language that adopts syntactic conventions of C/C++/C#/Java for ease of transition. SAC features multidimensional arrays as abstract values with certain structural properties. Functions receive arrays as argument values and produce new argument values. How arrays manifest in memory (or if at all) is up to compiler and runtime system. The abstract view on data in conjunction with state-free semantics supports aggressive compiler optimisation for sequential execution performance and fully compiler-directed acceleration on contemporary multi- and many-core architectures.

S-Net is a declarative coordination language for explicit concurrency engineering. S-Net achieves a near-complete separation of concerns between the development of sequential or implicitly parallel

algorithmic building blocks by domain experts (e.g. using SAC) on the one hand and the exposure of coarse-grained concurrency to an underlying execution substrate by concurrency experts on the other hand. This substrate turns ordinary sequential code into a streaming network of asynchronous components. While concurrency is dealt with explicitly, algorithmic aspects are thoroughly separated from organisational matters of parallel program execution such as synchronisation and communication. It is exactly the intertwining of these two aspects that is widely considered the main cause for the reputation of parallel programming as being notoriously difficult.

Category: CE Seminar

Contact

Technische Universität Darmstadt

Graduate School CE
Dolivostraße 15
D-64293 Darmstadt

Phone+49 6151/16-24401
Fax -24404
OfficeS4|10-322

to assistants' office

Open BSc/MSc Theses

Show a list of open BSc/MSc topics at GSC CE.

 Print |  Impressum |  Sitemap |  Search |  Contact |  Privacy Policy
zum Seitenanfangzum Seitenanfang