PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cuda als Kaufargument


Memento
2009-07-15, 19:33:08
Hallo,

auf manchen Webseiten wird bei Nvidia Karten Cuda als Pro-Kaufargument angegeben. Nachdem ich auf der Nvidia HP mir mal die Cuda Programme angeschaut habe, konnte ich nichts sinnvolles für mich entdecken (absolut Subjektiv). Ist Eurer Meinung nach CUDA sinnvoll und wenn ja, welche CUDA Programme nutzt Ihr?
Hat CUDA mit Einführung von DX11 noch eine Daseinsberechtigung?

Danke im voraus

Coda
2009-07-15, 19:37:04
Außer PhysX und Video-Encoding fällt mir da nichts Wesentliches ein. Und selbst das ist heftig umstritten.

Falls du auf die beiden Sachen verzichten kannst, dann ist es wirklich nicht wichtig.

deekey777
2009-07-15, 19:57:28
Hallo,

auf manchen Webseiten wird bei Nvidia Karten Cuda als Pro-Kaufargument angegeben. Nachdem ich auf der Nvidia HP mir mal die Cuda Programme angeschaut habe, konnte ich nichts sinnvolles für mich entdecken (absolut Subjektiv). Ist Eurer Meinung nach CUDA sinnvoll und wenn ja, welche CUDA Programme nutzt Ihr?
Hat CUDA mit Einführung von DX11 noch eine Daseinsberechtigung?

Danke im voraus

Aktuell lässt sich sagen, dass die Software, die CUDA nutzt, so ziemlich nutzlos ist.
Das Umwandeln von Videos ist und bleibt die Domäne der CPUs, mit einem halbwegs schnellen Dual-Core kann man mit Programmen wie RipBot264 Videos mit der doppelten Echtzeit für mobile Geräte umwandeln und das bei deutlich besserer Qualität. Die kommerzielle Software fällt da durch, beim kostenlosen MediaCoder muss man die genauen Ergebnisse abwarten, ob der mitgelieferte Cuda-Encoder bei 800 kbs die Qualität von RipBot264 liefert.
Des Weiteren wurde vReveal zB von der PCGH als die Anwendung gefeiert. Da aber die Videos in WMV oder unkomprimiertes AVI umgewandelt werden, ist der Nutzen für gewöhnlichen Anwender sehr fraglich.
Zum Start der GTS250 verteilte Nvidia fleißig ArcSofts TMT 3, das mittels CUDA DVDs auf HD-Auflösungen upscalen lässt. Die CPUs hatten damals keine Chancen. PowerDVD9 beherrscht seit dem letzten Patch auch Upscaling mit CUDA, zeigt aber eindrucksvoll, dass die CPUs dafür auch in der Lage sind, selbst kleine Dual-Cores wie mein X2 4200+. Seit dem letzten Patch für TMT3 können auch Radeons (die gesamte HD-Serie) das Upscaling übernehmen, aber auch auf der CPU-Front hat sich was getan. Das Blöde an der Sache ist, dass das Bild eher schlechter wird, viel besseres Ergebnis erreicht man mit DXVA und etwas Schärfe über die Grafikkarte.
TMPGEnc nutzt CUDA für verschiedene Filter beim Umwandeln von Videos (MediaCoder soll bald auch einige Filter über CUDA können), aber die Software ist eben deutlich spezieller als PowerDirector7&Co.

Wenn du aber zB beim Folding@Home mitmachen willst, dann ist Nvidia wirklich weiter als AMD, da diese durch verschiedene Hardware-Limitierungen eingebremst werden.

Sonst bleibt nur PhysX, und die zusätzlichen Effekte sind eher Geschmackssache.


Und ja: Mit DX11 hat CUDA weiterhin Daseinsberechtigung. Wer das nicht kapiert, ist das dessen Problem.

Spasstiger
2009-07-15, 21:54:49
Ich sehe die Relevanz eher im wissenschaftlichen Bereich. Für Spieler ist CUDA ziemlich uninteressant. PhysX würde ich auch nicht unbedingt zu CUDA dazuzählen, weil PhysX von NV eigenständig beworben wird und auch in Reviews getrennt behandelt wird. Dass PhysX über CUDA realisiert wurde, kann dem Kunden recht egal sein.

Und Videoencoding per GPU ist kein Exklusivfeature von Nvidia-Karten, ergo auch kein echter Vorteil von CUDA.

Cubitus
2009-07-15, 22:00:41
Ich sehe die Relevanz eher im wissenschaftlichen Bereich

Stimmt, gerade dort gibt es schon viel homebrew Software

http://www.nvidia.de/object/cuda_home_de.html#

robbitop
2009-07-16, 08:53:55
Zum Start der GTS250 verteilte Nvidia fleißig ArcSofts TMT 3, das mittels CUDA DVDs auf HD-Auflösungen upscalen lässt. Die CPUs hatten damals keine Chancen. PowerDVD9 beherrscht seit dem letzten Patch auch Upscaling mit CUDA, zeigt aber eindrucksvoll, dass die CPUs dafür auch in der Lage sind, selbst kleine Dual-Cores wie mein X2 4200+. Seit dem letzten Patch für TMT3 können auch Radeons (die gesamte HD-Serie) das Upscaling übernehmen, aber auch auf der CPU-Front hat sich was getan. Das Blöde an der Sache ist, dass das Bild eher schlechter wird, viel besseres Ergebnis erreicht man mit DXVA und etwas Schärfe über die Grafikkarte.
Kannst du dazu mehr erzählen? Ist das Upscaling mit CUDA schlechter als wenn man eine DVD über einen 0815-Windows-Player schaut? Der Zweck war doch, das Bild besser zu machen. Gibt's ein Review oder einen Thread, wo du diese Erkenntnisse erhalten hast?

Ansonsten scheint vreveal laut CB ja sehr gut zu funktionieren.

Der HeinZ
2009-07-16, 10:06:06
Okay offtopic, aber edit zum oben genannten bezüglich der Qualität:
Hmm also im Mediaplayer classic kann man zusammen mit dem fftshow ja auch upscalling/resize einstellen per Cpu allerdings. Benutzt meines Wissens den Lanczos Filter und keinen Bilinear/Bicubic Filter, also einen sehr guten.

Hier der effekt ----->http://de.wikipedia.org/wiki/Lanczos-Filter

Das Ergebniss bei DVD´s ist da schon sehr beeindruckend. Man kann sehen das diese lästigen treppeneffekte, die aufgrund der niedrigeren Auflösung nunmal auf einer höheren Monitor Auflösung vorhanden sind, sehr effizient hochgerechnet werden und verschwinden, der rest des Bildes bleibt nach eigenen Screenhots analysen soweit erhalten und Details fallen nicht weg, was aber nicht heißt, dass es auszuschließen ist.. Ist allerdings nur subjektiv, das Bild wirkt auf jedenfall "schöner".
Natürlich bittet das auch keinen Ersatz für echtes HD, aber es "simuliert" es doch schon sehr gut. Noch besser sieht es bei normalen Youtube Videos aus, hier empfehle ich aufgrund der niedrigen Standardauflösung "dringend" ein upscalen.
Das bild ist aufjedenfall um ein vielfaches besser als Overlay großziehen und ein bißchen besser als bicubic hochrechnen über einen Shader, z.B. gibts im Mediaplayer ja die Möglichkeit im VMR9 renderer den Overlay bicubisch hoch-/runter-rechnen zu lassen, über die Grafikkarte (PS 2.0 Shader vorrausgesetzt). Ist nicht ganz so hübsch wie der CPU Filter, kostet aber auch null Leistung per CPU.

Wie machen das denn der Cyberlink- und der CUDA-Upscaler? Also auf welche Art und weise wird das Bild skaliert? Denn wirds bilinear hoch/runtergerechnet, ist es nichts anderes als wenn man das Overlay auf Vollbild stellt, also Zweckfrei! Erkenntnisse?

Gast
2009-07-16, 11:16:10
Da aber die Videos in WMV oder unkomprimiertes AVI umgewandelt werden, ist der Nutzen für gewöhnlichen Anwender sehr fraglich.
WMV ist für den gewöhnlichen Anwender von fraglichem Nutzen? Wieso?

JOjo*
2009-07-16, 11:32:25
Cuda hat meiner meinung nach sowieso keine besonders rosige zukunft wenn sich Open CL durchsetzt in der zukunft!

Gast
2009-07-16, 11:57:49
Benutzt meines Wissens den Lanczos Filter und keinen Bilinear/Bicubic Filter, also einen sehr guten.

Lanzcos hat auch "nur" einen schärfefilter quasi schon ins upscaling mit integriert.

Wenn du ein wenig mit dem schärferegler spielst, solltest du mit normalem DXVA-scaling einen sehr ähnlichen effekt hinbekommen.

Treppeneffekte sollte es eigentlich auch beim upscaling direkt über den videorenderer keine geben, je nach einstellung des schärfefilters kann es eben unschärfer wirken.

Gast
2009-07-16, 12:02:38
Kannst du dazu mehr erzählen? Ist das Upscaling mit CUDA schlechter als wenn man eine DVD über einen 0815-Windows-Player schaut?

Das wäre durchaus möglich. Windvd9 hat auch ein ähnliches upscaling (allerdings mittels CPU) integriert, und der effekt ist kaum anders als ein einfacher schärfefilter.

Je nach ausgangsmaterial kann so ein schärfefilter aber zu unschönen artefakten führen (was wohl der grund ist, dass man es in WinDVD nur mit DVDs benutzen kann, da diese zumindest meistens ein relativ hochwertiges ausgangsmaterial darstellen)

Gast
2009-07-16, 12:49:10
Aktuell lässt sich sagen, dass die Software, die CUDA nutzt, so ziemlich nutzlos ist.


Das ist natürlich immer eine Frage dessen, was der User damit macht.


Das Umwandeln von Videos ist und bleibt die Domäne der CPUs


Das ist aber eine kühne Behauptung, deren Gegenteil ich mal behaupten möchte. Wie kommst Du denn dazu? Auf der einen Seite haben wir mit Videocodierung eine Aufgabe, die recht gut parallelisierbar ist, auf der anderen Seite jeweils eine Hardwarebasis, die parallele Verarbeitung extrem effizient macht (GPGPU) und eine Hardwarebasis, die auf sequentiellen Code zugeschnitten ist (CPU) und selbst mit Krücken für Parallelverarbeitung um Größenordnungen hinter GPGPU zurück bleibt. Eigentlich geht es bei so ziemlich allem, was im CPU-Bereich gerade so abgeht, darum, solche Krücken zu erfinden, um diesen Nachteil wenigstens ein Bißchen wieder aufzuholen, sei es nun SSE in der x-ten Version, Multicore oder Hyperthreading.


Wenn du aber zB beim Folding@Home mitmachen willst, dann ist Nvidia wirklich weiter als AMD, da diese durch verschiedene Hardware-Limitierungen eingebremst werden.


Das sind eher Software-Limitierungen. Eigentlich ist Radeon-Hardware spätestens seit der HD 4xxx der Hardware von nVidia überlegen. Auch mit Brook+ ist man CUDA mittlerweile zumindest ebenbürtig, was aber viel zu spät kommt. Gegen den Quasi-Standard CUDA wird ATI nie wieder einen Stich sehen. Erst, wenn mit DirectX11 und/oder OpenCL die Karten neu gemischt werden, könnte ATI wieder etwas reißen.


Sonst bleibt nur PhysX, und die zusätzlichen Effekte sind eher Geschmackssache.


Klar, der Punkt ist doch aber recht einfach: nVidia kann das, ATI nicht. Klarer Pluspunkt für nVidia, selbst wenn man Physikeffekte nicht mag.


Und ja: Mit DX11 hat CUDA weiterhin Daseinsberechtigung. Wer das nicht kapiert, ist das dessen Problem.


Selbst nVidia sieht das mittlerweile anders. Man will wohl CUDA noch eine Weile neben OpenCL und DirectX11 herlaufen lassen. Mal sehen, früher oder später gibt es wohl einen Wrapper, der CUDA-Code in das sehr ähnliche OpenCL-Format überträgt, um somit die Binärkompatibilität von schon geschriebenem CUDA-Code zu erhalten. Unis und Wissenschaftsinstitute werden das wohl fordern. Fakt ist aber, dass man mit OpenCL und vermutlich auch DirectX11 mindestens alles das machen können wird, was auch mit CUDA geht, nur dass man dann eben von der Hardware unabhängig ist. CUDA wird es früher oder später so gehen wie Glide.


Ich sehe die Relevanz eher im wissenschaftlichen Bereich.

Exakt. Da passiert so einiges.


Und Videoencoding per GPU ist kein Exklusivfeature von Nvidia-Karten, ergo auch kein echter Vorteil von CUDA.

Korrekt.

Gast
2009-07-16, 12:57:41
Naja "Upscalling" wird da meiner meinung nach etwas inflationär benutzt.
Zumal es jede aktuelle Graka über den Renderer ja eh schon macht.
Ich habe mir bisher nur das von Arcsoft angebotene SimuHD (oder ähnlich) und letztes jahr das All2HD von WinDVD angesehen. Mir sieht das eher nach exzessziven Schärfeprocessing aus.

FFDshow Resize mit Lanczos gefiltert, ohne Luma und Chroma Schärfung, macht auch kein besonders viel schärferen Eindruck als das Scalling des Renderer über die Graka. Alias Effekte bleiben auch noch bestehen und bei höheren Tabs nimmt dann auch das ringing schön zu.
Mal Hand aufs herz, das was bei dieser ganzen "Upscalling geschichte" einem dabei als erstes prägnant ins auge sticht ist sehr oft weniger das Upscalling und die wahl des Filter an sich(aktuell so geläufig, kommt mir jetzt nicht mit point sampling), sondern das exzessivere Schärfeprocessing welches stattfindet. Dies würde ich zumindest mal auf min. 99,9% der fälle der WOW UPSCALLING schrei fraktion beziehen.

deekey777
2009-07-16, 13:13:19
Kannst du dazu mehr erzählen? Ist das Upscaling mit CUDA schlechter als wenn man eine DVD über einen 0815-Windows-Player schaut? Der Zweck war doch, das Bild besser zu machen. Gibt's ein Review oder einen Thread, wo du diese Erkenntnisse erhalten hast?
http://www.tomshardware.co.uk/amd-stream-gpgpu,review-31605-10.html
Du kannst es ja ausprobieren und dir selbst ein Bild machen, aber ich empfinde das Gebotene eher als Verschlimmbersserung und weniger als Verbesserung der Bildqualität. Die Schärfefilter des MPC HC oder bloß etwas Schärfe im CCC bringen für mich deutlich mehr.


Ansonsten scheint vreveal laut CB ja sehr gut zu funktionieren.
Wer soll das eigentlich beurteilen können?

Der HeinZ
2009-07-16, 15:15:57
Naja "Upscalling" wird da meiner meinung nach etwas inflationär benutzt.
Zumal es jede aktuelle Graka über den Renderer ja eh schon macht.
Ich habe mir bisher nur das von Arcsoft angebotene SimuHD (oder ähnlich) und letztes jahr das All2HD von WinDVD angesehen. Mir sieht das eher nach exzessziven Schärfeprocessing aus.

FFDshow Resize mit Lanczos gefiltert, ohne Luma und Chroma Schärfung, macht auch kein besonders viel schärferen Eindruck als das Scalling des Renderer über die Graka. Alias Effekte bleiben auch noch bestehen und bei höheren Tabs nimmt dann auch das ringing schön zu.
Mal Hand aufs herz, das was bei dieser ganzen "Upscalling geschichte" einem dabei als erstes prägnant ins auge sticht ist sehr oft weniger das Upscalling und die wahl des Filter an sich(aktuell so geläufig, kommt mir jetzt nicht mit point sampling), sondern das exzessivere Schärfeprocessing welches stattfindet. Dies würde ich zumindest mal auf min. 99,9% der fälle der WOW UPSCALLING schrei fraktion beziehen.

Der Sinn des Upscalings ist ja das das SD-Material auf nem höheraufgelöstem Monitor möglichst gut aussieht, nicht besser als das original, das geht ja nicht.
Alias Effekt wegzaubern.... na dann schreib mir mal ne Formel, mit der das berechnet werden kann und aufs ganze Bild angewendet werden kann. Ich kanns nicht. Das wäre dann ja eine Art spekulier Filter der gewollte Muster und nicht gewollte Muster auseinander halten kann, und das in der Bewegung?:confused:
http://de.wikipedia.org/wiki/Alias-Effekt Diese Filterung muss vor der Digitalisierung geschehen - eine nachträgliche Korrektur von Alias-Effekten ist nicht mehr möglich.
Und der Lanzcos sieht nicht schärfer aus, es wirkt einfach besser auf einem HD Monitor. Angeschaut hab ich mir standbilder und filmschnitte in 1920x1080, erkennbar sind die unterschiede allemal. Aber das hier ist doch total offtopic.
Halten wir fest, gutes upscaling kann man auch ohne CUDA direkt über den Renderer erreichen. Besser kanns noch der Mediaplayer. Was kann CUDA denn noch besonders gut?

Aquaschaf
2009-07-16, 17:18:30
Cuda hat meiner meinung nach sowieso keine besonders rosige zukunft wenn sich Open CL durchsetzt in der zukunft!

Bei HPC-Anwendungen durchaus. Cuda programmiert sich viel angenehmer. Und dort spielt es kaum eine Rolle wenn es nur auf einer Plattform läuft.

Gast
2009-07-16, 17:33:29
Was kann CUDA denn noch besonders gut?


CUDA ist eine Programmiersprache. Was kann denn C++ besonders gut? Naja, diese Frage könnte man ja sogar beantworten.

CUDA ist eine Schnittstelle, mit der Berechnungen, die sich sehr gut parallelisieren lassen, auch tatsächlich parallel auf der Grafikkarte gerechnet werden können. Daten, die in die kleinen Caches der GraKa 'reinpassen, werden damit wirklich extrem schnell verrechnet. Ergebnisse über Daten, die nicht 'reinpassen, stehen vergleichsweise langsam zur Verfügung, da die Daten erst durch den "Bus" (was PCIe ja nicht ist) hin- und hergeschaufelt werden müssen. Eine gute CPU ist hier schneller.

Im Vergleich zu einer CPU ist eine GPU, z.B. über CUDA, eher schwierig zu programmieren. Parallel computing ist einer der seltenen Fälle von "Wir haben die Leistung, was fangen wir nun damit an?" Im Privatbereich mangelt es derzeit an Aufgaben für parallel computing und es wird wohl auch kein entscheidender Durchbruch kommen. Dennoch wird GPGPU die Landschaft schleichend verändern, in ein paar Jahren beispielsweise wird wohl niemand mehr Videoencoding auf der CPU rechnen lassen.

CUDA ist eine erste Schnittstelle für parallel computing per GPU. Derzeit ist CUDA Marktführer, allerdings gibt es derzeit nur wenige Aufgaben für parallel computing. Wenn es eines Tages selbstverständlich sein wird, parallelisierbare Aufgaben auf massiven parallelen Numbercrunchern wie GPUs zu rechnen, wird CUDA vergessen sein.

CUDA ist derzeit kein, und wird es (bis auf wenige Ausnahmen) wohl auch nie, Kaufargument für die private Nutzung sein. Schade eigentlich.

deekey777
2009-07-16, 17:34:55
CUDA ist eine erste Schnittstelle für parallel computing per GPU
Stimmt so nicht.
CTM war eher da. Und BrookGPU sowieso.

Gast
2009-07-16, 19:11:10
CUDA ist derzeit kein , und wird es (bis auf wenige Ausnahmen) wohl auch nie, Kaufargument für die private Nutzung sein. Schade eigentlich.
Nvidia hat sich mit CUDA und den zugehörigen GPGPU-Tweaks in GT200 ein neues Marktsegment erschlossen, im professionellen Bereich kann man so jetzt bereits interessante Produkte liefern.

Eine parallele Entwicklung hätte sich Nvidia kaum leisten können, also haben wir Privatnutzer die Entwicklung gesponsort. Ob CUDA selbst noch relevant sein wird, bis wir ebenfalls davon profitieren (im Sinne eines Kaufanreizes), bezweifle ich aber auch, zumindest hoffe ich dass sich im professionellen und privaten Bereich herstellerunabhängige Lösungen durchsetzen.

Gast
2009-07-16, 19:33:55
Der Sinn des Upscalings ist ja das das SD-Material auf nem höheraufgelöstem Monitor möglichst gut aussieht, nicht besser als das original, das geht ja nicht.


Der Sinn des Upscalling ist in dem Fall erstmal das niedriger Aufgelöstes Material auf höher aufgelösten Bildschirmen, Bildschirmfüllend angezeigt werden kann.
Die sich ergebende Quali hängt von der angewandten Methode ab.


Alias Effekt wegzaubern.... na dann schreib mir mal ne Formel, mit der das berechnet werden kann und aufs ganze Bild angewendet werden kann. Ich kanns nicht. Das wäre dann ja eine Art spekulier Filter der gewollte Muster und nicht gewollte Muster auseinander halten kann, und das in der Bewegung?:confused:
http://de.wikipedia.org/wiki/Alias-Effekt


