Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs...

50
Wiederholung DSLs ¨ Uberblick Wissenschaftliche DSLs Ausblick Domain-specific languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel Seminar ”Softwareentwicklung in der Wissenschaft” Wissenschaftliches Rechnen Fachbereich Informatik Fakult¨ at f¨ ur Mathematik, Informatik und Naturwissenschaften Universit¨ at Hamburg 2015-05-19 Jonas Gresens Domain-specific languages: Examples 1 / 33

Transcript of Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs...

Page 1: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Domain-specific languages: Examples

Jonas Gresens

Betreuung: Dr. Julian KunkelSeminar ”Softwareentwicklung in der Wissenschaft”

Wissenschaftliches RechnenFachbereich Informatik

Fakultat fur Mathematik, Informatik und NaturwissenschaftenUniversitat Hamburg

2015-05-19

Jonas Gresens Domain-specific languages: Examples 1 / 33

Page 2: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Agenda

1 Wiederholung DSLsAllgemeinEntwicklungsstufen

2 UberblickKlassifikationInterne DSLExterne DSL

3 Wissenschaftliche DSLsStencil-CodesExaStencilsLisztICON DSL

4 Ausblick

Jonas Gresens Domain-specific languages: Examples 2 / 33

Page 3: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Wiederholung: Domain-specific Language

Domain-specific language (noun): a computer programminglanguage of limited expresspiveness focused on a particular domain.

∼ Martin Fowler, 2010

DSL vs. GPL (general purpose language)

im Hinblick auf eine bestimmte Domane entwickelt

wissenschaftliche vs. technische Domane

vereinfacht das Losen eines domanenspezifischen Problems

→ Produktitivatssteigerung

Jonas Gresens Domain-specific languages: Examples 3 / 33

Page 4: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Wiederholung: Domain-specific Language

Domain-specific language (noun): a computer programminglanguage of limited expresspiveness focused on a particular domain.

∼ Martin Fowler, 2010

DSL vs. GPL (general purpose language)

im Hinblick auf eine bestimmte Domane entwickelt

wissenschaftliche vs. technische Domane

vereinfacht das Losen eines domanenspezifischen Problems

→ Produktitivatssteigerung

Jonas Gresens Domain-specific languages: Examples 3 / 33

Page 5: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Wiederholung: Domanen / Entwicklungsstufen

Abbildung: Schichten in ExaStencils [ES14]

Layer 1 & 2: wissenschaftliche Domane - Fachwissenschaftler

Layer 2 & 3: mathematische D. - Mathematiker

Layer 3 & 4: technische D. - Informatiker

Jonas Gresens Domain-specific languages: Examples 4 / 33

Page 6: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Klassifikation

Eigenschaften zur Klassifikation

Zweck

Untermenge, Erweiterung oder neue Sprache

Ruckwartskompatiblitat

Einbettung

code embedded oder external

! Klassifikation nicht immer eindeutig

Jonas Gresens Domain-specific languages: Examples 5 / 33

Page 7: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Interne DSL

Interne DSL

Untermenge einer GPL oder anderen DSL

Nutzung der Wirtssprache

Sprachelemente und SyntaxCompiler

! fließender Ubergang zwischen interne DSL und Frameworks

Jonas Gresens Domain-specific languages: Examples 6 / 33

Page 8: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Interne DSL - javadoc

Domane: Code-Dokumentation

annotation-basiert, code embedded, ruckwartskompatibel

1 /**2 * Get the absolut value of a number x.3 *4 * @param x5 * @return x or -x if x < 06 */7 int abs(int x)

Listing 1: javadoc Beispiel

Jonas Gresens Domain-specific languages: Examples 7 / 33

Page 9: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Interne DSL - XSD (XML Schema Definition)

definiert Strukturen fur XML-Dokumente in XML

1 <xs:simpleType name="monatInt">2 <xs:restriction base="xs:integer">3 <xs:minInclusive value="1"/>4 <xs:maxInclusive value="12"/>5 </xs:restriction>6 </xs:simpleType>7 <xs:simpleType name="monate">8 <xs:list itemType="monatInt"/>9 </xs:simpleType>

1 <monate>2 1 2 3 4 5 6 7 8 9 10 11 123 </monate>

Listing 2: XSD Beispiel fur den Typ monatInt mit Daten

Jonas Gresens Domain-specific languages: Examples 8 / 33

Page 10: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Interne DSL - OpenMP

Domane: inkrementelle Parallelisierung von Code

