Detailseite
Projekt Druckansicht

CLAK: Eine automatische Umgebung für lineare Algebra-Gleichungen

Fachliche Zuordnung Softwaretechnik und Programmiersprachen
Förderung Förderung von 2015 bis 2020
Projektkennung Deutsche Forschungsgemeinschaft (DFG) - Projektnummer 266457877
 
Dieses Proposal befasst sich mit der Entwicklung von CLAK, einem domänenspezifischen Compiler für Probleme der linearen Algebra. Ausgehend von der Beschreibung einer Matrix-Gleichung, mathematisch ausgedrückt in Form von Vektoren, Matrizen und Tensoren, erzeugt CLAK automatisch Algorithmen und High-Performance-Routinen für sequenzielle und shared-memory Architekturen. Das langfristige Ziel ist ein drastischer Anstieg der Produktivität vonIngenieuren und Informatikern.Das grundlegende Konzept hinter CLAK ist die Idee, dass die Benutzer mehr Informationen über die jeweilige Anwendung besitzen als in traditionellenUmgebungen ausgedrückt werden kann. Angemessen ausgenutzt führt dieses Wissen zu signifikanten Speedups. Momentan können Benutzer wählen zwischen einem "Low-Level"-Ansatz, d.h. der manuellen Entwicklung und Umsetzung derAlgorithmen in Sprachen wie C oder Fortran, oder einem "High-Level"-Ansatz, d.h. in benutzerfreundlichen Umgebungen wie Matlab oder Eigen. Beide Ansätzehaben Vor- und Nachteile: Ersterer kann zu effizienten Lösungen führen,trägt jedoch das Risiko hoher Kosten und langer Entwicklungszeiten mit sich; letzterer ermöglicht stattdessen eine rapide Entwicklung, bringt allerdings durchausgravierende Einschnitte bei der Performance mit sich. Mit CLAK streben wir eine Schnittstelle an, die gleichzeitig ausdrucksstärker ist als Umgebungen wie Matlab und dabei mit dem Performance-Level von "Blackbox"-Fortran-Bibliothekenwie LAPACK gleichauf liegt oder diese sogar übertrifft.Insbesondere sind CLAKs charakteristische Merkmalea) die Ausdruckskraft der Eingabespracheb) die wissensbasierte Generierung von Algorithmen undc) die Generierung von Code basierend auf Hochleistungs-Kerneln,bereitgestellt von (bestehenden) numerischen Bibliotheken.CLAK wird eine Sprache enthalten, die es Benutzer erlaubt, Gleichungenzusammen mit eine Vielzahl von Eigenschaften auszudrücken, die daraufhin automatisch berücksichtigt und genutzt werden. Ähnlich wie "general-purpose"-Compiler --- die als Eingabe ein Computerprogramm erhalten und auf eine bestimmte Architektur optimierten Maschinencode erzeugen --- ist die Idee hinter der Algorithmengenerierung in CLAK die Zerlegung der Eingabe-Gleichung in vorgegebene Kernel, die von Hochleistungs-Bibliotheken bereitgestellt werden. Das Herzstück des Prozesses ist eine "Knowledge Engine" und mehrere"Sprachen" (interne Repräsentationen). Die "Engine" --- basierend auf einer Datenbank aus Identitäten, Eigenschaften und Theoremen --- ermöglicht es, Eigenschaften komplexer Ausdrücke von denen der Teilausdrücke abzuleiten. Diese internen Darstellungen ermöglichen es, die mathematisch ausgedrückte Gleichung unter Anwendung verschiedener algorithmischer Optimierungen in effizienten Code zu überführen. Dabei werden Entscheidungen statt durch eine erschöpfende Suche stets auf Basis des problemspezifischen Wissens gefällt.
DFG-Verfahren Sachbeihilfen
 
 

Zusatzinformationen

Textvergrößerung und Kontrastanpassung