Frage

Ich versuche, eine Anwendung in der Echtzeit-3D-Modellierung zu optimieren. Der berechnete Teil der Anwendung läuft fast vollständig auf der GPU in Cuda. Die Anwendung erfordert die Lösung eines kleinen (6x6) doppelten Präzisionssymmetrisches positives, definitives lineares System AX= B 500+ Mal pro Sekunde. Derzeit erfolgt dies mit einer effizienten CPU-basierten linearen Algebra-Bibliothek mithilfe von Choleky, erfordert jedoch das Kopieren von Daten von der CPU-GPU und der Rückenlehne der GPU hunderte Male pro Sekunde und der Overhead of Kernel startet jedes Mal usw.

Wie kann ich die Lösung an das lineare System an der GPU ausschließlich berechnen, ohne dass die Daten überhaupt auf die CPU eingehen müssen? Ich habe ein wenig über die Magma-Bibliothek gelesen, aber es scheint Hybridalgorithmen und nicht nur GPU-Algorithmen zu verwenden.

Ich bin darauf vorbereitet, dass die Lösung eines einzelnen linearen Systems auf der GPU viel langsamer sein wird als mit der vorhandenen CPU-basierten Bibliothek, aber ich möchte sehen, ob das mit dem Entfernen der Die Datenkommunikation zwischen dem Host und dem Gerät und dem Overhead of Kernel startet Hunderte von Male pro Sekunde. Wenn es keine GPU gibt, nur Lapack-ähnliche Alternative da draußen, wie würde ich etwas umsetzen, um diesen 6x6-Fall nur 6x6 in der GPU zu lösen? Könnte es ohne eine riesige Zeitinvestition mit GPU BLAS-Bibliotheken erfolgen?

War es hilfreich?

Lösung

nvidia Posted Code für einen Batched AX= B Solver an die registrierte Entwickler-Website im letzten Fall. Dieser Code arbeitet für generische Matrizen und sollte für Ihre Bedürfnisse gut genug funktionieren, vorausgesetzt, Sie können die symmetrischen Matrizen auf volle Matrizen erweitern (dh kein Problem für einen 6x6?). Da der Code schwenkbar ist, der für positive, bestimmte Matrizen nicht erforderlich ist, ist es für Ihren Fall nicht optimal, aber Sie können sie möglicherweise für Ihre Zwecke ändern, da der Code unter einer BSD-Lizenz steht.

NVIDIAs Standard-Entwickler-Website erscheint momentan einige Probleme. So können Sie den Batched Solver-Code zu diesem Zeitpunkt herunterladen:

(1) Gehen Sie zu http://www.nvidia.com/content /cuda/cuda-toolkit.html

(2) Wenn Sie ein vorhandenes NVDeveloper-Konto haben (z. B. über Partner.nvidia.com) Klicken Sie auf der rechten Seite des Bildschirms auf das Green "Anmelden in NVDeveloper". Andernfalls klicken Sie auf "Join NVDeveloperer", um ein neues Konto zu beantragen. Anfragen nach neuen Konten werden in der Regel innerhalb eines Werktags genehmigt.

(3) Anmelden an der Eingabeaufforderung mit Ihrer E-Mail-Adresse und einem Kennwort

(4) Es gibt einen Abschnitt auf der rechten Seite mit dem Titel "Neueste Downloads". Der fünfte Element von oben ist "Batched Solver". Klicken Sie darauf, und Sie bringt Sie zur Download-Seite für den Code.

(5) Klicken Sie auf den Link "Download" und klicken Sie dann auf "Annehmen", um die Lizenzbedingungen anzunehmen. Ihr Download sollte beginnen.

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