[gelöst] Grafikkarte für Berechnungen nutzen (Bibliothek?)



  • Hi,
    das hier ist der Forenbereich, in den die Frage meiner Meinung nach noch am Besten passt. Ich habe zur Zeit einige noch nicht ganz ausgereifte Gedanken im Hinterkopf. Diese betreffen eine Bildanalyse, welche, wenn ich sie fertig durchdacht habe, wahrscheinlich sehr rechenintensiv wird. Ich habe noch nie ein Programm für mehrere Threads geschrieben, aber dieses Programm werde ich dann für Mehrkernprozessoren auslegen. Da das Bild in vielen Schritten pixelweise analysiert wird, wären theoretisch genauso viele Threads wie Pixel möglich.
    Ich habe schon viel von verschiedenen Anwendungen gehört, bei denen Grafikkarten für solche Berechnungen benutzt werden, da sie ja große Mengen zeitgleicher Operationen ausführen können. Gleichzeitig bietet es sich auch an die Ergebnisse der einzelnen Analysedurchläufe im Grafikspeicher einer Grafikkarte direkt zu speichern, um noch schneller Zugriff darauf zu haben.
    Meine Frage ist jetzt, gibt es eine Bibliothek (am besten für Linux und Windows), eventuell direkt über das Betriebssystem, um mit der Grafikkarte außerhalb der Grafikdarstellung zu kommunizieren? Oder wie wird so etwas sonst umgesetzt?

    Schonmal danke fürs durchlesen, ich hoffe jemand kennt sich in der Richtung ein wenig aus. 🙂





  • Danke für die schnelle Antwort 👍 🙂 . CUDA klingt echt gut. Muss mich da mal ausführlich einlesen.



  • CUDA hat den Nachteil dass es nur auf NVIDIA Hardware läuft. OpenCL dagegen läuft praktisch auf jeder Direct3D 10+ Grafikkarte.



  • CUDA hat dafür den Vorteil dass es viel kuhler ist 😃
    Ne, aber im Ernst: wie gut oder schlecht anwendbar ist OpenCL denn mittlerweile?



  • hustbaer schrieb:

    Ne, aber im Ernst: wie gut oder schlecht anwendbar ist OpenCL denn mittlerweile?

    Auch wenn ich selbst bisher nur mit CUDA gearbeitet hat, afaik sind OpenCL und DirectCompute mittlerweile wirklich verwendbar...



  • Gibt's da (OpenCL) auch nen hübschen C++ Compiler, so dass man direkt und mehr oder weniger transparent C++ Code auf der Graka laufen lassen kann?

    DirectCompute ist für mich jetzt nicht SO interessant, das hat man ja erst wieder die Einschränkung auf Windows.



  • hustbaer schrieb:

    Gibt's da (OpenCL) auch nen hübschen C++ Compiler, so dass man direkt und mehr oder weniger transparent C++ Code auf der Graka laufen lassen kann?

    Nope, afaik lauft das ziemlich gleich wie mit GLSL ab. Die Sprache dürfte daher nicht so mächtig sein wie CUDA C, aber nagel mich nicht drauf fest, habs, wie gesagt, noch wie verwendet 😉



  • hustbaer schrieb:

    Gibt's da (OpenCL) auch nen hübschen C++ Compiler, so dass man direkt und mehr oder weniger transparent C++ Code auf der Graka laufen lassen kann?

    DirectCompute ist für mich jetzt nicht SO interessant, das hat man ja erst wieder die Einschränkung auf Windows.

    Nope, du schreibst kernel in OpenCL C, ner c99 erweiterung (mit einschränkungen) welche von der runtime dann kompiliert werden.



  • thrust ist eine nette CUDA Bibliothek im Stil der C++ STL.



  • Sieht gut aus, muss ich gleich mal probieren, nachdem ich meine Use Cases für den IRC Bot fertig habe 🙂


Log in to reply