Wo habe ich was von wegzaubern gesagt??? Habe nur erwähnt das auch ein Lanczos Filter auch hier das übliche aufweist
Es geht um nen guten Kompromiss aus Alias Effekten, Ringing, Bildung von wahrnehmbaren Jaggis, unschärfe usw usf...
Wenn du weniger Alias Effekte sehen möchtest nutze mal nen Gauß filter, der zeichnet aber ziemlich weich und der Detailgrad sinkt, muss aber zugeben den habe ich in FFDshow noch nicht verwendet.
Im Grunde kann man ein immer tiefer angesetzten Tiefpass Filter(und/oder steiler, was aber mehr zu überschwingen neigt, eine folge -> ringing) nutzen, verhindert Alias effekte aber nimmt details und schärfe.



Und der Lanzcos sieht nicht schärfer aus, es wirkt einfach besser auf einem HD Monitor. Angeschaut hab ich mir standbilder und filmschnitte in 1920x1080, erkennbar sind die unterschiede allemal. Aber das hier ist doch total offtopic.

Darum ging es im Kern nicht, das die Filterrungen sich unterscheiden ist klar. Es ging eher darum das bei sehr vielen, der überwiegende teil der wahrgenommenen unterschiede hauptsächlich auf ein Schärfeprocessing
zurückzuführen ist, diese aber dem eigentlichen "Upscalling" zuschreiben.
Jetzt wird das Upscalling noch schön marketing technisch missbraucht und im grunde wird eher geschärft wie blöd.


Wenn man bei der Lanczos Filterrung(beziehe mich hier auf ffdshow implementierung, darum ging es mir) die Luma/Chroma Schärfung weglässtund dann mal Blind mit nem Bilinearen oder Bicubischen Filter vergleicht, ohne zu wissen was fürn Filter eben angewandt wird und zusätzlich das material in bewegung sieht, wird es verdammt schwer da noch was auszumachen und da lege ich meine hand für ins feuer das du auch oft genug daneben liegen wirst und es mehr dem zufall entspricht, wenn du da ne zuordnung hast.
Standbilder sind schön, auf 1m bei 50" ranrücken auch aber nicht wirklich normal für den TV Betrieb. Bei großer Tab Anzahl erhöht sich der erkennungswert etwas, aber für mein empfinden anhand des zunehmenden ringing
Der Filter hat natürlich auch einfluss die sich ergebende unschärfe und damit auch Detailgrad, sowie Ringing und Alias effekte.

Die Scallierung ist schon ein Faktor klar, das bestreite ich nicht, aber das was einem prägnant ins Auge sticht und sehr oft dem "Upscalling" zugeschrieben wird ist das erweiterte Schärfeprocessing, z.B. Avisynth Plugins wie LSF/Seesaw oder FFDshow eigene möglichkeiten die in den genutzten vielen Tutorials mit verwendet werden.
Mehr wollte ich nicht sagen...


Halten wir fest, gutes upscaling kann man auch ohne CUDA direkt über den Renderer erreichen. Besser kanns noch der Mediaplayer. Was kann CUDA denn noch besonders gut?

Bei passenden Resize von FFdshow ist der Renderer fürs Scalling ausen vor.
Was Cuda kann oder nicht (was schon dämlich ist es so zu schreiben) liegt an der Software welche cuda nutzt und diese umgesetzt wird.

robbitop
2009-07-17, 08:44:01
Wer soll das eigentlich beurteilen können?
Schau dir die Bilder an. Ich empfinde die nachher-Bilder wesentlich besser.

Der HeinZ
2009-07-22, 08:45:57
So jetzt mal ganz blöd geklugscheissert.

Könnte man die Rechenpower, die man durch Cuda & Co bzw. besser durch die GPU hat, nicht auch nutzen um einen sehr effizienten "verlustfreien" Video-komprimierungsalgorhytmus zu entwickeln?

Ich weiss wohl das es das es da wohl schon ein paar "recht gute" Codecs gibt, aber selbst bei der besten Einstellung komprimieren Sie mein "rohes" Filmaterial gerade so um 25%, im besten fall 33% kleiner.
Was auffällt, diese Codierer sind ausgesprochen schnell und wir reden jetzt "nur" von CPU-basierten Codecs, meist noch nichtmal multithreaded. Bei DVD auflösung weit schneller als Echtzeit.
Könnte man denn hier nicht direkt ansetzten, und es dann dann eben doch noch ein wenig effizienter (durch mehr Rechenpower) umsetzen. Denke hier wird man die parallelen Eigenschaften doch gut nutzen können. Wie gesagt, das ist klugscheißerei da ich keine Ahnung von der Materie habe und evtl. wäre eine gute CPU da auch schnell genug.
Wer kann denn mal dazu was sagen?

BAGZZlash
2009-07-22, 09:25:08
Könnte man die Rechenpower, die man durch Cuda & Co bzw. besser durch die GPU hat, nicht auch nutzen um einen sehr effizienten "verlustfreien" Video-komprimierungsalgorhytmus zu entwickeln?

Du sagst es ja schon selbst: Das, was es in dem Bereich gibt, ist schnell. Wenn es Methoden gäbe, die stärker verlustfrei komprimieren können, aber dafür einfach nur mehr Rechenleistung brauchen, wären die doch schon implementiert, und dann einfach unglaublich langsam.

Die Jungs von WinZip behaupten ja, JPG-Bilder u.ä. verlustfrei nochmal um 25% verkleinern zu können. Da kommen Methoden zum Einsatz, die über simple Entropiekodierung weit hinaus gehen. Es bewegt sich also was, es findet Forschung statt. Fakt ist aber, dass diese Methoden komplexe theoretische Mathematik erfordern. Momentan sind solche Ergebnisse also das Ende der Fahnenstange. Vor 10-15 Jahren oder so dachte man, dass man Binärdaten (also z.B. .exe-Dateien) nicht gut komprimieren kann. Da geht heute so einiges. Das zeigt, dass die Forschung weiter geht.

Momentan ist der Flaschenhals bei verlustfreier Komprimierung weniger die Rechenleistung, sondern mehr die Methodik. Es sind mathematische Verfahren, die effizient umzusetzen sind (etwa durch parallele Berechnung auf GPUs) erstmal zu entwickeln.

