Cublas oder unterstützte Bibliotheken und Betonung für das Lesen für einen Anfänger

StackOverflow https://stackoverflow.com/questions/1549920

  •  20-09-2019
  •  | 
  •  

Frage

Ich versuche, die Kraft der GPU (NVIDIA Quadro NVS140M) zu nutzen, um einige Matrixberechnungen in meinem Projekt zu beschleunigen. Ich lese einige Dokumentationen (Programmierhandbuch, Best Practices -Handbuch und Referenzhandbuch), aber nicht sicher, auf welche Abschnitte ich mich konzentrieren sollte. Es wäre großartig, wenn ich dazu einige Ratschläge erhalten kann.

Außerdem frage ich mich, ob es Drittanbieter gibt, die SDKs wie Cublas.net gewartet haben, die den Cublas-Entwicklungsprozess vereinfachen können, bevor ich mich an die Funktionen von Cublas halte, die mir helfen würden, meine Ziele mit meinem Projekt zu erreichen. Nochmals vielen Dank im Voraus für die Kommentare.

War es hilfreich?

Lösung

Der größte Teil der Dokumentation, die mit den Downloads von CUDA Toolkit & SDK geliefert werden, handelt von CUDA im Allgemeinen, nicht um Cublas. Beginnen Sie mit dem CUBLAS_Library_2.3.pdf Datei, wenn Sie nur Cublas verwenden möchten-Sie müssen Ihre eigenen Cuda-Kernel nicht schreiben. Wenn Sie bereits ein CPU -BLAS verwenden, sollten Cublas nicht schwer abzuholen sein. (Und wenn dies nicht der Fall ist, sollten Sie eine optimierte CPU vor dem Cublas ausprobieren, da es einfacher zu programmieren ist).

Wenn Sie auf .NET codieren, ist der einfachste Weg, Cublas zu verwenden, wahrscheinlich über Plattform-Invoke-Anrufe in cublas.dll. Achten Sie darauf, dass Sie gerade behalten, welche Arrays im Host -Speicher (CPU) und welches im GPU -Speicher (Geräte) enthalten sind.

Denken Sie daran, dass Cuda & Cublas keine magischen Kugeln sind. Die Leistung hängt von vielen Faktoren ab (insbesondere über den PCIe-Bus), und die Aufrufe von CPU-Blas können Sie möglicherweise nicht beschleunigt. Möglicherweise müssen Sie mehr Änderungen an Ihrem eigenen Code vornehmen, um Leistungsverbesserungen zu erzielen. Diese anderen Anleitungen, die Sie erwähnen, sind sehr nützlich, um die CUDA -Architektur und ihre Engpässe zu verstehen.

Bearbeiten: Ich war mir nicht klar, dass die Grenze zwischen Benutzercode und Kernelcode. Cublas ist eine Bibliothek mit vorgefertigten, optimierten Cuda-Kerneln. Wenn Sie nur BLAS -Funktionen benötigen, müssen Sie Ihre eigenen Kernel nicht schreiben. Rufen Sie stattdessen einfach Cublas -Funktionen an. Wenn Sie die Leistungssteuerung stimmen, sollten Sie die Cublas -Kernel nicht optimieren, aber Sie müssen möglicherweise ändern, wie und wenn Sie sie anrufen und wie Sie den Speicher verwenden, um die Anzahl der Übertragungen im PCI Express -Bus zu minimieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top