C #: Führen Sie Operationen auf GPU, nicht CPU (Berechnungs Pi) [geschlossen]
Frage
Ich habe gelesen, vor kurzem viel über Software (meist wissenschaftliche / Mathematik und Verschlüsselung im Zusammenhang), die einen Teil ihrer Berechnung auf der GPU bewegt, die für unterstützte Operationen ein 100-1000 (!) Fache Steigerung der Geschwindigkeit verursacht.
Gibt es eine Bibliothek, API oder andere Weise etwas auf der GPU über C # laufen? Ich denke an einfacher Pi-Berechnung. Ich habe einen GeForce 8800 GTX, wenn das überhaupt relevant ist (würde es vorziehen, Karte, obwohl unabhängige Lösung).
Lösung
Es ist eine sehr neue Technologie, aber Sie könnten untersuchen CUDA . Da Ihre Frage mit C # markiert ist, ist hier ein . Net-Wrapper .
Als Bonus, wie es scheint, dass Ihr 8800 GTX unterstützt CUDA.
Andere Tipps
Eine weitere Option, die nicht für GPU-Berechnung von C # erwähnt hat, ist Brahma .
Brahma ein-LINQ basierte Abstraktion für GPU-Berechnungen - es ist im Grunde LINQ to GPU . Es funktioniert über OpenGL und DirectX ohne zusätzliche Bibliotheken (aber erfordert SM3). Einige der Proben sind ziemlich erstaunlich.
Sie können unter diese Frage
aussehen wollenSie suchen wahrscheinlich für Accelerator , aber wenn Sie sind in der Entwicklung von Spielen im allgemeinen interessiert ich werde vorschlagen, dass Sie einen Blick auf XNA nehmen
CUDA.NET sollte genau das sein, was Sie sind suchen, und es scheint, spezifische Grafikkarte zu unterstützen.
Sie können den neuesten Direct3D-APIs zugreifen .NET mit dem Windows-API-Code-Pack . Direct3D 11 kommt mit Compute Shaders. Dies sind in etwa vergleichbar mit CUDA, sondern arbeiten auch an Nicht-NVIDIA-GPUs.
Beachten Sie, dass Managed DirectX und XNA werden den Direct3D 9 Funktionsumfang beschränkt, die etwas schwierig ist, für GPGPU zu verwenden.
Es gibt eine Reihe von .Net-Bindings für Nvidias CUDA api, nennt man das CUDA.net . Sie können auf die Referenzhandbuch irgend Probe C # -Code zu suchen.
Der bevorzugte Weg, um Ihren Co-proccesor (GPU) zugreifen würde mit OpenCL so dass Ihr Code würde mit ATI-Karten tragbar sein, aber ich glaube, dass es zusätzliche Codierung erforderlich sein kann, und ich bin nicht sicher, wie viel Unterstützung OpenCL für die .NET-Plattform hat.
Wenn Sie C ++ verwenden möchten, hier ist eine schnelle Übersicht , wie einige Beispiel-Code mit Visual Studio kompilieren zu erhalten.
Zu Ihrer Information: Beschleuniger ( http://research.microsoft.com/en- wir / Projekte / Beschleuniger / ) arbeiten groß für ein paar Tests.