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 ...
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