03.03.2013 Aufrufe

Effizientes Lösen linearer Gleichungssysteme über GF(2) - CDC ...

Effizientes Lösen linearer Gleichungssysteme über GF(2) - CDC ...

Effizientes Lösen linearer Gleichungssysteme über GF(2) - CDC ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

2.4. CUDA 13<br />

einem C-Style Interface und zum anderen eine High-Level Funktion mit einem<br />

C++-Style Interface, welches auf der ersten aufbaut. Code dieser API<br />

muss mit dem von NVIDIA mitgelieferten nvcc-Compiler kompiliert werden.<br />

CUDA Driver API<br />

Die CUDA Driver API benötigt im Gegensatz zu C Runtime for CUDA<br />

mehr Code und lässt sich schwieriger programmieren und debuggen. Im Besonderen<br />

ist es aufwendiger Kernel zu konfigurieren und einzusetzen. Da<br />

diese Schnittstelle keine C-Erweiterungen enthält ist es nicht möglich eine<br />

Syntax wie bei der High-Level API zu verwenden. Statt dessen werden Kernel<br />

als Module von CUDA in Binär- oder Assemblercode geladen und die<br />

Ausführungskonfigurationen und Parameter müssen mit expliziten Funktionsaufrufen<br />

spezifiziert werden. Allerdings besteht dadurch die Möglichkeit<br />

sprachenunabhängig zu programmieren und andere Compiler zu verwenden.<br />

Des Weiteren ist die API unabhängig von der Laufzeitbibliothek, wodurch<br />

der Anwender mehr Kontrolle <strong>über</strong> das Device hat. Die meisten Funktionen<br />

sind in beiden APIs enthalten. Dennoch verfügt die Driver API <strong>über</strong> zusätzliche<br />

Anwendungen, mit denen beispielsweise der Kontext von einem Thread<br />

einem anderen <strong>über</strong>geben werden kann.<br />

Die CUDA Driver API ist nur rückwärtskompatibel. Das heißt, dass Anwendungssoftware,<br />

Plug-ins und Bibliotheken nicht auf Systemen mit einer<br />

älteren Version laufen können und alle Plug-ins und Bibliotheken untereinander<br />

die selbe Laufzeitbibliothek benutzen müssen.<br />

Verwendung von Texturen<br />

Um den Texturspeicher und das damit verbundene Cachen von Daten verwenden<br />

zu können, muss während der Laufzeit ein Bereich im globalen Speicher<br />

als Textur bestimmt werden. Die Texturen können sich <strong>über</strong>lappen und<br />

es ist möglich mehrere verschiedene <strong>über</strong> dem selben Bereich zu definieren.<br />

Weitere Informationen zu diesem Speicher folgen in Kapitel 2.5.4.<br />

2.4.2 Erweiterungen der C-Programmiersprache<br />

Wie bereits in Kapitel 2.4.1 erwähnt verwendet die C Runtime for CUDA<br />

API C-Erweiterungen. Hier soll nur ein grober Überblick gegeben werden und

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!