Fulltext available Open Access
License: 
Title: libcppa on SIMD machines - GPGPU computing using transparent C++11 actors and OpenCL
Language: English
Authors: Hiesgen, Raphael 
Keywords: libcppa on SIMD machines
Issue Date: 17-Dec-2013
Abstract: 
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
Institute: Department Informatik 
Type: Thesis
Thesis type: Bachelor Thesis
Advisor: Schmidt, Thomas  
Referee: Esser, Friedrich 
Appears in Collections:Theses

Files in This Item:
File Description SizeFormat
final_logo.pdf364.05 kBAdobe PDFView/Open
Show full item record

Page view(s)

63
checked on Mar 28, 2024

Download(s)

16
checked on Mar 28, 2024

Google ScholarTM

Check

HAW Katalog

Check

Note about this record


Items in REPOSIT are protected by copyright, with all rights reserved, unless otherwise indicated.