Ich habe ein 123MB großes int
-Array und es wird grundsätzlich so verwendet:
eval()
heißt viel (~ 50B mal) mit verschiedenen c
und ich würde gerne wissen, ob (und wie) ich es beschleunigen könnte.
Ich verwende bereits eine unsichere Funktion mit einem festen Array , die alle CPUs nutzt. Es ist ein C # -Port des TwoPlusTwo 7-Karten-Evaluators von RayW . Die C ++ - Version ist unwesentlich schneller.
Kann die GPU verwendet werden, um dies zu beschleunigen?
GCHandle
, um das Array zu fixieren und den Zeiger in einem statischen Feld zwischenzuspeichern (verwenden Sie nicht nur einen festen Block - ich glaube, es hat einen gewissen (geringen) Aufwand für die Eingabe. Nicht sicher). VirtualAlloc
zu und verwenden Sie große Seiten. Das verringert TLB-Fehler. All dies sind hardcore Low-Level-Optimierungen. Sie gelten nur, wenn Sie maximale Leistung benötigen.
Ich denke, wir sind hier ziemlich am Limit, wenn es darum geht, diese Funktion zu optimieren. Wir können es wahrscheinlich nur besser machen, wenn Sie dem Aufrufer der Funktion zeigen, dass sie als eine Einheit optimiert werden können.
Tags und Links c# performance gpu lookup