Frage

Unter Berücksichtigung der Execute Disable Bit, was die empfohlene Methode ist die Ausführung von Befehlen gegen einen nativen Prozessor von einer hohen Niveau verwalteten Umgebung wie VB.NET 2008 oder C #. Darüber hinaus hat jemand erreicht ähnlich GPU Anweisungen gegen einen Grafikprozessor bei der Ausführung?

War es hilfreich?

Lösung

Es gibt ein paar GPU Optionen für C #, für die direkten Zugriff ohne zu P / Invoke zurückkehren oder Ihren eigenen C ++ Wrapper zu schreiben:

  • Brahma ist recht interessant. Es bietet Zugriff auf die GPU direkt über eine kundenspezifische LINQ-Anbieter. Der Code enthält einige Beispiele von hochBerechnungsMethoden auf der GPU laufen, die alle in C # über LINQ geschrieben.
  • SlimDX bietet eine schöne .NET-Wrapper, um alle der großen DirectX-Funktionalität. Mit benutzerdefinierten Shadern können Sie Berechnung auf der GPU über DirectX zu tun. Es enthält auch DX11-Unterstützung, so dass Sie die Compute Shaders direkt verwenden können (wenn Sie die Hardware dafür haben).
  • Sie können CUDA Zugriff über CUDA.NET .
  • Sie können OpenCL nutzen über OpenCL.NET .

Wie bei CPU-Anweisungen, würde dies in der Regel fallen erfordert Ebene nativen Code mit Assemblerbefehl zu senken. Wahrscheinlich das interessanteste vollständig verwaltet (zumindest teilweise im Zusammenhang) Option wäre Mono. SIMD , die auf die SIMD-Befehle in der CPU von verwalteten Code direkten Zugriff, wenn sie auf dem Mono-Stack.

Andere Tipps

Es ist keine Option. Sie werden eine Funktion in der DLL zu P / Invoke, die von MASM oder geschrieben in nicht verwalteten C / C ++, mit Inline-Assembler oder intrinsics generiert wurde. Oder verwenden Sie die C ++ / CLI-Compiler und erzeugen Mixed-Mode-Code mit #pragma verwaltet werden.

Beachten Sie, dass Sie jetzt hängen nicht mehr von dem JIT-Compiler Erzeugungs was Plattform-Code für das Betriebssystem geeignet ist. Verwenden Sie Project + Eigenschaften, Registerkarte Build Platform Ziel die Architektur zu zwingen, Ihren nicht verwalteten Code entsprechen.

Blick auf CUDA für verwaltete GPU-Code.

Erstellen Sie nicht verwaltete DLL-Bibliothek mit dem, was Anweisungen, die Sie wollen, und die Verwendung P / Invoke es zu nennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top