Übrigens ist dieser Artikel (http://de.wikipedia.org/wiki/JPEG) schön, um zu verstehen, was bei verlustbehafteter Kompression passiert. Es wird gezeigt, wie weit die Methoden über eine Entropiekodierung hinaus gehen und man versteht auch, wo und wie hier parallele Berechnung anzusetzen ist. Lesenswert.

PS: Bitte Algorithmus mit "i".

Gast
2009-07-22, 16:51:38
Könnte man die Rechenpower, die man durch Cuda & Co bzw. besser durch die GPU hat, nicht auch nutzen um einen sehr effizienten "verlustfreien" Video-komprimierungsalgorhytmus zu entwickeln?


Nicht wirklich, verlustfrei heißt es du musst alle vorhandenen informationen codieren. Das bedeutet aber auch, dass die maximal erreichbare komprimierung begrenzt ist.

Relativ einfache verfahren kommen diesem limit in der regel schon relativ nahe, um noch mehr zu komprimieren brauchst du einfach überproportional viel aufwand, es zahlt sich einfach nicht aus den 10x aufwand zu betreiben nur um 1% besser zu komprimieren, selbst wenn man die 10x rechenleistung problemlos hätte.

=Floi=
2009-07-24, 00:44:13
verlustbehaftet ist aber auch nicht sinnvoll, weil man einfach den speicherplatz hat und die informationen eher unersetzbar sind!
ein schleches video bleibt ein schlechtes video.

BAGZZlash
2009-07-24, 22:17:09
verlustbehaftet ist aber auch nicht sinnvoll

Dir ist aber schon bewusst, dass jedes MPEG/DivX-Video verlustbehaftet komprimiert ist?


weil man einfach den speicherplatz hat

Ja? Rechnen wird doch einfach mal, wie groß ein unkomprimiertes Video in FullHD ist:
1.920 x 1.080 x 3 (24 bit = 3 Bytes pro Pixel) x 24 (Bilder pro Sekunde) x 60 (Sekunden) x 90 (Minuten für einen durchschnittlich langen Film) = 806.215.680.000 Bytes, also 800 GB.
Audio dazu:
44.100 (kHz) x 2 (Bytes pro Sample = 16 bit) x 6 (5.1 Surround) x 60 (Sekunden) x 90 (Minuten) = 2.847.680.000 Bytes, also knapp 3 GB.


ein schleches video bleibt ein schlechtes video.

Äh, jetzt vom Content her? Oder meinst Du die Bildqualität? Versteh' ich nicht, wer hat gesagt, dass durch (verlustfreie) Rekompression die Qualität besser wird?

=Floi=
2009-07-24, 22:28:53
ich halte mal mit der mondlandung dagegen. die teuren bänder wurden einfach überspielt und es existiert nur noch miserables material.

BAGZZlash
2009-07-24, 22:52:22
ich halte mal mit der mondlandung dagegen. die teuren bänder wurden einfach überspielt und es existiert nur noch miserables material.
Was, Mondlandung? Wogegen? Welche Bänder? Worum geht es hier gerade, hab' ich irgendwas verpasst?

=Floi=
2009-07-24, 23:19:45
http://www.zeitong.de/news/fulda/d/da/2009/07/17/originalbilder-der-mondlandung-bleiben-verschollen/

echt schade.

BAGZZlash
2009-07-24, 23:27:23
http://www.zeitong.de/news/fulda/d/da/2009/07/17/originalbilder-der-mondlandung-bleiben-verschollen/

echt schade.
Du nimmst Drogen, oder? Dass die Originalbänder der Mondlandung weg sind, ist zwar schade, aber erstens schon lange bekannt und zweitens: Was hat das mit dem Thema hier zu tun?

Gast
2009-08-11, 10:34:22
Zur Info!
ATI Stream and NVIDIA CUDA compared
Since our initial review of five of NVidia's CUDA-enabled applications back in June, we've been chomping at the bit to get our first real look at ATI's entry into the GPU computing ring called ATI Stream. Both of these platforms use parallel computing architectures to utilize the GPU's stream processors, in tandem with the CPU, to significantly increase any system's video transcoding speeds.

Today, we are going to discuss both of these technologies as well as benchmark a couple video transcoding applications from Cyberlink that support both CUDA and ATI Stream platforms. We will also take a brief look at ATI's Avivo video converter to see what ATI's own free software has to offer.
http://www.pcper.com/article.php?aid=745&type=expert&pid=1
Interessant: qua Bildqualität und Upscaling! :up:

TobiWahnKenobi
2009-08-11, 11:17:00
Re: Cuda als Kaufargument

kommt auf das system und dessen einsatzgebiet an. auf schwachen systemen (net- und notebooks) kann CUDA durchaus eine bereicherung sein, etwa bei der dekodierung von h264-material.

ebenfalls ist denkbar, dass transkodierung auf solchen CPU-schwächeren systemen schneller auf der grafikkarte abläuft, als etwa auf der CPU.

man sollte nicht ausser acht lassen, dass bei aufwendigen arbeiten, die auf die GPU ausgelagert werden, die CPU und somit das gesamtsystem komplett nutz- und ansprechbar bleibt, was wiederum nicht der fall ist, wenn die CPU komplett allein gelassen wird.. mit der rechenlast.

dass das den durchschnitts- oder hardcorezocker nicht sonderlich interessiert, weil er eh eine hochgetakte multicore-CPU einsetzt, mag möglich sein.. nur besteht die PC-nutzergemeinde nunmal nicht nur aus spielern mit überdimensionierten rechenboliden.

den jeweils effizienten weg, vorhandene rechenleistung von CPU und GPU sinnvoll einzusetzen, muss jeder für sich und sein system selbst finden - oft führen halt unterschiedliche wege zum ziel und CUDA ist nunmal eine alternative zur reinen CPU-arbeit.


(..)

mfg
tobi

deekey777
2009-08-11, 12:00:20
Zur Info!
ATI Stream and NVIDIA CUDA compared

http://www.pcper.com/article.php?aid=745&type=expert&pid=1
Interessant: qua Bildqualität und Upscaling! :up:
Und weiter? Ist danach CUDA ein Kaufargument oder nicht? Links kann jeder posten.

TobiWahnKenobi:
Wenn ein Grafikchip über CUDA Videos dekodieren kann, dann er dies erst recht über DXVA. Problematisch sind nur die exotischen Settings, wo es nichteinmal gewährleistet ist, dass zB CoreAVC diese Videos über CUDA dekodieren kann.
Agument weg.

Es muss schon ein sehr schwaches System sein, wo man ein Video über CUDA umwandeln muss. Der eigentliche Stolperstein ist die Software, denn die kostepflichtige Software ist crap. Ob MediaCoder+CudaEncoder wirklich eine Alternative zu x264 (und entsprechenden GUIs) ist, konnte bisher niemand eindeutig belegen, insbesondere wenn die CPU das Decoding ünernimmt.
Schau dir die Bilder an. Ich empfinde die nachher-Bilder wesentlich besser.
Ich hab mir die Bilder angeschaut, auch habe ich mit dem Programm selbst rumgespielt. Aber nur weil das Ergebnis einem Laien gefällt, ist es immernoch kein Beweis dafür, dass alles richtig gemacht wurde - aus der Sicht eines Profis.

Gast
2009-08-11, 12:09:13
Und weiter? Ist danach CUDA ein Kaufargument oder nicht? Links kann jeder posten.

TobiWahnKenobi:
Wenn ein Grafikchip über CUDA Videos dekodieren kann, dann er dies erst recht über DXVA. Problematisch sind nur die exotischen Settings, wo es nichteinmal gewährleistet ist, dass zB CoreAVC diese Videos über CUDA dekodieren kann.
Agument weg.

Es muss schon ein sehr schwaches System sein, wo man ein Video über CUDA umwandeln muss. Der eigentliche Stolperstein ist die Software, denn die kostepflichtige Software ist crap. Ob MediaCoder+CudaEncoder wirklich eine Alternative zu x264 (und entsprechenden GUIs) ist, konnte bisher niemand eindeutig belegen, insbesondere wenn die CPU das Decoding ünernimmt.
War nur sachdienlich gemeint, das weißt du deekey777 :up:
Immerhin entgehn Interessenten solche aktuellen Tests. Falls sie Fragen aufrufen und sich eine Disku entspinnt, desto besser!
Ansonsten hast rewcht: schlicht und ergreifend...

TobiWahnKenobi
2009-08-11, 12:59:28
@deekey777

ähm, nein - das argument ist sicher nicht weg, denn als media center nutzer, bin ich auf meinem notebook (seit ich es vor ca. 1 jahr gekauft habe) auf coreAVC+CUDA angewiesen, wenn ich AVC-konserven hardwarebeschleunigt / GPU-dekodiert abspielen möchte. es gibt per se nämlich keine DXVA-beschleunigung für AVC in der MCE/ dem VMC.

btw,
an die qualität des von mir verwendeten mainconcept-encoders (ich verwende für HD-aufnahmen das high profile L5 und L5.1) kam bisher nichts heran - wobei transcoding eh nichts für mich ist - ich brauche sowas schlichtweg nicht. ich filme in HD, bearbeite in HD und schreibe auch als solches heraus.


(..)

mfg
tobi

robbitop
2009-08-11, 13:50:19
Ich hab mir die Bilder angeschaut, auch habe ich mit dem Programm selbst rumgespielt. Aber nur weil das Ergebnis einem Laien gefällt, ist es immernoch kein Beweis dafür, dass alles richtig gemacht wurde - aus der Sicht eines Profis.
Die objektive mathematische Qualität ist die eine Sache, aber die subjektive Wahrnehmung die andere. Wenn ich zur Unterhaltung einen Film genieße, soll das Bild subjektiv gut sein. Und genau das scheint mir der Fall zu sein.

robbitop
2009-08-11, 14:18:57
es gibt per se nämlich keine DXVA-beschleunigung für AVC in der MCE/ dem VMC.

Vista hat keine DXVA2 Beschleunigung für MPEG4-AVC? Werben nicht NV und ATI genau damit?

deekey777
2009-08-11, 14:31:17
Vista hat keine DXVA2 Beschleunigung für MPEG4-AVC? Werben nicht NV und ATI genau damit?
Man muss den passenden Decoder haben, den MCE nicht liefert. Die richtige Frage wäre eher: Kann man nicht einfach einen DXVA-Decoder (zB aus der Demoversion zu PowerDVD8) in MCE nutzen?

TobiWahnKenobi
2009-08-11, 14:31:20
da ich keine werbebroschüren lese, kann ich dir nicht sagen, womit ATI und NV werben. ich kann dir aber sagen und auch darüber schreiben, was wie funktioniert bzw. nicht funktioniert.

btw,
du kannst über umwege den mpeg-decoder von cyberlink in der MCE und dem VMC einklinken, das hat aber mit AVC nichts zu tun und ist selbst für mpeg2 total sinnbefreit, weil schon ein fähiger microsoft-decoder für mpeg vorhanden ist.


(..)

mfg
tobi

klumy
2009-08-11, 17:24:09
Momentan gibt es keine massentauglichen Programme, von denen CUDA profitieren könnte. Diese ganzen Programme wie Folding@Home mal ausgenommen, die nur meine Stromrechnung in die Höhe treiben.

Insofern wäre CUDA für mich kein Kaufargument!

Wuzel
2009-08-11, 18:07:40
Du sagst es ja schon selbst: Das, was es in dem Bereich gibt, ist schnell. Wenn es Methoden gäbe, die stärker verlustfrei komprimieren können, aber dafür einfach nur mehr Rechenleistung brauchen, wären die doch schon implementiert, und dann einfach unglaublich langsam.

Die Jungs von WinZip behaupten ja, JPG-Bilder u.ä. verlustfrei nochmal um 25% verkleinern zu können. Da kommen Methoden zum Einsatz, die über simple Entropiekodierung weit hinaus gehen. Es bewegt sich also was, es findet Forschung statt. Fakt ist aber, dass diese Methoden komplexe theoretische Mathematik erfordern. Momentan sind solche Ergebnisse also das Ende der Fahnenstange. Vor 10-15 Jahren oder so dachte man, dass man Binärdaten (also z.B. .exe-Dateien) nicht gut komprimieren kann. Da geht heute so einiges. Das zeigt, dass die Forschung weiter geht.

Momentan ist der Flaschenhals bei verlustfreier Komprimierung weniger die Rechenleistung, sondern mehr die Methodik. Es sind mathematische Verfahren, die effizient umzusetzen sind (etwa durch parallele Berechnung auf GPUs) erstmal zu entwickeln.

Übrigens ist dieser Artikel (http://de.wikipedia.org/wiki/JPEG) schön, um zu verstehen, was bei verlustbehafteter Kompression passiert. Es wird gezeigt, wie weit die Methoden über eine Entropiekodierung hinaus gehen und man versteht auch, wo und wie hier parallele Berechnung anzusetzen ist. Lesenswert.

PS: Bitte Algorithmus mit "i".

Soweit ich das weiss, nutzt Winzip auch nur LZMA, wie jeder andere packer auch.
Man nimmt nur verschiedene Wöterbücher für die jeweiligen Formate. Eigentlich keine alzugrosse Hexerei.

Und Cuda würde da null bringen, das es eigentlich nur integer ops sind.

Gast
2009-08-11, 18:40:58
Und Cuda würde da null bringen, das es eigentlich nur integer ops sind.
Ja und?
Integer24 hat den selben Durchsatz wie Float32. Integer32 leider nur ein viertel. Aber auch das ist noch jede Menge.

Aquaschaf
2009-08-11, 19:01:10
Die erreicht man vielleicht nicht einmal bevor die Speicherbandbreite limitiert.

Wuzel
2009-08-11, 19:39:03
Ja und?
Integer24 hat den selben Durchsatz wie Float32. Integer32 leider nur ein viertel. Aber auch das ist noch jede Menge.

Ähmmmmmm da wird nicht alzuviel gerechnet, der Hauptanteil fällt auf das traversieren der Suchbäume. Die dabei enstehende bedingte herumspringerei ist mit sicherheit auf der GPU um einiges langsamer, wenn überhaupt möglich.
Ich kenne Cuda jetzt nicht alzugut, ich weiss nur, das eine einfache 'if' bedingung in einem Shader mit zu den teuersten Operationen gehört.

Gast
2009-08-11, 19:48:17
Für mich als Benutzer von Backtrack und den dort nun integrierten CUDA Funktionen, ist CUDA ein Segen.

TC

Gast
2009-08-11, 21:13:32
Ähmmmmmm da wird nicht alzuviel gerechnet, der Hauptanteil fällt auf das traversieren der Suchbäume. Die dabei enstehende bedingte herumspringerei ist mit sicherheit auf der GPU um einiges langsamer, wenn überhaupt möglich.
Ich kenne Cuda jetzt nicht alzugut, ich weiss nur, das eine einfache 'if' bedingung in einem Shader mit zu den teuersten Operationen gehört.
"Teuer" im Sinn von zeitaufwändig ist es nicht, das Problem ist dass man dadurch schnell mal ein Viertel der Multiprozessoren lahmlegt weil die dann warten müssen. Bzw. werden auch gerne einfach beide Branches berechnet wenn ich das richtig im Kopf habe, ist natürlich auch eher suboptimal. Diese Dinge wirken sich dann halt entsprechend auf die Gesamtgeschwindigkeit aus.

Zumindest ab Cuda 2.2 AFAIK kann man aber mit einer speziellen Instruktion für einen half-warp (oder warp, weiß ich nimmer genau) bei einer if-Bedingung entsprechende Zusicherungen machen (wenn mans als Programmierer weiß natürlich), dann kostets auch nix.

Merke:
Kann mans nicht parallelisieren ists nix für Cuda...

Coda
2009-08-11, 22:23:47
Die Warp-Size ist 32, wenn nur ein Thread divergiert, dann stallt man damit alle 31 anderen.

Aquaschaf
2009-08-11, 23:00:46
Zumindest ab Cuda 2.2 AFAIK kann man aber mit einer speziellen Instruktion für einen half-warp (oder warp, weiß ich nimmer genau) bei einer if-Bedingung entsprechende Zusicherungen machen (wenn mans als Programmierer weiß natürlich), dann kostets auch nix.

Was meinst du? In Hinsicht auf Synchronisation ist mit 2.2 doch nur threadfence hinzugekommen. Und das sorgt lediglich dafür dass alle Threads das Resultat von Schreibzugriffen in der gleichen Reihenfolge sehen.

Ähmmmmmm da wird nicht alzuviel gerechnet, der Hauptanteil fällt auf das traversieren der Suchbäume.

Je nachdem wie die Bäume aussehen - und wenn sie mehr oder weniger statisch sind - könnte man sie auf eine Weise in Arrays platzieren dass man bei Sprüngen nur kurze Divergenzen bekommt. Dann kann der Compiler predicated instructions benutzen und das ganze geht möglicherweise ziemlich flott.

Gast
2009-08-11, 23:05:53
Die Warp-Size ist 32, wenn nur ein Thread divergiert, dann stallt man damit alle 31 anderen.
Wenn ich die warp vote functions richtig verstanden habe kann man das damit zumindest teilweise umgehen.
http://www.ddj.com/hpc-high-performance-computing/210102115

Gast
2009-08-11, 23:07:36
Zumindest ab Cuda 2.2 AFAIK
Sorry hab nachgesehen, war Compute Capability 1.2 (9000er Serie)

Wuzel
2009-08-12, 00:15:24
Was meinst du? In Hinsicht auf Synchronisation ist mit 2.2 doch nur threadfence hinzugekommen. Und das sorgt lediglich dafür dass alle Threads das Resultat von Schreibzugriffen in der gleichen Reihenfolge sehen.



Je nachdem wie die Bäume aussehen - und wenn sie mehr oder weniger statisch sind - könnte man sie auf eine Weise in Arrays platzieren dass man bei Sprüngen nur kurze Divergenzen bekommt. Dann kann der Compiler predicated instructions benutzen und das ganze geht möglicherweise ziemlich flott.

Beim Decomp sind sie statisch und ausgeglichen.

Das mit dem Array ist doch Käse, ich habe das schon ein paar mal gelesen und frage mich woher der Krampf kommt...

Jeder, der einigermasen klar im Kopf ist, legt einen Memorypool für den Baum an. Und dann sind die Zeiger der Nodes schön strukturiert im Speicher. Man geht sogar beim Init hin und legt sie Tiefensortiert an - zumindest beim statischen Baum.
Dann kann man herrlich in einer rekursiven funktion mit Zeigerarithmetik durchpeitschen.

Und der Speed, den man heute mit einer modernen CPU dabei heraus bekommt, ist mehr als nur ansehnlich.

Man müsste das wirklich mal testen, wer da schneller durch den Baum kommt.

Edit:

Mal eben schnell nachgeschaut, worst case suche im Quadtree, zieht man die cout's ab, komm ich auf unter 1 mili sekunde - unoptimiert.
Mit optimierung dürfte ich irgendwo bei 0,6-0,8 mili sekunden liegen. Notebook: PM 1,6ghz (!!) - muss das mal auf der grossen Box testen...

http://666kb.com/i/bbfsslturvg4rlkdv.png

Aquaschaf
2009-08-12, 00:26:16
Das mit dem Array ist doch Käse, ich habe das schon ein paar mal gelesen und frage mich woher der Krampf kommt...

Wo soll denn der Unterschied zu einem Memorypool sein, wenn der Baum statisch ist? Und ich beziehe mich hier ja nicht speziell auf irgendeinen Algorithmus oder eine bestimmte Baumstruktur. Ein geschicktes Layout in einem Array ist schlicht eine Möglichkeit Speicherzugriffe in sequentieller Reihenfolge, mit guter Lokalität und wenig Overhead zu erreichen. Nebenbei: rekursive Funktionen hast du bei keiner GPGPU-Sprache zur Zeit.

Wuzel
2009-08-12, 01:09:10
Wo soll denn der Unterschied zu einem Memorypool sein, wenn der Baum statisch ist? Und ich beziehe mich hier ja nicht speziell auf irgendeinen Algorithmus oder eine bestimmte Baumstruktur. Ein geschicktes Layout in einem Array ist schlicht eine Möglichkeit Speicherzugriffe in sequentieller Reihenfolge, mit guter Lokalität und wenig Overhead zu erreichen. Nebenbei: rekursive Funktionen hast du bei keiner GPGPU-Sprache zur Zeit.

Nuja, sagen wirs halt so: Programmiert doch einer bitte einen Such Baum in Cuda. Dann kann man ja schauen, wer schneller findet.

Ich bleibe so lange bei meiner behauptung, das die suche auf der GPU langsamer ist, biss das gegenteil vorliegt ;)

Für den Versuch bleibe ich beim PM 1,6 Ghz. Bin mir sicher, das der PM eine GPU bei der suche vernichtet :)
Werde morgen dann Screens und Zeiten der optimierten Fassung posten.

Aquaschaf
2009-08-12, 08:19:11
Nuja, sagen wirs halt so: Programmiert doch einer bitte einen Such Baum in Cuda. Dann kann man ja schauen, wer schneller findet.

Moment, es war doch nicht davon die Rede dass eine GPU schneller ist sondern es ging um Array und Memorypool.

Gast
2009-08-12, 10:01:19
Nuja, sagen wirs halt so: Programmiert doch einer bitte einen Such Baum in Cuda. Dann kann man ja schauen, wer schneller findet.

Ich bleibe so lange bei meiner behauptung, das die suche auf der GPU langsamer ist, biss das gegenteil vorliegt ;)

Für den Versuch bleibe ich beim PM 1,6 Ghz. Bin mir sicher, das der PM eine GPU bei der suche vernichtet :)
Werde morgen dann Screens und Zeiten der optimierten Fassung posten.
Wuzel, natürlich ist ein "klassischer" Baum für eine GPU nicht optimal, da hast du ja recht. Aber das bedeutet noch lange nicht das es keine andere Möglichkeit gibt dasselbe Problem so zu formulieren dass man zumindest teilweise die parallele Rechenpower von GPUs nutzen kann. Das meinte Aquaschaf mit "könnte man sie auf eine Weise in Arrays platzieren dass man bei Sprüngen nur kurze Divergenzen bekommt."

Das ganze erfordert natürlich u.U einen neuen Algorithums - aber es ist sehr wohl möglich.
Parallele Prefix Sum mit CUDA (http://developer.download.nvidia.com/compute/cuda/sdk/website/projects/scan/doc/scan.pdf)
Eine solche Lösung wird fast immer die herkömmliche CPU-basierte Variante vernichten was den Speed angeht... und der Vorteil wird umso deutlicher je größer das Problem wird... ;)

Gast
2009-08-12, 10:41:35
Nuja, sagen wirs halt so: Programmiert doch einer bitte einen Such Baum in Cuda. Dann kann man ja schauen, wer schneller findet.
Vergleich mal Raycasting auf CPU mit Raycasting auf GPU.
Da geht auch die meiste Rechenzeit für das Traversieren eines Suchbaums drauf. Suchbäume mit geeigneten Datenstrukturen sind auf GPU verdammt schnell.

Wuzel
2009-08-12, 14:23:03
Moment, es war doch nicht davon die Rede dass eine GPU schneller ist sondern es ging um Array und Memorypool.

Es ging eigentlich nur um diesen Post von mir: http://www.forum-3dcenter.org/vbulletin/showpost.php?p=7467168&postcount=41

Und was die andere Sache angeht, wie gesagt ich bin da ganz offen für jegliche dinge die da auch kommen mögen.
Ich kann auf meiner Seite halt nur belegen, das ich auf die Art schneller im Baum suche, als jegliche mir - biss dato - bekannten, alternativ methoden.


Wuzel, natürlich ist ein "klassischer" Baum für eine GPU nicht optimal, da hast du ja recht. Aber das bedeutet noch lange nicht das es keine andere Möglichkeit gibt dasselbe Problem so zu formulieren dass man zumindest teilweise die parallele Rechenpower von GPUs nutzen kann. Das meinte Aquaschaf mit "könnte man sie auf eine Weise in Arrays platzieren dass man bei Sprüngen nur kurze Divergenzen bekommt."

Das ganze erfordert natürlich u.U einen neuen Algorithums - aber es ist sehr wohl möglich.
Parallele Prefix Sum mit CUDA
Eine solche Lösung wird fast immer die herkömmliche CPU-basierte Variante vernichten was den Speed angeht... und der Vorteil wird umso deutlicher je größer das Problem wird...


Habe das Paper mal schnell überflogen, interresante sache. Allerdings macht mich die Tabelle am Ende ein wenig stutzig. Ein Core 2 soll für selbst polige 200k Elemente über 1 mili sekunde brauchen?
Da kommt das dumpfe Gefühl auf, das man die GPU besonders gut dastehen lassen will. Man kann nicht hingehen und grossartig auf die GPU hin arbeiten und unoptimierten CPU Code gegenüberstellen - das ist nicht ganz 'sauber'.

Generell komt mir der Verdacht auf, das hinter diesen GPU Geschichten ein riesen Hype klemmt - wo man Sinn und Unsinn - bzw. Kosten/Nutzen - ganz schnell unter den Tepich kehrt.
Selbst eine billige Low Cost CPU kann heutzutage schier brachiale Leistungen in der Integerarithmetik vollbringen.
Klar kann eine GPU mathe probleme - insbesondere auserhalb das ganzzahligen Bereichs und Matrix schubsserei - sehr effektiv lösen - keine Frage. Aber bei dem ganzen anderen Kram bleibe ich lieber bei der CPU.
Zumal da ja noch immer der Kosten/Nutzen Faktor über der sache schwebt...

Aquaschaf
2009-08-12, 14:50:30
Habe das Paper mal schnell überflogen, interresante sache. Allerdings macht mich die Tabelle am Ende ein wenig stutzig. Ein Core 2 soll für selbst polige 200k Elemente über 1 mili sekunde brauchen?
Da kommt das dumpfe Gefühl auf, das man die GPU besonders gut dastehen lassen will. Man kann nicht hingehen und grossartig auf die GPU hin arbeiten und unoptimierten CPU Code gegenüberstellen - das ist nicht ganz 'sauber'.

Eine Präfixsumme läßt sich sehr gut parallelisieren. Egal ob das jetzt die am besten getunte CPU-Implementierung ist mit der verglichen wurde, bei diesem speziellen Problem kann eine CPU für größere Eingaben kein Land sehen. Wobei man Präfixsummen sowieso hauptsächlich in parallelen Algorithmen benötigt.

Es ist nicht so schwer zu sehen was man mit einer GPU geschickt anstellen kann und was nicht. Ist genügend Datenparallelität vorhanden (was schon eine starke Einschränkung ist), dann eignet es sich wahrscheinlich für eine GPU. Sonst nicht.

Gast
2009-08-12, 17:45:51
Habe das Paper mal schnell überflogen, interresante sache. Allerdings macht mich die Tabelle am Ende ein wenig stutzig. Ein Core 2 soll für selbst polige 200k Elemente über 1 mili sekunde brauchen?
Da kommt das dumpfe Gefühl auf, das man die GPU besonders gut dastehen lassen will. Man kann nicht hingehen und grossartig auf die GPU hin arbeiten und unoptimierten CPU Code gegenüberstellen - das ist nicht ganz 'sauber'.

Ich glaube nicht dass hier absichtlich eine schlechte C++ Implementierung genommen wurde. Auch wenns nicht ganz sauber ist dass zur verwendeten Implementierung keine Infos dabeistehen, da hast du recht.

Generell komt mir der Verdacht auf, das hinter diesen GPU Geschichten ein riesen Hype klemmt - wo man Sinn und Unsinn - bzw. Kosten/Nutzen - ganz schnell unter den Tepich kehrt.
Selbst eine billige Low Cost CPU kann heutzutage schier brachiale Leistungen in der Integerarithmetik vollbringen.

Und selbst die billigste GPU bietet wiederum ein vielfaches der Rechenleistung ebenjener Low-Cost CPU. So siehts nunmal aus... :)

Klar kann eine GPU mathe probleme - insbesondere auserhalb das ganzzahligen Bereichs und Matrix schubsserei - sehr effektiv lösen - keine Frage. Aber bei dem ganzen anderen Kram bleibe ich lieber bei derS CPU.
Zumal da ja noch immer der Kosten/Nutzen Faktor über der sache schwebt...
Schon klar, aber bei vielen Problemen fehlt einzig ein neuer Algorithmus um die Datenparallelität zu nutzen. Dann hast du auf einen Schlag nicht nur die 10-fache sondern gleich die 100-fache und mehr Rechenleistung für dein Problem, je nach Graka...
Das Beispiel mit der Prefix-Sum zeigt das gut, alles was hier gemacht wurde ist auf intelligente Weise die Zugriffe umzuordnen und zack - das ganze läuft wunderbar auf der GPU. Geht natürlich nur wenn das Problem an ich datenparallel ist, aber gerade bei den richtig rechenintensiven Problemen ist das häufig der Fall.