Can OpenGL And OpenCL Overhaul Your Photo Editing Experience?

Applications: GIMP, AfterShot Pro, And Musemage

For this article, we tested with four applications: GIMP, Corel AfterShot Pro, Musemage, and Adobe Photoshop CS6.

GIMP (GNU Image Manipulation Program), an open source project since 1995, is pretty much the go-to app for anyone who doesn’t want to pay for an image/graphics editor. The title is brimming with advanced features ranging from channels and paths to animation and pattern tools. While we tested under Windows, there are versions for several operating systems, including Mac OS X, Linux, FreeBSD, and even AmigaOS 4. Specifically, we tested with the version 2.8 build released on April 2, 2012, that incorporated OpenCL support for 19 filters. We accessed three of these filters (Gaussian blur, bilateral, and motion blur) through the Generic Graphics Library (GEGL) menu list that first started appearing in GIMP 2.6. AMD described GEGL to us like so:

“GEGL is a floating-point-based processing pipeline that will be the foundation for the next upcoming major release of GIMP. GEGL requires more computational power than the baseline GIMP pipeline, which is 8-bit-based. While the computation requirements are high, floating-point does provide flexibilities that 8-bit processing just can’t match. Since GEGL is going to be the future of GIMP processing, we have focused our OpenCL work with GIMP on accelerating the GEGL pipeline (as opposed to the baseline GIMP pipeline). As such, only GEGL operations will experience OpenCL acceleration. GEGL is being integrated piece by piece into GIMP, and that’s why you see special menus for GEGL operation in this build and in the near future, until it’s fully integrated in GIMP, at which point there will not be a special menu for GEGL since everything will be GEGL.”

In speaking with GIMP/GEGL developer Victor Oliveira, we gained an interesting insight. OpenGL is inherently made for graphics processing, and I’d long assumed that OpenCL was much the same, only aimed at somewhat different graphical tasks. However, it turns out that the API is more robust and flexible than most people appreciate.

“OpenCL not only gives GPU acceleration, but we can also use OpenCL in the CPU to provide good multi-threading, which GIMP lacked, and vectorization support,” says Oliveira. “Notice that GIMP's audience is very heterogeneous, so if we want to, for example, support the AVX instruction set in our code, we would have to generate two builds, because it wouldn't work on older machines, or detect it on runtime. Either option is bad. With OpenCL, we can do that while distributing just one build, it's a really interesting technology.

Our GIMP build has command line options for running with or without OpenCL support, as well as displaying a debug window that shows benchmarking results. For a test file, we used a 4096x2048 30 MB bitmap image.

Corel’s AfterShot Pro is a non-destructive photo workflow application. From a technical perspective, this means that every time an image is opened, edited, or output, ASP reapplies all of the image processing, starting at the very earliest step of decoding the image content all the way though rendering the final image on-screen. Throughout this process, no data is eliminated. A better metaphor may be to say that changes are stacked, and users can modify any change made within that stack. Of course, if that stack is flattened or merged, then the non-destructive workflow vanishes.

We obtained a special preview build of ASP from Corel that implements OpenCL in such a way that it helps accelerate file conversions. So we gathered a batch of 50 RAW images, each measuring 6048x4032 and roughly 37 MB, and used ASP to batch convert them into JPG with and without OpenCL assistance.

Musemage is a newer and lesser-known photo editor deserving of a larger audience. As we hear from AMD, this application was the work of several engineers in China, which explains a lot. Technically, the app is a marvel of utility and convenience for photo manipulation, especially for batch editing, but it seems to have received practically no marketing here in America. This is unfortunate because, unlike so many editing tools that have bolted-on GPU-based acceleration as an iterative afterthought, Musemage was built from the ground up with such acceleration.

In our Musemage batch test, we used eight JPEG images supplied by JLucasPhoto.com, each of 10 to 12 MP, totaling 35.4 MB of data. Musemage hosts dozens of adjustments, color effects, lens effects, distortions, resizing options, and so on. During the batch run, we applied eleven of these processes onto each image: Auto Contrast, Auto White Balance, Gaussian Blur (4.0 pixels), Color Denoising (0.8 pixel), Negative Film (highlight 50, shadow 50), Advanced Defog (threshold 0.10, strength 0.65), Vignetting (FoV angle 45), Soften Skin (radius 3.3 pixels, strength 0.05, whiten 0.02), Horizontal Flip, Resize (150% fixed width and height), and Add Text (40% opacity).

  • ilysaml
    Now Adobe uses both CUDA and OpenCL that's superb.
    Reply
  • alphaalphaalpha1
    Tahiti is pretty darned fast for compute, especially for the price of the 7900 cards, and if too many applications get proper OpenCL support, then Nvidia might be left behind for a lot of professional GPGPU work if they don't offer similar performance at a similar price point or some other incentive.

    With the 7970 meeting or beating much of the far more expensive Quadro line, Nvidia will have to step up. Maybe a GK114 or a cut-down GK110 will be put into use to counter 7900. I've already seen several forum threads talking about the 7970 being incredible in Maya and some other programs, but since I'm not a GPGPU compute expert, I guess I'm not in the best position to consider this topic on a very advanced level. Would anyone care to comment (or correct me if I made a mistake) about this?
    Reply
  • A Bad Day
    How many CPUs would it take to match the tested GPUs?
    Reply
  • blazorthon
    A Bad DayHow many CPUs would it take to match the tested GPUs?
    That would depend on the CPU.
    Reply
  • esrever
    Would be interesting to compare the i7 ivybridge against trinity in openCL
    Reply
  • mayankleoboy1
    why no nvidia cards here?
    Reply
  • mayankleoboy1
    any CUDA vs OpenCL benchmarks?
    Reply
  • de5_Roy
    can you test like these combos:
    core i5 + 7970
    core i5 hd4000
    trinity + 7970
    trinity apu
    core i7 + 7970
    and core i7 hd 4000, and compare against fx8150 (or piledriver) + 7970.
    it seemed to me as if the apu bottlenecks the 7970 and the 7970 could work better with an intel i5/i7 cpu on the graphical processing workloads.
    Reply
  • vitornob
    Nvidia cards test please. People needs to know if it's better/faster to go OpenCL or CUDA.
    Reply
  • bgaimur
    vitornobNvidia cards test please. People needs to know if it's better/faster to go OpenCL or CUDA.
    http://www.streamcomputing.eu/blog/2011-06-22/opencl-vs-cuda-misconceptions/

    CUDA is a dying breed.
    Reply