Grafikkarte für allgemeine Berechnungen nutzen



  • Ja, aber nichts konkretes, weil die Informationen sehr allgemein gehalten sind. Einige APIs die die Seite erwähnt, wie ATI Stream, sind spärlich dokumentiert und gehen zudem weit über meine Zwecke. Oder ich stell mich vielleicht an :-?
    Jedenfalls würde ich den Overhead für die Einbindung von GPU-bezogenen Funktionen gerne gering halten, statt zur Runtime zu kompilieren, contexts, devices, queues, threads und Ähnliches zu erzeugen.
    Einen geradlinigen Weg, auf die GPU zuzugreifen, würde ich bevorzugen, deswegen die Frage nach APIs und Libs falls vorhanden.



  • Wie wäre es mit CUDA?

    Ganz banal könnte man sich gewisse Berechnungen auch über einen Shader und Texturen berechnen lassen. (Wobei ich nicht weiss, ob sich das überhaupt lohnt).



  • Kontrasubjekt schrieb:

    Hey

    Für einen Software Renderer...

    Dann ist es aber kein Software Renderer mehr 😉



  • this->that schrieb:

    Dann ist es aber kein Software Renderer mehr 😉

    Streng genommen nein. 🤡 Aber wenn ich die GPU nur wie ne zweite CPU behandle, könnte man es schon sagen. Die Algorithmen sind ja alle Software.

    Wie wäre es mit CUDA?

    Ich hab eine ATI im Rechner. CUDA ist nur für Nvidia.

    Ganz banal könnte man sich gewisse Berechnungen auch über einen Shader und Texturen berechnen lassen. (Wobei ich nicht weiss, ob sich das überhaupt lohnt).

    Hast recht. Danke für den Hinweis. Hab dieses Tutorial dazu gefunden:
    http://www.mathematik.uni-dortmund.de/~goeddeke/gpgpu/tutorial.html
    Was schonmal ein guter Anfang ist. Mal gucken ob das in der Praxis taugt.



  • Naja ganz einfacher Einstieg wäre :

    Du nutzt OpenGL, ohne ein(sichtbares) Render-Device aufzumachen.
    Damit kannst du alles mögliche machen.



  • Servus,

    OpenCL erlaubt dir die Leistung der GraKa zu nutzen. Seit Dezember ist die 1.0er Spezifikation verabschiedet worden und die meisten GPU's unterstützen diese auch. Sofern neuster Treiber 😉

    CUDA sollte vermieden werden, da dies eine plattformspezf. Sprache ist. Was machst du mit einer ATI-Karte, Maxon, ...? Nvidia unterstützt OpenCL mit CUDA und wirkt am Standard mit.



  • Kontrasubjekt schrieb:

    Für einen Software Renderer bräuchte ich zusätzliche Kapazitäten um hohe Frameraten zu erreichen. Ich hab da von GPGPU gehört, was soviel bedeutet dass es Möglichkeiten gibt der Grafikkarte allgemeine Berechnungen zu übergeben

    Ein GPU-beschleunigter Software-Renderer? Was es nicht alles gibt.



  • Kontrasubjekt schrieb:

    Ganz banal könnte man sich gewisse Berechnungen auch über einen Shader und Texturen berechnen lassen. (Wobei ich nicht weiss, ob sich das überhaupt lohnt).

    Hast recht. Danke für den Hinweis. Hab dieses Tutorial dazu gefunden:
    http://www.mathematik.uni-dortmund.de/~goeddeke/gpgpu/tutorial.html
    Was schonmal ein guter Anfang ist. Mal gucken ob das in der Praxis taugt.

    Hmm. Hätte jetzt nicht gedacht, dass es das so wirklich eingestzt wird. (Halt wegen den Alternativen, die man "natürlicher" benutzen kann). Aber melde dich, wenn du mal ein paar Vergleichszahlen hast. 🙂



  • Siassei schrieb:

    Servus,

    OpenCL erlaubt dir die Leistung der GraKa zu nutzen. Seit Dezember ist die 1.0er Spezifikation verabschiedet worden und die meisten GPU's unterstützen diese auch. Sofern neuster Treiber 😉

    Für OpenCL hab ich auf der Khronos website nur includes gefunden. Ich vermute es sollte auch eine lib geben, aber diesbezüglich hab ich keine infos gefunden. Ich krieg nur linker errors.


  • Mod

    vielleicht brockgpu, ich glaube brockgpu+ is teil des streamSDK, es ist quasi ein c++ compiler der teile vom c++ code dann auf vielen threads auf der gpu ausfuehrt.
    in etwa wie openMP fuer gpu.



  • Naja, das funktioniert alles nicht anständig.
    BrookGPU 0.5 kompiliert nicht.
    Brook+ SDK 1.4 kompiliert, führt aber die Kernelfunktion nicht aus. Außerdem ATI spezifisch.
    StreamSDK hat theorethisch GPU support, diesen hat AMD aber rausgenommen und fügt ihn irgendwann wieder hinzu.
    Ziemlich uncool. 👎
    Der Code aus dem Tutorial ist der einzige der macht was er verspricht, nur bin ich mir nicht sicher wie ich das kopieren zwischen RAM/GPU handhaben soll. Eventuell benutz ich den und wrappe alles irgendwann in eine Klasse.


Anmelden zum Antworten