CPU vs. GPU (Hören was die Grafikkarte so macht...)

Algorithmen, Sprachunabhängige Diskussionen zu Konzepten, Programmiersprachen-Design
Antworten
Onraku
Beiträge: 43
Registriert: Fr Sep 09, 2011 2:14 pm

CPU vs. GPU (Hören was die Grafikkarte so macht...)

Beitrag von Onraku » Sa Jul 13, 2013 8:19 am

Ich habe ein paar grundsätzliche Fragen:

Kann ich mir die GPU als eine Multicore-CPU vorstellen, die mit wenig nahem Speicher, aber viel mehr "Kernen", (oder viel größeren Registern?!?) eher "Fliegenschiss-Operationen" ausführt, aber einen riesigen "Misthaufen" in kürzester Zeit umschichten muss? Ich denke dabei an Dinge wie:
  • Fläche/n eines Körper sichtbar?
  • Winkel zur Lichtquelle/Kamera berechnen und Farben anpassen
  • Partikelgedöns in den Speicher nießen :?
  • ->Kurze, wenig "verzweigte", bloß nicht rekursive Funktionen, die von vielen Daten durchlaufen werden muss?
Spricht man bei der Trägheit dieses Systems auch von Latenz, wie wenn zum Beispiel bei digitaler Audioaufnehme das in bearbeitete Signal zeitverzögert am Monitor erscheint?
Wo und wie wird die GPU für mehr genutzt als sie eigentlich gedacht ist?

Mir kommt hier gerade die Audiobearbeitung in den Sinn mit beispielhaften Signal/Datenfluss:

Code: Alles auswählen

Signal -> A/D Wandler -> Daten

cpu-thread(daten){
    fourieranalyse();
}

gpu-threads(){
     bastelSpassMitSinuskurven();
}
cpu-thread2(){
     record();
     d/aWandler();
}
-> Soundkarte 

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: CPU vs. GPU (Hören was die Grafikkarte so macht...)

Beitrag von Xin » Sa Jul 13, 2013 12:19 pm

Onraku hat geschrieben:Kann ich mir die GPU als eine Multicore-CPU vorstellen, die mit wenig nahem Speicher, aber viel mehr "Kernen", (oder viel größeren Registern?!?) eher "Fliegenschiss-Operationen" ausführt, aber einen riesigen "Misthaufen" in kürzester Zeit umschichten muss?
Zumindest ist sie bei solchen Fliegenschiss-Operationen extrem schnell.
Onraku hat geschrieben:Ich denke dabei an Dinge wie:
  • Fläche/n eines Körper sichtbar?
  • Winkel zur Lichtquelle/Kamera berechnen und Farben anpassen
  • Partikelgedöns in den Speicher nießen :?
  • ->Kurze, wenig "verzweigte", bloß nicht rekursive Funktionen, die von vielen Daten durchlaufen werden muss?
Das sind reine Vektorrechnungen und Matrix-Berechnungen im 3D Raum. Und genau da sind GPUs sehr schnell.
Onraku hat geschrieben:Spricht man bei der Trägheit dieses Systems auch von Latenz, wie wenn zum Beispiel bei digitaler Audioaufnehme das in bearbeitete Signal zeitverzögert am Monitor erscheint?
Das könnte man als Latenz beschreiben, aber liegt nicht nur an der Grafikkarte. Der Ton muss ja erst durch die Leitung, digitalisiert werden, analysiert werden und dann muss ein Programm irgendwo ablaufen, dass der Grafikkarte sagt, was sie aus diesen Daten jetzt malen soll.
Onraku hat geschrieben:Wo und wie wird die GPU für mehr genutzt als sie eigentlich gedacht ist?
[/quote]
Grafikadapter (also etwas, was Bild darstellt) ist halt die ursprüngliche Aufgabe der Grafikkarte.
Wenn man Daten nun als "Bild" kodieren kann und die Operationen der Grafikkarte passen, um diese Daten entsprechend zu verrechnen, kann man natürlich auch mathematische Probleme lösen, in dem man die Aufgaben in ein Bild packt, das Bild "rendern" lässt und das gerenderte Bild mit den Lösungen aus dem Grafikspeicher wieder ausliest.

