OMG - GPU Computing bei Audio Plugins, das kann doch gar nicht funktionieren
Aktuell gibt es Bestrebungen bei Audio Plugins die Grafikkarte, also die GPU mit in die Berechnungen einzubeziehen. Und kaum wurde das ausgesprochen, kommen von allen Seiten die "Jahhaaaaaa abers ... geht ja nicht" um die Ecke.
Das Hauptargument lautet meist "Du kannst ja den Filter nicht vor dem Oszillator berechnen". Provokativ würde ich sagen "noch nicht", aber das ist ein ganz anderes Thema.
Warum diese Gegenargumentdiskussion komplett irreführend und in weiten Bereichen einfach nur falsch ist, beweisen uns schon die Betriebssysteme unserer Computer, die "Multitaskingfähig" sind. Also subjektiv Aufgaben "gleichzeitig/parallel" abarbeiten. Nimmt man dann auch noch CPUs, die aus mehreren Kernen bestehen und die sich dann noch auf der Hardware virtuell aufteilen können, dann wird aus teilweise subjektiv parallel = objektiv parallel. Weil wenn es die Aufgabe zulässt, dass an 2 Dingen gleichzeitig gearbeitet werden kann und man 2 unabhängige "Arbeiter" zur Verfügung hat, dann können diese beiden Aufgaben auch tatsächlich gleichzeitig/parallel abgearbeitet werden.
Einfache Rechnung: Wenn 2 Kartoffeln geschält werden müssen, sind diese doppelt so schnell geschält, wenn es 2 Personen machen, statt nur einer Person.
Wenn ausgehend von diesem Beispiel natürlich nur ein Kartoffelschälwerkzeug zur Verfügung steht, dann sind natürlich auch 2 Personen nicht schneller. Nur vielleicht insgesamt ausgeruhter. Was auch wieder ein Vorteil sein kann. Aber eines nach dem anderen.
Nehmen wir mal als Beispiel die Auto Produktion (mit ein paar Fantasiezahlen)
Ein Auto besteht aus 10.000 Teilen. Auf der Zusammenbaustrasse werden diese nacheinander, sagen wir von einer einzigen Person zusammengebaut. Zeitvorgabe 1 Woche. Das ist ein klassischer serieller (nacheinander) Prozess. Stellt man dort 2 Personen hin, geht der Prozess vielleicht nicht unbedingt doppelt so schnell, aber auf jeden Fall schneller und die Personen sind nach einer Woche auch nicht so ausgepowert. Die Anzahl der Personen zu erhöhen macht bis zu einem bestimmten Maß Sinn, was den Zusammenbau in einer gewissen Zeit verkürzt (Performance). Irgendwann schafft man dann mit dieser Konstellation ein Auto pro Tag. Mehr Performance.
Der nächste Schritt wäre, diese Zusammenbaustrasse zu duplizieren. Also mit 2 Straßen und der doppelten Menge an Personen bei gleicher Voraussetzung doppelt so viele Autos am Tag zu produzieren.
So die ganz einfache Betrachtung. Bei der aber komplett nicht berücksichtigt wurde, wie denn die Einzelteile, die zu einem Auto zusammengebaut werden überhaupt selbst zusammengebaut werden. Das machen normalerweise die Zulieferer. Würden die Zulieferer das nicht machen, müssten die Personen auf den Zusammenbaustrassen (ja den Begriff habe ich extra aus diesem Grund so gewählt), die Einzelteile selbst herstellen.
Also statt dass einfach eine Tür eingebaut wird, muss diese erst gefertigt werden. Im Extremfall müssen dafür erst die Rohstoffe gefunden, gehoben, veredelt und verarbeitbar gemacht werden. Danach in die entsprechende Form Metall für die Blechhülle, Plastik für die Innenverschalung, Mechanik für die Griffe, das Schloss uswusf. Also so eine Tür könnte sicherlich aus 1000 einzelnen gefertigten Teilen bestehen, die für sich sagen wir mal aus 20 Rohstoffen hergestellt werden, die in verschiedenen Ländern ... uswusf .. ich denke das Prinzip ist klar geworden.
Zusammengefasst: Die Parallelität eines Prozesse besteht nicht aus den Prozessen, die nicht parallelisiert werden können, sondern aus den Prozessen die parallelisiert werden können. Das ist die Aufgabe der Entwickler, zu schauen, was parallelisiert werden kann und wo Parallelisierung keinen Sinn macht. Wo kann man Prozesse auf verschiedene Hardware (Prozessoren) auslagern, welches Auslagern macht wegen der "Bürokratie" (Aufwand, z.B. keine Zeitersparnis) keinen Sinn und wo macht das unter Umständen sogar noch mehr Sinn.
Ganz speziell bei der Betrachtung CPU versus GPU. Audiobearbeitung nutzt extrem viel FFT und FFTS. Grafikkarten, also GPUs haben z.B. optimierte "Schaltkreise" die FFT Operationen extrem schnell und "kostengünstig" (energiesparend) ausführen. Auch wenn eine Grafikkarte mit einem höheren Stromverbrauch angegeben ist, wird sie mit großer Wahrscheinlichkeit bei dieser Operation weniger Strom verbrauchen, als es eine CPU tun würde.
Dass der Stromverbrauch dann ansteigt, könnte eine Folge davon sein, dass die Nutzer dann auch mehr Performance einfordern können/wollen.
Diese wirklich sehr krude Diskussion in vielen Foren ist meines Erachtens eine Zeitverschwendung, weil es absolut auf das Prozessmanagements (Algorithmus) ankommt, das in dem entsprechenden Audio Plugin eingesetzt wird.