Fragen zum Potential von CUDA / OpenCL für Malprogramme

Antworten
MartinH.
Artguy
Beiträge: 3263
Registriert: 28. Mai 2006, 23:15
Kontaktdaten:

Fragen zum Potential von CUDA / OpenCL für Malprogramme

Beitrag von MartinH. » 3. Mär 2011, 20:18

Mich würde mal interessieren ob es Sinn machen würde bei Digital Painting Software die Berechnungen der Brushengine in einer Grafikkarte über CUDA oder OpenCL ausführen zu lassen. Diese Frage können mir wahrscheinlich nur Informatiker beantworten, aber ich vermute und hoffe mal es gibt hier im Forum auch ein paar Leute die primär eigentlich programmieren und das Malen nur als Hobby betreiben.
Wo wären die Bottlenecks für die Performance? Müssten die kompletten Bilddaten in den Grafikkartenspeicher passen (also bei 8 Bit dann 4 byte pro Pixel, pro Ebene, womit man schnell ein Gigabyte voll hat)?
Ich vermute Brush Engines brauchen hauptsächlich simple rechenoperationen (pro Pixel ein paar byte rein, simple rechenoperation, ein paar byte wieder rausgeben), aber dann halt bei nem 1000 x 1000 pixel brush pro "frame" des Striches gleich eine Million dieser Operationen. Wäre hier ein Performance Vorteil bei der Verwendung von GPU gestützten Rechenoperationen zu erwarten?

Mich reizt der Gedanke an sowas zu arbeiten schon lange. Wenn da wirklich Potential für gravierende Performance Sprünge wäre, dann könnte man mal eine Painting Software in Angriff nehmen die anders als die gängigen Programme arbeitet und z.B. erlaubt Brushes zu layern. Also z.B. nen normalen brush zum malen, nen Struktur Overlay Brush und nen Mixer Brush erstmal einzeln anlegen und speichern und dann in ein Multibrush Tool diese Brushes in beliebiger Reihenfolge reinladen und beim malen werden dann diese 3 unterschiedlichen Pinselstriche simultan übereinander gelegt. Ich seh eigentlich keinen Grund warum sowas nicht technisch machbar sein sollte außer die momentan noch durch CPUs limitierte Performance.

Ich denke aber auch das sowas zu fancy ist um jemals von irgendeinem großen Programm a la Photoshop aufgegriffen zu werden. Denen sind Illustratoren eh komplett egal vermute ich nachwievor.

Seht ihr ne Chance in einem OpenCL / CUDA Malprogramm?

Falls ja dann wäre noch interessant wie die Möglichkeiten für Crossplattform Entwicklung mit den beiden Sprachen ist, ob es gute Entwicklungsumgebungen für beide gibt und ob man mit beiden gut debuggen kann.


Edit: Nach dem was ich bisher ergooglen konnte ist die einzige Möglichkeit auf GPUs zu debuggen indem man Nsight von nVidia benutzt. Das funktioniert wohl zusammen mit Visual Studio und läuft nur auf win7 und Vista. Damit fiele das für mich erstmal flach, aber ich hab momentan eh keine Zeit sowas auszuprobieren.
Zur performance Frage hab ich hier was interessantes gefunden:

http://developer.download.nvidia.com/co ... mples.html

Das sind OpenCL Codebeispiele die komilierte exe Dateien enthalten. In einigen der Beispiele sind 2D Bildfilter realisiert worden die benutzt werden um animierte 3D Objekte oder Fotos zu Filtern. Man hat die möglichkeit die Berechnung entweder auf der GPU oder der CPU ausführen zu lassen und da sind die Geschwindigkeitsunterschiede richtig krass zugunsten der GPUs. Nun kann man davon ausgehen das da zumindest zu nem gewissen Teil auch Absicht drin steckt, der Kram kommt schließlich von nem Grafikkarten Hersteller. Bei einer Demo wo ichs überprüft hab wird z.B. bei der CPU Berechnung nur 1 Kern von meinem Quadcore genutzt womit mal eben rund 75% der möglichen CPU Leistung verschwendet werden :). Aber der Unterschied ist immernoch so enorm (flüssig Echtzeit auf der GPU und alle paar Sekunden ein Bild auf der CPU), das es in meinen Augen hoffen lässt was das Potential von OpenCL für Painting Applikationen angeht.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder