Parallel Data Processing for the Web

Das Web ist die bedeutendste Plattform für alle Arten von Anwendungen. Die Web-Verkehrssprache ist jedoch JavaScript, eine interpretierte Skriptsprache, die in den meisten dieser Anwendungen mit nur einem Thread läuft. Hohe Anforderungen an die Rechenleistung führten zu einer steigenden Anzahl an APIs, die eine hardwareunterstützte Parallelität offenlegen (WebWorker-API, WebGL). Andere werden vorgeschlagen oder sind auf dem Weg (SIMD.js, WebCL, Shared Memory Model). Ein weiterer Trend besteht darin, eine optimierte Teilmenge von JavaScript als Kompilierziel (asm.js), oder sogar als Kompilierformat auf niedriger Ebene für das Web (WebAssembly) zu definieren.

Alle Web-APIs, die Zugriff auf Hardwarefunktionalität bieten, befinden sich auf niedriger Ebene und es wird davon ausgegangen, dass Webentwickler Bibliotheken verwenden, welche die Funktionalität und nicht sofort die API nutzen. Dies funktioniert sehr gut bei WebGL. Hier verwenden Webentwickler Bibliotheken wie three.js oder xml3d.js, die auf einer höheren Abstraktionsebene Mittel für die Entwicklung von 3D-Anwendungen bereitstellen. Die anderen APIs stecken jedoch immer noch in der Prototypenphase fest, in der die meisten Demos typische Anwendungsfälle präsentieren, welche die Datenparallelität optimal ausnutzen können (z. B. Berechnung von Fraktalen). Was fehlt, ist eine Abstraktionsebene für Webentwickler, welche die Nutzung von APIs auf niedriger Ebene vereinfacht und
die Berechnungen automatisch auf die geeignetste (verfügbare) API abbildet.

In diesem Projekt arbeiten wir an einer Bibliothek, mit der sich Webanwendungen entwickeln lassen, die eine effiziente Datenverarbeitung einschließlich Übertragbarkeit der Performance erfordern. Die Fastlane-Bibliothek soll eine höhere Abstraktionsebene bieten. Sie kann daher von Nicht-Experten genutzt werden und lässt sich an die heterogene Web-Umgebung anpassen.

Unser Ziel ist es, ein graphen-basiertes Operatorennetzwerk mit einem JavaScript-Compiler-Framework zu verbinden. Im Netzwerk stellt jeder Knoten eine wiederverwendbare Operation dar. Diese kann mit anderen Operationen im Sinne von Bausteinen kombiniert werden. Das Netzwerk stellt einen Kontrollfluss in Form von Feedbackschleifen dar, der sehr gut zu den Funktionen von Functional Reactive Programming (FRP)-Frameworks passt, die im Web immer beliebter werden. Im Gegensatz zu diesen Frameworks setzen wir unseren Compiler dazu ein, um das Netzwerk zu optimieren, Operationen zusammenzuführen, parallele Operationen zu
planen (Parallelität auf Aufgabenebene) und Teile des Kontrollflussgraphen an APIs anzupassen und Parallelität auf Datenebene herzustellen.

Das Projekt basiert auf der Arbeit zu früheren Intel-VCI-Projekten und den daraus gewonnenen Erfahrungen, insbesondere die Projekte „Compiler-Unterstützung für Hochleistungsgrafiken“ (AnySL) und „Skalierbare, gemeinsam genutzte virtuelle
Welten im Browser“ (Xflow, shade.js). Es wird in Zusammenarbeit mit Moh Haghighat, Senior Principal Engineer bei Intel SSG, und dem SIMD.js-Team bei
Intel durchgeführt.

Project Team

Principal Investigators
Jan Sutter, M. Sc.