Hallo!
Aktuelle Grafikkarten können floating point Berechnungen wesentlich schneller ausführen als ein Prozessor. Python Zugang dazu erhält man unter anderem über die CUDA Bibliothek (für Nvidia Grafikkarten). Floating Point Berechnungen sind der Kern von Neuronalen Netzen und Regressionen.
Fragen
1. Es gibt Webseiten, die behaupten, auf 4 Grafikkarten kann man heute so schnell rechnen wie auf einem IBM Mainframe, bzw. so schnell wie auf einem Uni-Grossrechner von vor 10 Jahren. Stimmt das?
2. Hat jemand aus dem Forum bereits Erfahrungen mit der CUDA Bibliothek? Wie anspruchsvoll ist das?
3. Gibt es ein Mainboard, auf das man mehr als eine Grafikkarte packen kann?
Gruß
Consuli
Floating Point Rechnen auf Grafikkarten
1.)
2.) Soweit ich mich erinnere ist das durchaus machbar, keine Magie.
3.) Ja klar, die meisten herkömmlichen PC Mainboards haben 2 PCIe-x16 Slots, d.h. da passen 2 drauf.
http://www.golem.de/news/geforce-gtx-1080-die-neue-schnellste-grafikkarte-taktet-extrem-hoch-1605-120762.html hat geschrieben:Bedingt durch den hohen Takt der 2.560 Shader-Einheiten erreicht die Geforce GTX 1080 eine theoretische Rechenleistung von 8,2 (Basis) bis 8,9 Teraflops (Boost) bei einfacher Genauigkeit.
https://www.nvidia.com/object/tesla-p100.html hat geschrieben:Tesla P100, ~10 Teraflops, Half-Floats, ~20 Teraflops
Also eher nicht 10 Jahre alte Supercomputer, aber 15 Jahre alte, wie viel Rechenleistung ein Uni-Großrechner hat ist mir nicht bekannt, aber wahrscheinlich weniger als ein Supercomputer, also durchaus möglich, dass die Leistung vergleichbar zu einem Uni-Großrechner von vor 10 Jahren ist.https://en.wikipedia.org/wiki/History_of_supercomputing#Historical_TOP500_table hat geschrieben:2000 IBM ASCI White -> 7.226 TFLOPS
2.) Soweit ich mich erinnere ist das durchaus machbar, keine Magie.
3.) Ja klar, die meisten herkömmlichen PC Mainboards haben 2 PCIe-x16 Slots, d.h. da passen 2 drauf.
the more they change the more they stay the same
Die Leistungsfähigkeit von CPUs und GPUs kannst Du mit zwei Parametern grob überschlagen:
1. Taktfrequenz
2. Parallelität
CPU:
4 Cores x 3 GHz
GPU:
2000 Threads x 0.8 GHz
Bei einer GPU und einer CPU der gleichen Preisklasse hat die GPU ca. 100 mal mehr Flops.
Ein Core einer CPU kann aber mehr als ein Thread auf einer GPU. Auf der GPU müssen alle Threads exakt den gleichen Code ausführen, damit es gut läuft. Schon bei einer if-Abfrage ist das aber nicht mehr der Fall, es können nicht einige Threads den if-Zweig und andere den else-Zweig ausführen, das muss nacheinander geschehen. Hat man ein paar verschachtelte if-Abfragen im CUDA-Teil, dann läuft die Rechnung damit praktisch seriell mit 800 MHz und damit langsamer als auf der CPU.
Auch das Daten-Layout muss für die GPU geeignet sein. Eine GPU kann am besten Arrays verarbeiten, bei dem der 1.Thread das 1.Element nimmt, der 2. Thread das 2. Element usw. Zugriffe über Kreuz verlangsamen dagegen die Berechnungen.
1. Taktfrequenz
2. Parallelität
CPU:
4 Cores x 3 GHz
GPU:
2000 Threads x 0.8 GHz
Bei einer GPU und einer CPU der gleichen Preisklasse hat die GPU ca. 100 mal mehr Flops.
Ein Core einer CPU kann aber mehr als ein Thread auf einer GPU. Auf der GPU müssen alle Threads exakt den gleichen Code ausführen, damit es gut läuft. Schon bei einer if-Abfrage ist das aber nicht mehr der Fall, es können nicht einige Threads den if-Zweig und andere den else-Zweig ausführen, das muss nacheinander geschehen. Hat man ein paar verschachtelte if-Abfragen im CUDA-Teil, dann läuft die Rechnung damit praktisch seriell mit 800 MHz und damit langsamer als auf der CPU.
Auch das Daten-Layout muss für die GPU geeignet sein. Eine GPU kann am besten Arrays verarbeiten, bei dem der 1.Thread das 1.Element nimmt, der 2. Thread das 2. Element usw. Zugriffe über Kreuz verlangsamen dagegen die Berechnungen.
Vielen Dank.
Und gibt so was ähnliches wie diese GPU computing workstation auch als Cloud Service, so wie Amazon EC2 Maschine?
Consuli
Und gibt so was ähnliches wie diese GPU computing workstation auch als Cloud Service, so wie Amazon EC2 Maschine?
Consuli
Who controls the British crown? Who keeps the metric system down? We do! We do!
Who leaves Atlantis off the maps? Who keeps the Marsians under wraps? We do! We do!
Who leaves Atlantis off the maps? Who keeps the Marsians under wraps? We do! We do!
Jemand anders hat zwischenzeitlich herausgefunden, dass Amazon neuerdings auch GPU Workstations als EC2 Service anbietet. Es handelt sich um die Amazon EC P2 und G2 Instanzen. Ich war nur nicht auf dem neuesten Stand.
Welche Grafikkarte empfehlt Ihr mir, um Code auf der CUDA Bibliothek vorzuentwickeln (die P2 und G2 Instanzen kosten ab 1€ pro Stunde). Geforce 980 TI ?
Consuli
Welche Grafikkarte empfehlt Ihr mir, um Code auf der CUDA Bibliothek vorzuentwickeln (die P2 und G2 Instanzen kosten ab 1€ pro Stunde). Geforce 980 TI ?
Consuli
Who controls the British crown? Who keeps the metric system down? We do! We do!
Who leaves Atlantis off the maps? Who keeps the Marsians under wraps? We do! We do!
Who leaves Atlantis off the maps? Who keeps the Marsians under wraps? We do! We do!
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
Effizient ist die zu nehmen die du schon eingebaut hast. Das reicht zum Code entwickeln und testen aus.
Wenn du dann Geld ausgeben willst dann kaufst du dir 1, 2, oder 4x GTX Titan X, GTX 980 oder 970. Mittlerweile eventuell auch schon die 10XX Serie. Es gibt auch extra CUDA Karten (Tesla Serie) aber ich kenne Leute die lieber GTX verbauen weil das kosten effizienter sein soll. Ich habe mich damit nicht befasst was da die größten Unterschiede sind.
Der CUDA Code den ich bisher gesehen habe war aber recht portable. Wie hier schon gesagt wurde ist es viel wichtiger geeignete Algos zu haben die die Graka Hardware ausnutzen.
Wenn du dann Geld ausgeben willst dann kaufst du dir 1, 2, oder 4x GTX Titan X, GTX 980 oder 970. Mittlerweile eventuell auch schon die 10XX Serie. Es gibt auch extra CUDA Karten (Tesla Serie) aber ich kenne Leute die lieber GTX verbauen weil das kosten effizienter sein soll. Ich habe mich damit nicht befasst was da die größten Unterschiede sind.
Der CUDA Code den ich bisher gesehen habe war aber recht portable. Wie hier schon gesagt wurde ist es viel wichtiger geeignete Algos zu haben die die Graka Hardware ausnutzen.
- DeaD_EyE
- User
- Beiträge: 1205
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Ja, kann man:
https://mathema.tician.de/software/pycuda/
https://mathema.tician.de/software/pyopencl/
https://mathema.tician.de/software/pycuda/
https://mathema.tician.de/software/pyopencl/
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server