2016-05-16 20 views
0

Ich führe eine große Anzahl von Berechnungen durch. Jede Berechnung ist unabhängig voneinander, mit anderen Worten, die Aufgabe könnte parallelisiert werden, und ich möchte den Job auf die GPU ausgleichen.Verrechnung auf die GPU

Insbesondere bin ich zu schaffen, Licht/Schatten-Karten für eine OpenGL-Anwendung, und die Berechnungen sind eine Reihe von Vektor-Mathematik, Skalarprodukte, Quadratwurzeln usw.

Was sind hier meine Optionen? Unterstützt OpenGL nativ so etwas oder sollte ich nach einer externen Bibliothek/einem externen Modul suchen?

+0

Ich weiß nicht über OpenGL, aber ich weiß, dass CUDA es unterstützt. Zielen Sie auf eine bestimmte Plattform? Wenn dies der Fall ist und CUDA aktiviert ist, sollten Sie es überprüfen. Es gibt ein paar .NET-Lösungen - https://cudafy.codeplex.com wäre ein guter Ausgangspunkt. Es unterstützt sogar die Übersetzung zu OpenCL, obwohl ich es noch nie probiert habe. –

+0

Ich schreibe für Windows und MacOS und hatte den Eindruck, dass CUDA nur mit Nvidia-Karten funktionierte. Ich werde das überprüfen. –

+0

Sorry für die Verwirrung, nach Plattform meinte ich die Grafikkarte. Es funktioniert in der Tat nur für Nvidia-Karten, weshalb ich es erwähnt habe. Es wird angeblich in OpenCL übersetzt, das auf allen Plattformen funktioniert, aber ich habe es nicht ausprobiert. –

Antwort

2

Compute Shader ist die generische für CUDA, die wie eine erweiterte Berechnung für nVidia ist. Beachten Sie, dass Sie keine der beiden Funktionen verwenden müssen. Sie können Kalakulationen mithilfe eines Vertex-> Geomerty-Streams durchführen oder mit einem Pixelshader rendern. Solange Sie die Ergebnisse als eine Sammlung von Werten (einen Vertex-Puffer oder eine Textur) darstellen können, können Sie die Renderpipeline verwenden, um Ihre Berechnungen durchzuführen.

+0

Ich habe diesen Gedanken den ganzen Abend verfolgt, du hast Recht, ich denke, es ist weit weg. –