Ich suche nach Beispielen für Allzweckalgorithmen (dh nicht grafische Algorithmen), die nachweislich auf einer GPU eine Größenordnung schneller ausgeführt werden als auf einer CPU. Ich werde diese Beispiele verwenden, um kreativ über andere Algorithmen nachzudenken, die ich auf einer GPU implementieren könnte.
algorithms
performance
gpu
David
quelle
quelle
Antworten:
Ein paar Dinge fallen mir sofort ein:
Ein spezialisierter Bitcoin-Client wurde geschrieben, um die GPU zum Ausführen der kryptografischen Hashes zu verwenden. Der GPU-Client bietet auf einem typischen 4-Core-System im Allgemeinen eine mehr als 10-mal bessere Leistung als der SMP-CPU-Client. Bitcoin hängt von der Berechnung einer großen Anzahl nicht verwandter kryptografischer Hashes ab, die parallel berechnet werden können.
Das Folding @ Home-Projekt bietet einen GPU-Client für ihre molekulardynamischen Simulationen. Diese Berechnungen werden an den einzelnen Bindungen zwischen Atomen in verschiedenen Umgebungen und Bedingungen durchgeführt. Die Mathematik ist relativ einfach, muss jedoch milliardenfach für jede Bindung berechnet werden, um nur Nanosekunden Aktivität zu simulieren.
Das beliebte "Spielzeug" -Beispiel, das von Befürwortern des GPU-Computing verwendet wird, ist das N-Körper-Problem .
Gemeinsam ist diesen Dingen, dass sie peinlich parallel sind . Das heißt, das Problem kann in eine kleine Anzahl von diskreten Berechnungen zerlegt werden, die über einen großen Datensatz viele Male ausgeführt werden. Das ist die Art von Berechnung, in der die GPU gut ist.
Komplexe Berechnungen, die von den Ergebnissen früherer Berechnungen abhängen, sind für die GPU nicht gut geeignet.
quelle
Video- und Audio-Transcodierung ist ein gutes Beispiel. Es ist die Konvertierung von einem Dateiformat in ein anderes. Ein Beispiel ist MPEG-2 bis H.264.
Hinweis: Die Videotranscodierung bezieht sich nicht auf 3D-Grafiken. Sie können ein Video nicht mit einem Vertex- und Pixel-Shader codieren.
quelle
Das Mining von Bitcoins mit einer GPU ist sehr beliebt geworden.
Eine weitere Anwendung sind Finanzmärkte für den Echtzeithandel mit Modellen wie Black-Scholes .
quelle
Conways Spiel des Lebens ist ein gutes akademisches Beispiel.
quelle
Probleme, die viel Mathematik erfordern und gleichzeitig erledigt werden können. Wo ich früher gearbeitet habe, wollten wir mit GPUs spielen, um 2 Matrizen zu addieren / subtrahieren / multiplizieren, um die genetische Korrelation zu ermitteln. Das erste Mal, dass ich von GPUs hörte, war, dass sie von einem Finanzsoftwarehaus verwendet wurden, um einen Teil ihrer Modellierung durchzuführen (Monte Carlo und so weiter). Das wäre nützlich beim Code-Brechen.
GPUs helfen wahrscheinlich nicht viel bei Ihren regelmäßigeren Programmierproblemen, bei denen ein paar CPU-Kerne ausreichen, da die meisten regulären Programme nur wenige gleichzeitige Prozesse ausführen müssen. (Kann mit Speicher / Festplatte anders sein, die sehr viel schneller ist als wir derzeit haben)
quelle
Vielleicht bin ich sehr rechnerspezifisch in Mathematik / Naturwissenschaften / Ingenieurwesen, aber einer, der mir in den Sinn kommt, ist der FFT-Algorithmus.
Ich habe diesen FFT-Benchmark schon einmal gesehen, und obwohl er ein paar Jahre alt ist, denke ich, dass er für das, was er ist, gut gemacht wurde: http://www.sharcnet.ca/~merz/CUDA_benchFFT
quelle