Laden...

Wie kann ich mit C# Hardwarebeschleunigung nutzen?

Erstellt von HexEdit vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.518 Views
H
HexEdit Themenstarter:in
38 Beiträge seit 2019
vor 4 Jahren
Wie kann ich mit C# Hardwarebeschleunigung nutzen?

Hallo,
ich habe ein Neuronales Netz in C# "gebastelt" diest ist aber bei vielen hiddel Layern zu langsam.

Hat jemand eine Iddee wie ich das ganze Hardwarebeschleunigt machen kann?
(Also allgemein wie ich Hardwarebeschleunigung in C# erreichen kann.)

Ich hab auch schon im Internet gesucht und nur CUDA gefunden, ich blick da nur nicht ganz durch.
Währe nett wenn mir jemand helfen könnte

16.806 Beiträge seit 2008
vor 4 Jahren

"Mal kurz" die Hardware ansprechen für solch eine Aufgabe, und das auch effizient, ist nicht.
Wenn Du selbst solch ein Netzwerk schreibst, dann vermutlich zu Lernzwecken.

Wenn Du es dann wirklich performant willst, dann musst i.d.R. Du auf Bibliotheken zurück greifen - und da ist die absolute Referenz derzeit Tensorflow.
ML.NET kann seit kurzem auch mit TensorFlow Models arbeiten; aber ehrlich gesagt empfinde ich ML.NET noch als sehr sehr tief in den Kinderschuhen, was auch historische Gründe des Projekts hat.

Der Sinn ist ja, dass Du Dich auf Deine Kernaufgabe konzentrierst - und nicht auch noch auf Hardware Skalierung.

H
HexEdit Themenstarter:in
38 Beiträge seit 2019
vor 4 Jahren

OK ich dachte bibliothek einbinden eins, zwei funktionen aufrufen fertig. 😄

Aber wenn das relativ komplex ist ist es natürlich unsinnig da ich das Netz - wie du schon gesagt hast - zu Lernzwecken schreibe.

16.806 Beiträge seit 2008
vor 4 Jahren

Auf Bibliotheksbasis direkt auf CUDA-Ebene schon gar nicht.
Im Prinzip brauchst Du dafür extra Compiler, zB http://www.altimesh.com/hybridizer-essentials/

Zusätzlich muss Dein Code natürlich dahingehend überhaupt passen.

6.911 Beiträge seit 2009
vor 4 Jahren

Hallo HexEdit,

Hat jemand eine Iddee wie ich das ganze Hardwarebeschleunigt machen kann?

Mit .NET Core 3.0 werden Hardware Intrinsics unterstützt (zumindest für x86/x64, arm folgt später). So kann der Code durch SIMD beschleunigt werden.

Für GPGPU gibt es keine vernüftige Lösung im managed Bereich, da ist native Programmierung (C++ mit CUDA-C als Beispiel) noch die bessere Lösung und dann per P/Invoke in .NET verwenden.

Wenns aber "nur" für Lernzwecke ist, würde ich mich eher auf die Korrektheit vom Code beschränken, sonst kannst du dich schnell in der Hardwarebeschleunigung verlieren.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

H
HexEdit Themenstarter:in
38 Beiträge seit 2019
vor 4 Jahren

danke