spezielle Praprozessor-Direktiven + Bibliothek

code embedded und ruckwartskompatibel

1 #include <omp.h>2 // ...3 #pragma omp parallel for4 for (int i = 1; i <= 42; i++) {5 // ...6 }

Listing 3: OpenMP Beispiel

Jonas Gresens Domain-specific languages: Examples 9 / 33

Page 11: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Interne DSL - weitere Beispiele

JUnit

HMPPCG

RegEx in GPLs

...

Jonas Gresens Domain-specific languages: Examples 10 / 33

Page 12: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Externe DSL

Externe DSL

neue spezielle Sprache

an Domane und Anforderungen angepasst

eigene Tools

CompilerIDEs

Turing-Vollstandigkeit als hinreichende Bedingung

Jonas Gresens Domain-specific languages: Examples 11 / 33

Page 13: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Externe DSL - SQL

Domane: Datenbankzugriff/-manipulation

external oder code embedded

1 SELECT * FROM Station2 WHERE 50 < (SELECT AVG(Temp_C) FROM Stats)3 WHERE Station.ID = Stats.ID);

Listing 4: SQL Beispiel

Jonas Gresens Domain-specific languages: Examples 12 / 33

Page 14: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Externe DSL - HTML

Domane: Internetseitenbeschreibung

external oder code embedded (z.B. bei E-Mails)

1 <head>2 <title>HTML Sample Page</title>3 <head>4 <body>5 <a href="http://www.google.com/">Google</a>6 </body>

Listing 5: HTML Beispiel

Jonas Gresens Domain-specific languages: Examples 13 / 33

Page 15: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Externe DSL - Bash

Domane: automatisierte Steuerung von Programmaufrufen

external, turing-vollstandig

1 #!/bin/sh2 set -e -x3 module load gcc/5.04 ./configure --prefix=$HOME/libxc/2.1.2/5 make -j 246 make install

Listing 6: bash Beispiel

Jonas Gresens Domain-specific languages: Examples 14 / 33

Page 16: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Externe DSL - weitere Beispiele

MATLAB / GNU Octave

LATEX/ Markdown / MediaWiki / reStructuredText

Makefiles

Regex (regulare Ausdrucke)

...

Jonas Gresens Domain-specific languages: Examples 15 / 33

Page 17: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Stencil-Codes

Abbildung: strukturiertes Gitter / structured Grid

Jonas Gresens Domain-specific languages: Examples 16 / 33

Page 18: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Stencil-Codes

T0 =⇒ T1

Jonas Gresens Domain-specific languages: Examples 17 / 33

Page 19: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Stencil-Codes

T0 =⇒ T1

Jonas Gresens Domain-specific languages: Examples 17 / 33

Page 20: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Stencil-Codes

T0 =⇒ T1

Jonas Gresens Domain-specific languages: Examples 17 / 33

Page 21: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Stencil-Codes

T0 =⇒ T1

A = (35 + 35 + 0 + 0 + 0)/5 = 14

Jonas Gresens Domain-specific languages: Examples 17 / 33

Page 22: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Stencil-Codes

T0 =⇒ T1

Jonas Gresens Domain-specific languages: Examples 17 / 33

Page 23: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Stencil-Codes

T0 =⇒ T1

Jonas Gresens Domain-specific languages: Examples 17 / 33

Page 24: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Stencil-Codes

T0 =⇒ T1

B = (30 + 0 + 0 + 0 + 0)/5 = 6

Jonas Gresens Domain-specific languages: Examples 17 / 33

Page 25: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Stencil-Codes

T0 =⇒ T1

Jonas Gresens Domain-specific languages: Examples 17 / 33

Page 26: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Stencil-Codes

T1 =⇒ T2

Jonas Gresens Domain-specific languages: Examples 17 / 33

Page 27: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Stencil-Codes

Stencil-Codes

rechenintensive Iterations-basierte Algorithmen

grid-basierte Daten

Datenunabhangigkeit innerhalb einer Iteration

festes Zugriffsmuster: Stencil (Stempel)

parallele Implementierung

breite Nutzung

PDE solver → Modelle von physikalischen Vorgangen

Jonas Gresens Domain-specific languages: Examples 18 / 33

Page 28: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

ExaStencils - Allgemein

ExaStencils

Projekt mehrerer deutschen Universitaten

Universitat PassauUniversitat WuppertalUniversitat Erlangen-Nurnberg

Ziel: DSL basierter Stencil-Code fur Exascale-Systeme

(semi-) structured gridsautomatische Auswahl geeigneter Losungsverfahren

