URN to cite this document: urn:nbn:de:bvb:703-epub-4297-6
Title data
Gleißner, Benedikt:
Domänenspezifische Sprachen zur Umsetzung numerischer Lösungsverfahren für gewöhnliche Differentialgleichungssysteme.
Bayreuth
,
2019
. - 63 P.
- (Bayreuth Reports on Parallel and Distributed Systems
; 12
)
(Master's,
2019
, University of Bayreuth, Faculty of Mathematics, Physics and Computer Sciences)
|
|||||||||
Download (2MB)
|
Abstract
Domänenspezifische Sprachen (domain-specific languages, DSLs) werden dazu eingesetzt, Lösungen für ein bestimmtes Problemfeld umzusetzen. Sie sind im Gegensatz zu General Purpose Languages (GPLs), wie Java oder C, speziell für Probleme innerhalb einer Domäne optimiert, wodurch Programme in der Regel einfacher und schneller implementiert werden können. Mögliche Fehlerquellen im Code können durch Validierungsmechanismen und die Struktur der DSL selbst frühzeitig erkannt und behoben werden. Durch automatische Codeerzeugung und Autotuning können aus einem mit einer DSL geschriebenem Programm mehrere Codevarianten erzeugt werden, die auf verschiedene Systeme portierbar sind und gleichzeitig auf dem jeweiligen System eine hohe Performanz erreichen. Im Rahmen dieser Arbeit wurden mehrere DSLs zur Implementierung numerischer Lösungsverfahren für gewöhnliche Differentialgleichungssysteme (ordinary differential equations, ODEs) entwickelt. Die verbreiteten Lösungsverfahren für ODEs lassen sich durch Datenflussgraphen beschreiben, in dem die Berechnungen des Verfahrens durch Basisoperationen als Knoten abgedeckt sind. Als ersten Schritt hin zu einem fertigen Programm wird die Struktur des Datenflussgraphen in einer DSL spezifiziert. In einer weiteren DSL können dann Verfahrenskoeffizienten, wie die Stufenzahl oder ein Butcher-Tableau, deklariert werden. Mit diesen beiden Sprachen ist das Verfahren bereits vollständig beschrieben. Zwei weitere DSLs befassen sich mit einer möglichst effizienten Implementierung auf Grafikprozessoren (graphics processing units, GPUs). Lösungsverfahren von ODEs sind durch die Eigenschaften von GPUs, wie kleinen Caches oder weitem SIMD, oft durch den Speicher limitiert. Daher gilt es für eine möglichst hohe Performanz die Anzahl an Speicherzugriffen zu minimieren, was durch die Fusion mehrerer Basisoperationen zu einem Kernel erreicht werden kann. Eine DSL befasst sich daher mit der Abbildung von Knoten des Datenflussgraphen auf Kernel. Durch Transformationen auf dem Graphen als vorbereitenden Schritt kann die Anzahl an Speicherzugriffen noch stärker reduziert werden. Diese Transformationen können in einer weiteren DSL deklariert werden.
Abstract in another language
Domain-specific languages (DSLs) are used to implement solutions for a specific problem area. In contrast to general purpose languages (GPLs), such as Java or C, they are specifically optimized for problems within a domain, which usually makes it easier and faster to implement programs. Possible sources of errors in the code can be detected and corrected in an early stage by validation mechanisms and the structure of the DSL itself. Through automatic code generation and autotuning, several code variants can be generated from a program written with a DSL. These code variants can be ported to different systems and simultaneously achieve high performance on the respective system. In this work several DSLs for the implementation of numerical solution methods for ordinary differential equations (ODEs) have been developed. All common ODE solvers can be described by data flow graphs, in which all calculations of the method are covered by basic operations as nodes. As a first step towards a finished program, the structure of the data flow graph is specified in a DSL. In a second DSL, method coefficients such as the number of steps or a butcher tableau can then be declared. With these two languages the procedure is already completely described. Two further DSLs are concerned with an efficient implementation on graphics processing units (GPUs). ODE solvers are often limited by the properties of GPUs, such as small caches or large SIMD. Therefore it is important to minimize the number of memory accesses in order to achieve the highest possible performance. This can be achieved by fusing several basic operations into one kernel. A DSL therefore deals with the mapping of nodes of the data flow graph to kernels. By transformations on the graph as a preparatory step, the number of memory accesses can be reduced even more. These so-called enabling transformations can be declared in an additional DSL.
Further data
Item Type: | Master's, Magister, Diploma, or Admission thesis |
---|---|
Keywords: | DSL; gewöhnliche Differentialgleichungssysteme; numerische Verfahren; Datenflußgraph; Kernel-Fusion |
DDC Subjects: | 000 Computer Science, information, general works > 004 Computer science |
Institutions of the University: | Faculties > Faculty of Mathematics, Physics und Computer Science Faculties > Faculty of Mathematics, Physics und Computer Science > Department of Computer Science Faculties > Faculty of Mathematics, Physics und Computer Science > Department of Computer Science > Chair Applied Computer Science II Faculties > Faculty of Mathematics, Physics und Computer Science > Department of Computer Science > Chair Applied Computer Science II > Chair Applied Computer Science II - Univ.-Prof. Dr. Thomas Rauber Faculties |
Language: | German |
Originates at UBT: | Yes |
URN: | urn:nbn:de:bvb:703-epub-4297-6 |
Date Deposited: | 05 Apr 2019 07:20 |
Last Modified: | 05 Apr 2019 07:20 |
URI: | https://epub.uni-bayreuth.de/id/eprint/4297 |