Damit man schneller mit Vektoren rechnen kann, gibt es die Möglichkeit mit Hilfe von CUDA (OpenCL) auf die Graka zuzugreifen.

Sehr interessantes Thema... ich glaube, das interessiert mich gerade auch deutlich mehr als ich das bis eben wusste ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: CPU vs. GPU (Hören was die Grafikkarte so macht...)

Beitrag von cloidnerux » Sa Jul 13, 2013 3:23 pm

Grafikkarten sind spezial Prozessoren, die die egt CPU gar nicht ablösen können.
Es wird sehr sehr viel Parallelisiert und mit spezial Funktionalität ausgestattet, um eben bestimmte mathematischen Operationen sehr schnell und vor allem sehr viel Gleichzeitig machen. Dafür muss es aber auch möglich sein, sehr viel parallel zu Berechnen. Daher der schnelle Speicher, daher aber auch die Tatsache, dass es kompliziert ist, sinnvolle Software für GPUs zu schreiben.
Kannst du z.B nicht Daten parallel berechnen, dann nutzt dir eine Graka nichts, sind deine Operationen zu kompliziert und daher nicht implementiert, dann dauert das auch wieder.

Audiobearbeitung findet nicht sonderlich häufig auf der Graka statt, da du hier mehr Operationen im Zeit und Frequenzbereich hast und das spezielle Funktionen benötigt(FFT und so).
Zudem besteht die Latenz bei Audioverarbeitenden System darin, dass du immer eine gewisse Anzahl Samples sammeln musst, die du dann in deine FFT fütterst, transformierst und wieder ausgibst. Wenn du z.B 1024 Samples bei 44,1kHz sampelst, dann sind das schon 23,2ms Zeit, die du einfach nur darauf Wartest das Daten rein kommen.
Hier helfen spezielle DSPs viel mehr als eine GPU, sprich der Chip auf deiner Soundkarte.

Anwendung für Operationen auf der GPU findest du bei CAD und 3D Modelling, bei der Simulation (FEM, Partikel, Kollision) oder dem Rendern von Videos zudem in der Datenverarbeitung im Wissenschaftlichen bereich. Überall da, wo du viele Berechnungen parallel mit relativ einfachen mathematischen Operationen durchführst(Vektor/Matrix Berechnungen).
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: CPU vs. GPU (Hören was die Grafikkarte so macht...)

Beitrag von Xin » So Jul 14, 2013 9:08 am

Hat jemand schonmal was mit CUDA berechnet?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: CPU vs. GPU (Hören was die Grafikkarte so macht...)

Beitrag von nufan » So Jul 14, 2013 9:12 pm

Onraku hat geschrieben:[...] die mit wenig nahem Speicher, [...]
Das würde ich so nicht stehen lassen. Grafikkarten haben heutzutage auch schon einige Gigabyte an Speicher. Das Problem ist eher, dass man die Daten aus dem RAM (also dem echten Hauptspeicher) erst in den Grafikkarten-Speicher schreiben muss, was je nach Speicherbusbreite einiges an Zeit kosten kann.
Xin hat geschrieben:Hat jemand schonmal was mit CUDA berechnet?
Ich hab den Kurs gemacht:
https://www.coursera.org/course/hetero
Ich würde nicht behaupten mich gut damit auszukennen, aber ich hab ein wenig Ahnung ^^

GilbertDur
Beiträge: 105
Registriert: Fr Mär 01, 2013 10:31 am

Re: CPU vs. GPU (Hören was die Grafikkarte so macht...)

Beitrag von GilbertDur » Mo Jul 15, 2013 7:24 pm

https://www.udacity.com/course/cs344

Vielleicht taugt der Kurs ja auch noch was :)