! Beispiele kaum vorhanden, da erst 2012 begonnen

Jonas Gresens Domain-specific languages: Examples 19 / 33

Page 29: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

ExaStencils - DSL

Abbildung: Schichten in ExaStencils [ES14]

4-schichtige DSL

spezielle Sprachelemente fur jede Abstraktionsschichtzusatzliche Einbindung von Hardwarewissen

Jonas Gresens Domain-specific languages: Examples 20 / 33

Page 30: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Liszt - Allgemein

Liszt

Projekt der Universitat Stanford

DSL fur mesh-based PDE solvers

mesh (Netz) = unstructured Grid

erzeugt Code fur verschiedene Plattformen

SMP, Cluster, GPUs

Jonas Gresens Domain-specific languages: Examples 21 / 33

Page 31: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Liszt - DSL (1)

Klassifikation

externe DSL, Spracherweiterung zu Scala

code embedded, nicht abwartskompatibel

Sprachelemente

spezielle Deklaration der Datenfelder

1 //Initialize data storage2 val Position = FieldWithLabel[Vertex,Float3]("

position")3 val Temperature = FieldWithConst[Vertex,Float](0.f)4 val Flux = FieldWithConst[Vertex,Float](0.f)5 val JacobiStep = FieldWithConst[Vertex,Float](0.f)

Jonas Gresens Domain-specific languages: Examples 22 / 33

Page 32: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Liszt - DSL (2)

fester Zugriff auf Datenfelder → statische Analyse des Stencils

1 //read edge e2 val v1 = head(e)3 val v2 = tail(e)4 val dP = Position(v2) - Position(v1)5 //write vertex v6 Temperature(v) = 1000.0f

spezielle for-each Schleife → automatische Parallelisierung

1 //for all vertices v in mesh2 for (v <- vertices(mesh)) {3 //[...]4 }

Jonas Gresens Domain-specific languages: Examples 23 / 33

Page 33: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Liszt - Beispielprogramm (1)

1 //Initialize data storage2 val Position = FieldWithLabel[Vertex,Float3]("

position")3 val Temperature = FieldWithConst[Vertex,Float](0.f)4 val Flux = FieldWithConst[Vertex,Float](0.f)5 val JacobiStep = FieldWithConst[Vertex,Float](0.f)67 //Set initial conditions8 val Kq = 0.20f9 for (v <- vertices(mesh)) {

10 if (ID(v) == 1)11 Temperature(v) = 1000.0f12 else13 Temperature(v) = 0.0f14 }

Jonas Gresens Domain-specific languages: Examples 24 / 33

Page 34: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Liszt - Beispielprogramm (2)

15 //Perform Jacobi iterative solve16 var i = 0;17 while (i < 1000) {18 for (e <- edges(mesh)) {19 val v1 = head(e)20 val v2 = tail(e)21 val dP = Position(v2) - Position(v1)22 val dT = Temperature(v2) - Temperature(v1)23 val step = 1.0f/(length(dP))24 Flux(v1) += dT*step25 Flux(v2) -= dT*step26 JacobiStep(v1) += step27 JacobiStep(v2) += step28 }

Jonas Gresens Domain-specific languages: Examples 25 / 33

Page 35: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Liszt - Beispielprogramm (3)

27 while (i < 1000) {28 //...29 for (p <- vertices(mesh)) {30 Temperature(p) += 0.01f*Flux(p)/JacobiStep(

p)31 }32 for (p <- vertices(mesh)) {33 Flux(p) = 0.f; JacobiStep(p) = 0.f;34 }35 i += 136 }

Jonas Gresens Domain-specific languages: Examples 26 / 33

Page 36: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Liszt - Kompilierung

Abbildung: Kompilierung von Liszt [L11]

mehrstufige Kompilierung

.scala → .liszt

.liszt → .cpp

.cpp → binary

verschiedene Targets

Cluster, via MPISMP, via pthreadsGPU, via CUDA

Jonas Gresens Domain-specific languages: Examples 27 / 33

Page 37: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Liszt - Fazit

schnelles Prototyping durch Nicht-Informatiker

ermoglicht Plattform unabhangigen Code

automatische Parallelisierung

perfomante Ergebnisse

sehr flexible Anwendung (unstructured Grids)

Jonas Gresens Domain-specific languages: Examples 28 / 33

Page 38: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

ICON DSL

ICON DSL

Gemeinschaftsprojekt

Universitat HamburgMax Planck Institut fur MeteorologieDKRZ

