| 

.NET C# Java Javascript Exception

6
Ich habe ein ziemlich komplexes Programm und möchte daher einige Berechnungen an den Grafikprozesor auslagern.Ich habe schon gelesen, dass die möglich sein soll. Fragt sich nur wie?
30.12.2011
joslup9 31 1 2
LiRo 1,3k 1 9
3 Antworten
4
Bei Microsoft Research gibt es das Accelerator-Projekt, das generell für parallele Berechnungen gedacht ist und unter anderem auch die Berechnung auf GPUs bietet: hier

Von NVIDIA gibt es ja CUDA für die Berechnungen auf (logischerweise nur NVIDIA) Grafikkarten und es gibt auch einen DotNet-Wrapper dafür, allerdings kann ich nichts zu dessen Funktionalität sagen: hier

Schließlich ist mir noch OpenCL bekannt, das unabhängig vom Grafikkartentyp funktioniert (und auch für Multi-Cores, ...), für das auch ein DotNet-Wrapper existiert: hier bzw. hier

Es sei noch gesagt, dass das massive Parallelrechnen nicht für jedes Problem geeignet ist und du unter Umständen den Berechnungsalgorithmus sehr stark an die verwendete Technologie anpassen musst.
30.12.2011
LunaticShade 507 4
2
Dazu kannst du OpenCL (Tutorial) verwenden. Über XNA dürfe auch eine OpenCL-Schnittstelle verfügbar sein.

Außerdem kannst du mit einer GPU nur bestimmte Probleme lösen. Diese müssen "zerteilbar" sein. Die GPU ist nur bei vielen Parallel ausführbaren Aufgaben gut. Hast du ein Problem, welches du nicht parallel laufen lassen kannst wird die Gewindigkeit eher gering ausfallen, da ein GPU-"Kern" langsamer getaktet ist als ein CPU-Kern.

PS: OpenCL läuft auf einer NVidia und auf einer ATI/AMD Grafikkarte. Wenn keine Grafikkarte vorhanden ist, dann sogar auf der CPU.
30.12.2011
LiRo 1,3k 1 9
LiRo 1,3k 1 9
2
CUDA ist glaube ich am bekanntesten und es gibt Tonnen von Material. Braucht man halt eine NVIDIA Grafikkarte glaube ich.

http://dotnet-forum.de/KnowledgeBase/articles/2009/08/02/331-rechnen-mit-der-grafikkarte-gpgpu-.aspx
30.12.2011
sebastianstehle 444 6

Stelle deine .net-Frage jetzt!