Die Verbindung von GPU-Computing und webbasierten Anwendungen hat in den letzten Jahren enorm an Bedeutung gewonnen. Mit HipScript tritt eine innovative Lösung hervor, die es erlaubt, CUDA-Code im Webbrowser auszuführen. Die ursprünglich von NVIDIA entwickelte CUDA-Technologie ist für die programmierbare Verarbeitung auf Grafikkarten bekannt und ermöglicht eine immense Beschleunigung rechenintensiver Anwendungen. HipScript kombiniert CUDA, den Konkurrenten HIP von AMD und moderne Web-Technologien wie WebAssembly und WebGPU, um die Ausführung von Hochleistungs-GPU-Code im Browser zu ermöglichen – ohne dedizierte native Installationen oder Plugins. CUDA (Compute Unified Device Architecture) ist eine API, die speziell von NVIDIA entwickelt wurde, um General-Purpose-Computing auf Grafikkarten zu ermöglichen.
Ein CUDA-Compiler übersetzt den Quellcode gleichzeitig für die GPU-Architektur und den Host-Computer, womit derselbe C++-Code sowohl auf der CPU als auch auf der GPU ausgeführt wird. Entscheidendes Merkmal der CUDA-Programmierung sind die sogenannten CUDA-Kerne oder Kernel, die jeweils für einzelne Threads geschrieben werden, aber parallel auf einer Vielzahl von Threads und Blöcken ausgeführt werden können. Diese Struktur erlaubt eine effiziente Parallelisierung von komplexen Berechnungen. AMD reagierte mit HIP (Heterogeneous-computing Interface for Portability) auf die Dominanz von CUDA. Die Syntax und Konzepte von HIP sind bewusst nahezu identisch zu CUDA gestaltet, was das Portieren von CUDA-Projekten erleichtert.
HipScript nutzt diese Gemeinsamkeiten, indem es CUDA-Aufrufe in HIP-Aufrufe übersetzt und so grundsätzlich von der breiteren Palette an unterstützten Geräten profitiert. Die technische Umsetzung von HipScript ist bemerkenswert: Der Quellcode durchläuft eine komplexe Toolchain bestehend aus chipStar, Clspv und Tint. Dabei wird der CUDA/HIP-Code zuerst mittels Clang in LLVM-Bytecode übersetzt, welcher dann durch chipStar in OpenCL-Code gewandelt wird. Clspv konvertiert diesen OpenCL-Code anschließend in Vulkan-Shader, und Tint übersetzt diesen schließlich in WGSL (WebGPU Shading Language). Dieser Prozess ermöglicht es, den ursprünglich für NVIDIA-GPUs geschriebenen Code auf der Webplattform auszuführen, indem die native GPU-beschleunigte Pipeline des Browsers genutzt wird.
Der Clou an HipScript ist die Integration von WebAssembly (WASM), das eine effiziente und sichere Ausführung von Low-Level-Code im Browser erlaubt. Durch die Nutzung von WASM konnten die Entwickler den umfangreichen LLVM-Compiler und die Toolchain ins Web übertragen, was normalerweise enorme Ressourcen erfordert. Die WebAssembly-Implementierung des HIP-APIs übernimmt dabei die Verwaltung von Speicher, Kernel-Starts und anderen GPU-Aufrufen und macht den gesamten Prozess für den Nutzer transparent. Die Unterstützung in HipScript konzentriert sich aktuell auf einen soliden Grundstock relevanter CUDA/HIP-Funktionalitäten. Dazu gehören die grundlegende Kernel-Start-Syntax, dynamischer und statischer Shared Memory sowie threadübergreifende Synchronisationsmechanismen wie __syncthreads.
Auch Funktionen wie printf und assert sind implementiert, was das Debuggen und Testen von GPU-Code im Browser erheblich erleichtert. Darüber hinaus werden Speicherzuweisung und Kopieroperationen wie hipMalloc, hipMemcpy sowie die Mechanismen zur Erfassung und Behandlung von GPU-Fehlern unterstützt. Allerdings stößt HipScript auch an Grenzen, die einerseits durch technische Restriktionen von WebGPU und WebAssembly bedingt sind, andererseits durch den Fokus auf die grundlegende Funktionalität zum Lernen und Experimentieren mit GPU-Programmierung. So sind beispielsweise Streams, Graphen, 64-Bit-Gleitkommazahlen sowie komplexe Pointer-Manipulationen derzeit nicht vorhanden. Die fehlende Unterstützung für dynamische Parallelität und umfangreiche GPU-Bibliotheken wie cuDNN oder cuBLAS unterstreicht, dass es sich bei HipScript primär um eine innovative Lernplattform und Proof-of-Concept handelt, statt um eine vollwertige Produktionslösung.
Die technische Implementierung war mit Herausforderungen verbunden. Das HIP- und CUDA-Front-End Clang verwendete den SPIR-V-Standard als Zwischencode, um den späteren Übergang in Vulkan-Shader zu optimieren. Zudem war die Wahl des Laufzeit-Systems essenziell: Die Entwickler entschieden sich für den Wasmer Runtime, der die Ausführung von WebAssembly-Modulen im Browser ermöglicht, jedoch gab es aufgrund von noch nicht ausgereiften Debugging-Werkzeugen und Fehlern in der SDK-Implementierung einige Hindernisse. Die manuelle Verwaltung von Downloads, Caching sowie das Aufsetzen von isolierten Web-Workern waren notwendige Workarounds, um Stabilität zu gewährleisten. Der Raum, der durch HipScript besetzt wird, eröffnet für Webentwickler und Forscher eine neue Welt: GPU-Code direkt im Browser kann für educationale Zwecke, Prototyping oder gerade bei Cloud-basierten Lösungen einen erheblichen Vorteil darstellen.
Keine lokale CUDA-Installation oder GPUs mit speziellen Treibern sind dafür nötig. Die Integration ins Internet-Ökosystem macht es möglich, GPU-Rechenleistung für mehr Nutzer zugänglich zu machen, was bisherige Beschränkungen der Hochleistungsrechner zum Teil aufhebt. Über die technische Umsetzung hinaus zeichnen sich auch neue Perspektiven für den Einsatz von GPU im Web ab. WebGPU, der Nachfolger von WebGL, funktioniert als universelle Schnittstelle, die Vulkan-, Metal- und Direct3D-12-Schnittstellen abstrahiert und somit Hardware-unabhängig ist. HipScript setzt genau hier an und zeigt, wie sich CUDA-ähnliche Programmierung auf diesen modernen Web-Standards abbilden lässt.
Damit verlagert sich Hochleistungsgrafik und -berechnung immer mehr ins Ecosystem des Browsers. Nicht zu vernachlässigen ist die Bedeutung der effizienten Datenübertragung und Dateigröße, wenn man Entwicklungsumgebungen der Größe von LLVM im Browser realisiert. Hier haben Entwickler von HipScript durch moderne Kompressionsverfahren wie Brotli und den Einsatz von Cloudflare R2 als Speicher und Distribution eine praktikable Lösung gefunden. Der Fokus auf schlanke Binärdateien sorgt für schnellere Ladezeiten und bessere User-Experience. HipScript ist damit ein Meilenstein, der zeigt, wie komplexe, plattformübergreifende und hochperformante GPU-Programme bald auch ohne native Installation direkt im Webbrowser ausgeführt werden können.
Insbesondere für Bildung, Forschung und experimentelle Programmierung können Webanwendungen so einen enormen Innovationsschub erhalten. Die Idee, die komplexen Compiler- und Laufzeitkomponenten von CUDA und HIP auf eine Webplattform zu bringen, hat Potenzial weit über die derzeitige Umsetzung hinaus. Mit weiterer Verbesserung von WebGPU und WebAssembly wird es künftig möglich sein, noch leistungsfähigere und vollständigere GPU-Lösungen im Browser zu realisieren. Entwickler, die heute bereits mit HipScript experimentieren, sind somit Teil einer spannenden Entwicklung, die die Art und Weise, wie und wo GPU-Code ausgeführt wird, nachhaltig verändern kann. Zusammenfassend lässt sich sagen, dass HipScript eine zukunftsweisende Technologie ist, die die Brücke zwischen etablierten GPU-Computing-APIs und der offenen Webplattform schlägt.