Lizenz: | Titel: | libcppa on SIMD machines - GPGPU computing using transparent C++11 actors and OpenCL | Sprache: | Englisch | Autorenschaft: | Hiesgen, Raphael | Schlagwörter: | libcppa on SIMD machines | Erscheinungsdatum: | 17-Dez-2013 | Zusammenfassung: | In recent years, graphics processing units (GPU) developed from single-purpose pipelines to clusters of data-parallel programmable units. Their performance is no longer reserved for graphics calculations, but can be used for general-purpose computing. A highly parallel architecture enables GPUs to outperform CPUs by several orders of magnitude for various use cases. Frameworks like OpenCL or CUDA give access to their capabilities. The objective of this work is to raise the abstraction level of GPGPU programming by combining it with the actor model. The actor model provides a high level approach to concurrency and offers mechanisms to built fault tolerant distributed systems. Our work focuses specifically on OpenCL and libcppa, an actor library written in C++11. We present the concept of the OpenCL-enabled actor, which offers an easy way to deploy code to GPUs. It is integrated into the runtime environment of libcppa and gives rise to transparent message passing in distributed systems and on heterogeneous hardware. Actors on the GPU are instantiated by the function spawn_cl, which handles the OpenCL setup process in the background. Messages sent to the OpenCL actor are used as arguments to trigger a kernel execution. Once the kernel finishes, the actor sent the results to the actor that requested the calculation. We examined our implementation for overhead over the native OpenCL API and find that the induced overhead is negligible. In den letzten Jahren haben sich Grafikprozessoren (GPU) von dedizierten Pipelines zu Gruppen von datenparallelen programmierbaren Kernen entwickelt. Ihre Rechenleitung ist nicht mehr nur für graphische Instruktionen reserviert, sondern lässt sich für universelle Berechnungen nutzen. Eine hochparallele Architektur führt dazu, dass GPUs in manchen Bereichen eine deutlich höhere Leistung erzielen als CPUs. Spezielle Frameworks wie CUDA oder OpenCL haben sich als Programmierschnittstelle für diese Systeme etabliert. Das Ziel dieser Arbeit ist es, GPUs von einer höhere Abstraktionsebene aus programmierbar zu machen, indem wir GPGPU mit dem Actor Model vereinen. Das Actor Model schafft eine Abstraktion über parallele Systeme und bietet Möglichkeiten verteilte, fehlertolerante Systeme zu bauen. Im Speziellen beschäftigen wir uns mit OpenCL und der C++11 Actor Library libcppa. Wir präsentieren den OpenCL Actor, der eine einfache Möglichkeit bietet, Code auf einer GPU auszuführen. Er ist in die Laufzeitumgebung von libcppa integrieret und ermöglicht transparentes Message Passing in verteilten Systemen auf heterogener Hardware. Actoren für die GPU werden durch die Funktion spawn_cl instanziiert, die das Setup für OpenCL im Hintergrund durchführt. Empfangene Nachrichten werden vom OpenCL Actor als Argumente für ein auf der GPU ausgeführtes Program genutzt. Die Ergebnisse aus der Berechnung werden anschließend an der Actor gesandt, der die Berechnung initiiert hat. Eine empirische Untersuchung der Mehraufwände zeigt deutlich, dass der induzierte Mehraufwand unserer Implementierung gegenüber den nativen OpenCL API vernachlässigbar ist. |
URI: | http://hdl.handle.net/20.500.12738/6224 | Einrichtung: | Department Informatik | Dokumenttyp: | Abschlussarbeit | Abschlussarbeitentyp: | Bachelorarbeit | Hauptgutachter*in: | Schmidt, Thomas | Gutachter*in der Arbeit: | Esser, Friedrich |
Enthalten in den Sammlungen: | Theses |
Dateien zu dieser Ressource:
Datei | Beschreibung | Größe | Format | |
---|---|---|---|---|
final_logo.pdf | 364.05 kB | Adobe PDF | Öffnen/Anzeigen |
Feedback zu diesem Datensatz
Export
Alle Ressourcen in diesem Repository sind urheberrechtlich geschützt.