Montag, 27. Februar 2012 |
Abstract: Computing usually means to compute something from something else - and this implicitly states a causal dependency. This is obvious in imperative programming, but holds for many variants of declarative programming as well. Yet, there are many aspects in software and programming, which would benefit a lot by abstracting from a cause-effect based description. This can be found in a range of tools and languages, ranging constraint programming to Modelica-style modeling. Major challenges remain the systematic presentation of the idea of acausality and above all the efficient implementation by compilers.
Abstract: Languages for efficient parallel programming need to achieving high performance portability in order to harness the power offered by rapidly evolving parallel architectures. We use a combinations of high-level architecture-aware cost modelling with a low-level, explicit control of coordination as a programming model to improve performance portability. We explore and quantify the impact of heterogeneity in modern parallel architectures on the performance of parallel programs on a range of clusters of multi-cores, varying in architectural parameters such as processor speed, memory size and interconnection speed. Additionally, we develop several formal cost models and automatically use these architectural characteristics to determine suitable granularity and work placement. The effectiveness of such cost-model-driven management of parallelism on common-place cluster hardware is demonstrated by measuring the performance of a parallel sparse matrix multiplication, implemented in C+MPI, on a range of heterogeneous architectures. On a cluster with 16 cores, the speedup increases from 6.2, without any cost model, to 9.1, indicating that even a simple, static cost model is effective in adapting the execution to the target architecture and in significantly improving parallel performance and scalability with negligible overhead.
Abstract: Mapping parallel applications to multi-processor architectures requires information about the execution times of the concurrent processes to find an optimal allocation and must take into account the interprocessor communication at runtime, whose overheads have emerged as the major performance limitation. However, both information cannot be statically known in advance. In this paper we present a sophisticated approach using machine learning techniques to automatically generate heuristics that provide the compiler with knowledge of this runtime behavior, hence yielding more precise heuristics than those generated by pure static analyses. Considering parallel MPI applications, the heuristics can be used to direct the runtime environment of MPI, which results in a better static allocation of MPI processes and, furthermore, enables reallocation of processes to other processors at runtime.
Abstract: We show how Sestofts abstract machine for lazy evaluation of purely functional programs can be extended to evaluate expressions of the calculus CHF - a process calculus that models concurrent Haskell extended by imperative and implicit futures. The abstract machine is modularly constructed by first adding monadic IO-actions to the machine and then in a second step we add concurrency. Our main result is that the abstract machine coincides with the original operational semantics of CHF, w.r.t. may- and should-convergence.
Abstract: MOSTflexiPL ist eine Programmiersprache, die vom Anwender nahezu beliebig syntaktisch erweitert und angepasst werden kann. Trotz dieser enormen Flexibilität besitzt die Sprache eine statisches Typsystem mit Ähnlichkeiten zu ,,dependent types``. Die Semantik neu definierter Sprachkonstrukte wird durch eine Abbildung auf bereits vorhandene Konstrukte in der Sprache selbst festgelegt, d. h. es sind keinerlei Eingriffe in Compiler oder Laufzeitsystem erforderlich. Der Sprachkern, d. h. die Menge der Grundkonstrukte, die sich nicht (sinnvoll) auf andere Konstrukte zurückführen lassen, folgt keinem bestimmten Programmierparadigma. Die meisten Grundkonstrukte sind funktionaler Natur, durch die Bereitstellung von Variablen (d. h. änderbarer Speicherzellen) wird aber auch imperatives Programmieren (im weitesten Sinne) unterstützt. Neben diesen Grundkonstrukten, gibt es eine Sammlung vordefinierter Standardkonstrukte zur Unterstützung unterschiedlicher Programmierstile, die bereits in der Sprache selbst geschrieben sind. MOSTflexiPL-Programme werden durch einen Compiler in assemblerartigen C++-Code übersetzt, der von jedem standardkonformen C++-Compiler in ausführbaren Code übersetzt werden kann. Wenn ein Programm aus mehreren Modulen besteht, können diese unabhängig voneinander übersetzt werden.
Abstract: In this paper we discuss our practical experiences with the use of different search strategies in functional logic programs. In particular, we show that complete strategies, like breadth-first search or iterative deepening search, are a viable alternative to incomplete strategies, like depth-first search, that have been favored in the past for logic programming languages.
Abstract: Viele Aussagen zum Programmverhalten sind in turingmächtigen Programmiersprachen unentscheidbar (Rice Theorem). Mittels Abstraktion vom Programmverhalten können nicht-turingmächtige Modelle automatisch erzeugt werden. Modelle in Form von symbolischen Kellersystemen (SPDS) erlauben eine so präzisere Darstellung des Programmverhaltens, dass damit eine ISO-C konforme Semantik möglich ist. Allerdings führen präzisere Darstellungen auch zu komplexeren und umfangreicheren Modellen (detaillierter). Dies erschwert die Software-Modell-Prüfung, das modellbasierte Testen, als auch Testdaten- und Codegenerierung. Mehr Abstraktion führt dann zu kleineren Modellen, allerdings auch zu mehr Fehlalarmen. Ziel dieser Arbeit ist es, bezüglich temporaler Aussagen unwichtige Teile eines SPDS zu identifizieren und von diesen Teilen so zu abstrahieren, dass keine Fehlalarme entstehen.
Abstract: Ziel unserer Arbeit ist es, algorithmische Musik interaktiv und mit mehreren Teilnehmern zu komponieren. Dazu entwickeln wir einen Interpreter für eine an Haskell 98 angelehnte funktionale Programmiersprache mit Bedarfsauswertung, der es erlaubt, das Programm noch während seiner Ausführung zu ändern. Unser System eignet sich sowohl für den Live-Einsatz zur Musikprogrammierung als auch als Demonstrations- und Lernumgebung für funktionale Programmierung.
Abstract: Framework manufacturers and developers face the challenge to determine which parts of frameworks are used and varied. Developers want to know on which framework elements their application is depending. Currently, programs need to be parsed to extract information about framework usage what consumes time and effort and makes the mining of information inflexible. Hypermodelling utilizes Data Warehouse technology for source code investigations to overcome the current limitations. In this paper we demonstrate that Hypermodelling is suitable to explore software variance. We present reports based on real application data to reveal multiple facts about the software variance. We show visualizations at different granularity levels. This supports our theory that Hypermodelling can be used to explore software variance.