Ziel: Externe DSL zu Fortran fur das ICON-Klimamodell

code embedded, SpracherweiterungHardwareunabhangigkeit durch AbstraktionUbersetzung zu nativem Fortran-Code

→ Produktivere Code-Entwicklung durch Klimawissenschaftler

Jonas Gresens Domain-specific languages: Examples 29 / 33

Page 39: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Ausblick (uber Softwareentwicklung hinaus)

Chomsky-Hierarchie

Jonas Gresens Domain-specific languages: Examples 30 / 33

Page 40: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Ausblick (uber Softwareentwicklung hinaus)

Chomsky-Hierarchie

Jonas Gresens Domain-specific languages: Examples 30 / 33

Page 41: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Ausblick (uber Softwareentwicklung hinaus)

Chomsky-Hierarchie

Jonas Gresens Domain-specific languages: Examples 30 / 33

Page 42: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Ausblick (uber Softwareentwicklung hinaus)

Chomsky-Hierarchie

Jonas Gresens Domain-specific languages: Examples 30 / 33

Page 43: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Ausblick (uber Softwareentwicklung hinaus)

Chomsky-Hierarchie naturliche Sprachen

Jonas Gresens Domain-specific languages: Examples 30 / 33

Page 44: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Ausblick (uber Softwareentwicklung hinaus)

Chomsky-Hierarchie naturliche Sprachen

Jonas Gresens Domain-specific languages: Examples 30 / 33

Page 45: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Ausblick (uber Softwareentwicklung hinaus)

Chomsky-Hierarchie naturliche Sprachen

Jonas Gresens Domain-specific languages: Examples 30 / 33

Page 46: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Ausblick (uber Softwareentwicklung hinaus)

Chomsky-Hierarchie naturliche Sprachen

Jonas Gresens Domain-specific languages: Examples 30 / 33

Page 47: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Ausblick - Entwicklung

Grenze zwischen DSL und GPL wird weiter verschwimmenSoftwareentwicklung = Verwendung der geeignetstenFrameworks und DSLs

fruher: Regexheute: OpenMP, Liszt, (ExaStencils)

Aufkommen neuer machtigerer DSLs

→ Implementation von Algorithmen in Pseudocode

→ (Klima-) Simulationen in Holodeck-ahnlichen Systemen

Jonas Gresens Domain-specific languages: Examples 31 / 33

Page 48: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick

Ausblick - Entwicklung

Grenze zwischen DSL und GPL wird weiter verschwimmenSoftwareentwicklung = Verwendung der geeignetstenFrameworks und DSLs

fruher: Regexheute: OpenMP, Liszt, (ExaStencils)

Aufkommen neuer machtigerer DSLs

→ Implementation von Algorithmen in Pseudocode→ (Klima-) Simulationen in Holodeck-ahnlichen Systemen

Jonas Gresens Domain-specific languages: Examples 31 / 33

Page 49: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Zusammenfassung Literatur

Zusammenfassung

Domain-specific language (noun): a computer programminglanguage of limited expresspiveness focused on a particular domain.

∼ Martin Fowler, 2010

DSL vs. GPL (general purpose language)

im Hinblick auf eine bestimmte Domane entwickelt

als interne oder externe DSLdaher viele verschiedene Formen und Beispiele

vereinfacht das Losen eines domanenspezifischen Problems

→ Produktitivatssteigerung

Jonas Gresens Domain-specific languages: Examples 32 / 33

Page 50: Domain-specific languages: Examples - VI4IO...Wiederholung DSLs Uberblick Wissenschaftliche DSLs Ausblick Domain-speci c languages: Examples Jonas Gresens Betreuung: Dr. Julian Kunkel

Zusammenfassung Literatur

Literatur

ES14 C. Lengauer, S. Apel, M. Bolten et all:”ExaStencils:

Advanced Stencil-Code Engineering. First Project Report“.Technical Report, MIP-1401, Universitat Passau, Juni 2014

L11 Z. DeVito, N. Joubert, F. Palacios et all:”Liszt: A Domain

Specific Language for Building Portable Mesh-based PDEsolvers“ in Proceedings of 2011 International Conference forHigh Performance Computing, Networking, Storage andAnalysis, ser. SC’11. New York, NY, USA: ACM, 2011

R. Torres, L. Linardakis, J. Kunkel, T. Ludwig:”ICON DSL: A

Domain-Specific Language for climate modeling“.

Jonas Gresens Domain-specific languages: Examples 33 / 33