Seite 1 von 1

Floating Point Rechnen auf Grafikkarten

Verfasst: Mittwoch 18. Januar 2017, 17:14
von consuli
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

Re: Floating Point Rechnen auf Grafikkarten

Verfasst: Mittwoch 18. Januar 2017, 21:21
von Dav1d
1.)
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.

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.

Re: Floating Point Rechnen auf Grafikkarten

Verfasst: Donnerstag 19. Januar 2017, 13:30
von MagBen
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.

Re: Floating Point Rechnen auf Grafikkarten

Verfasst: Montag 23. Januar 2017, 20:52
von consuli
Vielen Dank.

Und gibt so was ähnliches wie diese GPU computing workstation auch als Cloud Service, so wie Amazon EC2 Maschine?

Consuli

Re: Floating Point Rechnen auf Grafikkarten

Verfasst: Dienstag 24. Januar 2017, 17:39
von consuli
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

Re: Floating Point Rechnen auf Grafikkarten

Verfasst: Mittwoch 25. Januar 2017, 10:24
von Sr4l
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.

Re: Floating Point Rechnen auf Grafikkarten

Verfasst: Mittwoch 1. Februar 2017, 04:07
von aleph
Kann man eigentlich mit Python einfach GPU-Computing verwenden?

Re: Floating Point Rechnen auf Grafikkarten

Verfasst: Sonntag 5. Februar 2017, 15:41
von DeaD_EyE