Floating Point Rechnen auf Grafikkarten

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
consuli
User
Beiträge: 40
Registriert: Sonntag 26. Juli 2015, 22:10

Floating Point Rechnen auf Grafikkarten

Beitragvon consuli » Mittwoch 18. Januar 2017, 17:14

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
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Re: Floating Point Rechnen auf Grafikkarten

Beitragvon Dav1d » Mittwoch 18. Januar 2017, 21:21

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

https://en.wikipedia.org/wiki/History_of_supercomputing#Historical_TOP500_table hat geschrieben:2000 IBM ASCI White -> 7.226 TFLOPS


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.
the more they change the more they stay the same
Benutzeravatar
MagBen
User
Beiträge: 704
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Re: Floating Point Rechnen auf Grafikkarten

Beitragvon MagBen » Donnerstag 19. Januar 2017, 13:30

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.
a fool with a tool is still a fool, www.magben.de, YouTube
consuli
User
Beiträge: 40
Registriert: Sonntag 26. Juli 2015, 22:10

Re: Floating Point Rechnen auf Grafikkarten

Beitragvon consuli » Montag 23. Januar 2017, 20:52

Vielen Dank.

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

Consuli
consuli
User
Beiträge: 40
Registriert: Sonntag 26. Juli 2015, 22:10

Re: Floating Point Rechnen auf Grafikkarten

Beitragvon consuli » Dienstag 24. Januar 2017, 17:39

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
Benutzeravatar
Sr4l
User
Beiträge: 1077
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Re: Floating Point Rechnen auf Grafikkarten

Beitragvon Sr4l » Mittwoch 25. Januar 2017, 10:24

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.
aleph
User
Beiträge: 20
Registriert: Donnerstag 19. Januar 2017, 15:28

Re: Floating Point Rechnen auf Grafikkarten

Beitragvon aleph » Mittwoch 1. Februar 2017, 04:07

Kann man eigentlich mit Python einfach GPU-Computing verwenden?
Benutzeravatar
DeaD_EyE
User
Beiträge: 76
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Re: Floating Point Rechnen auf Grafikkarten

Beitragvon DeaD_EyE » Sonntag 5. Februar 2017, 15:41

sourceserver.info - sourceserver.info/wiki/ - Support für HL2-Server

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder