Servus Leute,
da es nun auch für WCG die Ankündigung einer GPU Anwendung für die nähere Zukunft gibt, wollte ich mal fragen, worin der große Vorteil von GPU-Anwendungen besteht. Ich hab mich schon etwas schlau gelesen, aber manche Beiträge sind schon etwas älter und ich wollte mal den neuesten Stand hören. Hier mal ein paar Thesen:
GPU-Anwendungen laufen in der Regel schneller als CPU-Anwendungen, aber sind sie wirklich effizienter? Auf den meisten neuen CPUs kann man 4 oder sogar mehr WUs gleichzeitig laufen lassen, auf Grakas nur eine und der Stromverbrauch ist üblicherweise höher bei der Graka als bei der CPU.
CPUs sind flexibler als die GPU - oder was kann eine GPU was eine CPU nicht auch (evtl. langsamer) kann? Soweit ich das überblicke sind die GPUs bei "einfachen" Arbeitsaufgaben schneller und in der Gesamtbetrachtung auch effizienter als eine CPU (z.B. Faktorisieren von Primzahlen...). Allerdings kann ich mit einer CPU prinzipiell alles berechnen und bei komplizierteren Rechenoperationen (Klimamodelle, Molekülanalyse...) wird die Programmierung für die GPU kompliziert und die Flexibilität der CPU sorgt dafür, dass diese dort die Nase vorne hat.
Hab ich das soweit richtig verstanden?
Mir ist klar, dass es immer auch auf das jeweilige Projekt ankommt, aber ich wollte das mal klären, denn ab und an könnte man sich fragen, wozu man noch eine CPU im Rechner hat, wenn doch die GPUs so viel besser sein sollen und sich hier riesig über neue GPU-Anwendungen gefreut wird![]()
Ergebnis 1 bis 5 von 5
Thema: Vorteil von GPU-Anwendungen
-
16.07.2011, 21:35 #1
Vorteil von GPU-Anwendungen
Grüße Tikamthi
-
Die folgenden Benutzer haben sich bei Tikamthi bedankt für diesen nützlichen Beitrag:
SETIBOOSTER (17.07.2011)
-
16.07.2011, 21:57 #2
hi
ich drücke es mal so aus
wie du schon richtig erkannt hast kann eine heutige cpu ca 8 threads gleichzeitig bearbeiten gpu´s nur einen.
der große unterschied ist aber das bei einer cpu 4 kerne mit ht also 8 theoretische kerne arbeiten bei graka´s sieht das anders aus, ich nehme mal das beispiel einer gtx 460 von nvidia sind es 336 shadereinheiten die man als rechenkerne sehen kann.
nur das problem bei den shadereinheiten es müssen immer die selben daten rein gehen damit etwas vernünftiges bei raus kommt.
mal ein weit hergeholter gedanke:
nenn die gtx 460 einen rennwagen und eine intel i7 2600k cpu als golf
der rennwagen ist auf der geraden unschlag bar aber so wie es zu kurvigen strecken kommt sieht der golf dran vorbei, da die cpu flexibler berechnen kann das kann die gpu nicht.
ich denke mal es kommt auch nicht besonders auf das projekt an, sonder wie die projektleiter die daten aufbereiten können damit die gpu was daraus machen kann.
nehmen wir das beispiel seti dort gibt es eine gpu anwendung und natürlich die cpu anwendung. erstmal kann man "normal für die cpu anwendung die daten in die anwendung geben und die cpu kommt damit klar.
bei der gpu müssen die programme per cuda oder per opencl eingegeben werden was den programmier aufwand deutlich erhöht. dabei hat nvidia den großen vorteil wegen cuda dort kann man vergleichsweise einfach die programme schreiben damit die gpu was damit anfangen kann bei ati ist es nur per opencl möglich da ist die programmieroberfläche noch komplizierter.
ich hoffe ich konnte dir einigermaßen weiter helfen
bei unklarheiten stehe ich natürlich zur verfügung
mfg
-
- Titel
- Senior Member
- Bewertung
- Registriert am
- 06.09.2009
- Ort
- Regensburg
- Beiträge
- 419
- Danke
102
4
17.07.2011, 10:53 #3Um das Beispiel dann auf die Projekte zu übernehmen:
Bei Collatz wird ja die 3n+1-Vermutung überprüft. Jede WU enthält mehrere 100.000 solcher Zahlen, die alle durchgerechnet werden. Auf einer GPU jede auf einem Shader, also bei einer GTX460 immer 336 gleichzeitig.
Bei anderen Projekten, zB ein beliebiges Proteinprojekt kann der nächste Rechenschritt erst ausgeführt werden, wenn das Ergebnis des vorherigen bekannt ist. Also würde man hier auch 336 Proteine gleichzeitig falten/untersuchen können, macht aber keinen Sinn, da GPUs bisher "nur" bei Integer-Rechnungen (also Ganzzahlrechnungen) überlegen sind.
Man möge mich verbessern, falls etwas nicht stimmt.
-
17.07.2011, 15:07 #4
Danke schon einmal für eure Antworten. Ich habe jetzt ein besseres Bild davon wie das ganze auf der Hardwareseite funktioniert.
Allerdings bleibt ja die Frage, ob GPU-Berechnungen auch effizienter sind als per CPU? Wenn ich also eine bestimmte Strommenge/Energie zur Verfügung habe ist es dann sinnvoller per GPU oder per CPU Berechnungen vorzunehmen? Oder bekommt man hier für mehr Leistung auch einen höheren Verbrauch aufs Auge gedrückt? Was zu dem Autobeispiel: Rennwagen vs. Golf passen würde.
Gesucht ist also das optimale Verhältnis aus Projektfortschritt/Strommenge.Grüße Tikamthi
-
18.07.2011, 23:05 #5
Wenn jemand eine GPU-Anwendung veröffentlicht, dann ist diese i.d.R. auch so viel schneller als die CPU, dass man damit unter'm Strich auch effizienter wird. Das muss aber nicht so sein.
Wie oben schon angesprochen, etwas detaillierter: bei nVidia werden seit dem G80 die Daten in einer "Wavefront" zu je 32 Stück zusammengefasst, klassisch jeweils eine ganze Zahl mit bis zu 32 Bit oder ein 32 Bit Fließkommawert (das können die GPUs auch sehr gut!). Auf diese Daten muss jeweils der gleiche Befehl angewendet werden (Parallelisierungskonzept SIMD - single instruction, multiple data). In einem Takt werden dann alle 32 Daten (*) in die Rechenwerke geschickt und die Verarbeitung beginnt. Im nächsten Takt werden weitere 32 Daten nachgeschoben. Nach einigen (eher vielen) Takten ist die Berechnung fertig und die Ergebnisse stehen fest. Quasi wie ein Fließband (Pipeline). Eine solche Einheit nennt nVidia "Multiprozessor" (**). Eine GPU hat typischerweise einen ganzen Sack davon.
Kann man diese Art der Datenverarbeitung mit seinem Algorithmus in Einklang bringen, erhält man einen massiv parallel arbeitenden Prozessor, der einen sehr hohen Datendurchsatz pro Takt schaffen kann. Was die GPU gar nicht mag ist Code wie "wenn a<b, dann x, sonst y", da man hier Probleme bekommt, alle 32 reingesteckten Daten auch für weitere Operationen gleich zu behandeln. Für solche Fälle ist die CPU ausgelegt. Für massiv-parallele Aufgaben ist sie dagegen "ganz nett", aber viel mehr auch nicht. Selbst bei einem Vierkerner reden wir mit SSE2 von vielleicht 16 Operationen auf 32 Bit Daten pro Takt. Bei der GPU sind es dagegen Hunderte. Und wenn sie dann selbst nen Faktor 2 mehr Leistung benötigt, ist dies immernoch wesentlich effizienter als mit der CPU - vorrausgesetzt der Algorithmus passt.
MrS
(*) Genau genommen 2 mal 16 in 2 Takten hintereinander - aber egal an dieser Stelle.
(**) Stimmt auch wieder nicht ganz.. ich lass es aber erstmal so stehen.ExtraTerrestrial Apes - Scanning for our furry friends since Jan 2002
Ähnliche Themen
-
Optimierte Anwendungen
Von Meisterdark im Forum WikiAntworten: 13Letzter Beitrag: 25.07.2015, 21:51 -
WCG plant 64-bit Anwendungen
Von taurec im Forum World Community GridAntworten: 6Letzter Beitrag: 06.04.2011, 13:24 -
Optimierte Anwendungen
Von Grubix im Forum PrimeGridAntworten: 15Letzter Beitrag: 09.02.2011, 11:51 -
Probleme bei mehrfachen Anwendungen
Von TomStiansen im Forum Software - Installation, Probleme usw.Antworten: 3Letzter Beitrag: 20.03.2009, 10:48 -
Projektliste / Anwendungen
Von Xydrol im Forum Das HauptforumAntworten: 4Letzter Beitrag: 21.09.2007, 01:29
Stichworte
Single Sign On provided by vBSSO