Onraku
Beiträge: 43
Registriert: Fr Sep 09, 2011 2:14 pm

Re: CPU vs. GPU (Hören was die Grafikkarte so macht...)

Beitrag von Onraku » Mi Jul 17, 2013 9:44 am

Erstmal ein Danke für eure Antworten.
Zudem besteht die Latenz bei Audioverarbeitenden System darin, dass du immer eine gewisse Anzahl Samples sammeln musst, die du dann in deine FFT fütterst, transformierst und wieder ausgibst.
Ja, ja. Deshalb läuft bei der Aufnahme das Monitorsignal oft gar nicht erst durch die CPU, sondern nur durch den DSP auf der Soundkarte/Interface. -> Was ich spiele hör ich auch ohne Latenz.
Wenn ich aber im Mixing bin, und nur noch digitale Daten bearbeite, diverse Plug-ins mitspielen (Hall-simulationen, Kompressoren, Effekte, usw.), dann kommt mein Playback immer später, was an sich nicht tragisch ist. Will ich aber dann doch noch eine Spur aufnehmen, hab ich alles eine 23tel Note später. Dann fang ich an Spuren zu verschieben, oder nehme gar nicht erst zum Playback sondern nur zum Metronom auf-> Irgendwann wirds nicht mehr das was ich an meinem Mehrspur-Spur -Tapedeck vor 1000 Jahren gelernt hab.

Soundkarten/Audiointerfaces im professionellen können das alles trotzdem, aber die kosten dann auch soviel wie ne gute Graka, wenn nicht mehr. Für den Homerecordingbereich liegt die Qualität woanders. ABER: jeder hat ne Graka, mich hat gewundert, warum hier nicht ein bisschen ausgelagert wird, so das denn überhaupt möglich ist.

EDIT: Ich mein natürlich eine 32tel Note, ein bisschen Polyrhythmik ist ja gut, aber irgendwann hörts auch auf.
Wer macht denn hier sonst noch Mucke, und kann mich auf "traditionellere" Wege zurückführen? Glocke?

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: CPU vs. GPU (Hören was die Grafikkarte so macht...)

Beitrag von cloidnerux » Mi Jul 17, 2013 4:29 pm

Wenn ich aber im Mixing bin, und nur noch digitale Daten bearbeite, diverse Plug-ins mitspielen (Hall-simulationen, Kompressoren, Effekte, usw.), dann kommt mein Playback immer später, was an sich nicht tragisch ist. Will ich aber dann doch noch eine Spur aufnehmen, hab ich alles eine 23tel Note später. Dann fang ich an Spuren zu verschieben, oder nehme gar nicht erst zum Playback sondern nur zum Metronom auf-> Irgendwann wirds nicht mehr das was ich an meinem Mehrspur-Spur -Tapedeck vor 1000 Jahren gelernt hab.
Willst du Live Musik abmischen und ausgeben oder willst du nur aufnehmen und bearbeiten?
Wenn du live Musik mit Effekten abmischen willst und dein System an sich nicht intelligent genug ist, alle Spuren mit der langsamsten zu synchronisieren, dann wird das auch mit besseren Algorithmen nicht besser.
Im Endeffekt wird dir eine Graka nur dann helfen, wenn du deine Komplette Effektstrecke sinnvoll auf der Graka implementierst und dann auch wieder darauf achtest, dass sie komplett Synchron ist. Verzögerung wirst du so oder so haben.
Für den Homerecordingbereich liegt die Qualität woanders. ABER: jeder hat ne Graka, mich hat gewundert, warum hier nicht ein bisschen ausgelagert wird, so das denn überhaupt möglich ist.
Wenn du nur Aufnehmen willst, wieso machst du dir überhaupt die Mühe Effekte in Echtzeit einzuarbeiten? Du kannst doch bequem in Audacity oder jedem anderen Mehrspur Audio-Editor Effekte anwenden und die Spuren nach deinem Wunsch ausrichten und abmischen?
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten