Infinite Loop / The Apple Ecosystem

A pro with serious workstation needs reviews Apple’s 2013 Mac Pro


OpenCL: Performance isn't a problem, but support is

I usually discuss and benchmark the CPU in reviews before the GPU because it's usually the star of the show, but the 2013 Mac Pro's dual GPU and 4K support are headlining this release. As I mentioned earlier, 4K and Thunderbolt support is one of the reasons that the Mac Pro requires a Xeon for all that incredible bandwidth. To handle realtime filtering of 4K footage, Final Cut 10.1 was updated to tap both the GPUs in the Mac Pro. It is a stellar example of the kind of power you can achieve when using everything—multithreaded CPU, fast RAM, and two GPUs that are able to process incredible amounts of data in realtime. I loaded up FCP X 10.1 and a 4K sample project and proceeded to push it, and the results were pretty staggering:

Using Cineflare's Adjustment Layer plugin for FCP X on top of 4K footage that is already dissolved and filtered in sub-edits. Amazing stuff.

Any stuttering you see is mostly due to the screen recording software taking cycles from FCP X. Played back from the PCIe SSD, it was buttery smooth and showed no signs of slowing down. If you need a powerful video editor and powerful hardware, look no further. To see how the load was distributed across the machine's hardware, I loaded up Activity Monitor and OpenGL Driver Monitor.

Enlarge / All cores of the CPU and both GPUs chipping in to handle our heavily filtered 4K media.

Batch exports from Compressor showed similar CPU and GPU usage during export of the scene. While I may not be the best person to review FCP X, it does seem like it's come a long way since its initial release. Considering the crazy low price, I'll definitely be using it for my editing work. Otherwise, I thought of testing Da Vinci Resolve, but I don't have much experience with it. Judging from the Final Cut Pro X results we've seen and the OpenCL benchmarks further on, it's safe to assume the dual D700 is exceptional for Resolve users. The new Mac Pro and Final Cut Pro X 10.1 may be the combination to finally convince video professionals that Apple is serious about pro video.

Apart from Resolve and Final Cut Pro X, the current creative OpenCL software landscape isn't huge, but I do have some programs and filters that tap the GPU via OpenCL. The Neat Image denoise filter has a really good built-in utility to test all possible scenarios for maximum image processing.

Notice that the 8-core CPU alone can process 37MP per second, but, with the one added D700 and the CPU cores combined, you get 67.1MP per second of processing power. It's a bit odd that the benchmark shows optimal performance with only one GPU and the CPUs combined, instead of with both GPUs and the CPU cores. I spoke to the developer, and they said that this wasn't a bug—it's just the optimal performance scenario for Neat Image.

Otherwise, I'd love to tell you that all my pro apps are lining up to use all that OpenCL GPU power, but Neat Image and Mari are pretty much it for now. Here are some benchmarks to give you an idea of how the dual D700s knock over other CL-accelerated tasks.

Luxrender is one of the OpenCL renderers that currently taps both the D700 GPUs, and it shows why Apple chose the 7970-based D700 for the top-tier GPU work: it's exceptional for work like this. To be fair, there are far better Quadros available than the 4000 now, but I don't have access to the PC workstations with the Quadro K6000, currently the leading Nvidia compute pack. I do have a comparison from here for the single Quadro 6000, which is a current-gen Quadro at the high end. The Luxmark room bench gets 641 on a single $1600 Quadro 6000, but the D700...

I think the only word for that is "booooooom!" Considering the 924 score of the lower-specced single W8000 from the same page linked above, this is clearly not a bug. While the OpenGL performance of the D700 needs work, it's very much a workstation card for OpenCL workloads. Considering the price tag—$1000 upgrade for the two D700s—it's a steal for this type of compute performance and added hardware reliability of a FirePro.

Without a CUDA GPU, Premiere CS6 only has software rendering mode for playback on the Mac Pro, although Premiere Pro CC has OpenCL support for the Mac Pro GPU and Mercury Preview Engine. This leads us to another issue with the new Mac Pro.

No Nvidia GPU options for CUDA

The lack of an Nvidia GPU option is problematic for a lot of professionals. Certain video plugins like Genarts Sapphire, older versions of Premiere Pro, or The Foundry's Kronos still depend on CUDA for GPU acceleration. So while the future is undeniably OpenCL based, the present still involves CUDA for many creative pros. I own a CUDA renderer called Octane Render that I can't use with the Mac Pro's GPUs for this reason.

The lack of an Nvidia option in the new Mac Pro is probably due to a number of factors—the AMD FirePros are exceptional compute GPUs, for one. Another factor is cost. If you look at the price that Apple charges for the Mac Pro graphics upgrades, they managed to keep the price very low, given the GPU offerings. Nvidia likely didn't want to take what Apple was offering them for equivalent Quadros. To be fair, giving Apple low-margin parts for affordable workstation cards is a dangerous proposition for Nvidia, which is still the preferred option for BTO workstation cards from workstation vendors. HP and Dell would have had words with Nvidia if they created a low-cost custom chip for Apple—workstation cards are cash cows, and no one at Nvidia wants to see that bubble burst.

Apple may also be trying to loosen CUDA's grip on GPGPU workflows in the creative software field. In recent years, we've seen plenty of big name programs, like Da Vinci Resolve, that were once CUDA-only offer an OpenCL option. Adobe Premiere's GPU-based Mercury Preview Engine also has OpenCL support on many Macs, including the new Mac Pro. But Nvidia is bending over backward in an attempt to preserve CUDA's entrenchment with a ton of in-house projects and purchases like mental Ray, which is at the heart of their Optix renderer. They are basically giving this stuff away to developers like Adobe to preserve their high-margin Quadro sales. And it's working well, largely because Nvidia offers exceptional support which isn't currently matched by Apple.

So while I feeI for those people who want an Nvidia option, Apple is one of the few companies in a position to push this switch to OpenCL. The two high-performance D700 GPUs in the Mac Pro, combined with Apple's dominance of the professional video market, means the company will succeed in moving many developers to OpenCL. This is good news. While it would have been nice to get a CUDA option in the short term, wouldn't it be better to get an OpenCL option that will loosen up your reliance on one GPU maker, freeing you to choose a card solely based on performance? If Nvidia's next GPUs are the best options when it comes time for a refresh, and Apple can get them at a good price, I think Apple will likely go with Nvidia for the next round. But there is a big sticking point in this CUDA-to-OpenCL transition that not many are aware of.

Apple—put your OpenCL developer resources where your mouth is

I have some serious reservations about the lack of an Nvidia GPU option, partially because of poor OpenCL support from Apple compared to CUDA support from Nvidia. So I did some digging and contacted the developers of Neat Image, a denoise plugin for images and video that supports both CUDA and OpenCL. They confirmed my impression that Apple has lackluster support compared to Nvidia's CUDA support for OS X or even AMD's OpenCL and Nvidia on Windows and Linux.

I have heard from some Mac developers that Nvidia's CUDA support is much better than Apple's OpenCL support and that fixes and timely releases are lagging on OS X compared to Linux and Windows. Has that been your experience?

....Another unpleasant thing about OpenCL on Mac OS is that it is supported by Apple (not by AMD), and the level of the technical support, documentation, samples, and the overall availability of technical information on it is very low.

CUDA, on the contrary, is very well supported by NVIDIA on all platforms (including Mac OS), requires very little change in source code (if any) when porting from one platform to another, works more predictably in terms of performance, and provides almost equivalent feature sets on all platforms and similar performance. So, the answer to your question is 'yes,' what you have heard from others is quite in line with our experience.

Is AMD's OpenCL support on the Mac different from Windows or Linux?

Yes, it is. It is very similar on Windows and Linux, but is completely different on Mac.

In Windows/Linux, this support is provided by AMD, while on Mac it is provided by Apple. There is a team in AMD responsible for helping Apple with OpenCL support for AMD GPUs. However, that seems to be an internal AMD department, not quite accessible to third-party developers. Third-party developers receive almost no technical support from Apple, which is why it is more difficult to develop anything OpenCL on Mac than in Windows/Linux.

Also, the OpenCL implementation for AMD devices on Mac OS as compared with the Windows/Linux ones:

  • Is less efficient (for example, 2D copies from host memory to GPU memory are slower);
  • Is less predictable (for example, GPU memory is sometimes unexpectedly swapped out to the host memory, killing the performance);
  • Is poorly documented (Kronos generic OpenCL documentation is pretty much all you have on Mac OS, while on Windows and Linux, the AMD APP SDK documentation (hundreds of pages) and samples are available);
  • Supports fewer GPU models;
  • Has fewer features, specifically:
  • Offers weaker support for offline compilation;
  • Does not support pinned (page-locked) memory;
  • Does not support some AMD-specific OpenCL extensions.

All in all, for our applications the same AMD GPUs working on Mac OS have been 15-40 percent slower than on Windows/Linux.

If you could send Apple a message regarding OpenCL on the Mac, what would it be?

We would ask them to let AMD directly support OpenCL on AMD hardware on Mac, so that AMD could develop a full AMD APP SDK for Mac OSX, make the performance of OpenCL on Mac match that of the same GPUs in Windows/Linux, and implement all the missing features that are currently available in other OSes but not on Mac.

The lackluster support of OpenCL is likely the biggest thing standing in the way of software transitioning from CUDA to OpenCL on OS X. Apple needs to stop just talking big about OpenCL and offer the aggressive support it needs to actually compete with CUDA. It's a sad irony that Apple invented OpenCL only to see it better supported on competing platforms and that dealing with Apple to resolve problems is "unpleasant" because the company is so opaque. It is safe to say that the breakneck pace with which Final Cut Pro X 10.1 got its excellent dual GPU support wouldn't have been possible if it wasn't an Apple product with two teams in shouting distance of each other. Next time you read that some software isn't optimized for the new Mac Pro or OpenCL on OS X, think twice before sticking the pitchfork in the developer—it might be Apple slowing it down.

Even in the short time that OpenCL's been around, I have already seen a number of OpenCL-accelerated options that exist for my 3D software on Linux and Windows that don't exist on the Mac, largely due to this fragmentation and support problem. I saw a similar thing happen with Autodesk and Maya a number of years ago. User and developer frustration reached a fever pitch for similar reasons—comments falling on deaf ears, lack of timely support, the feeling like you're not being heard. Those companies responded with more transparency, aggressive bug fixes, and open ears. Change has been reflected in their software stability and user satisfaction. I hope Apple can do the same for OpenCL, because it is a huge roadblock to the success of OpenCL on OS X and the Mac Pro's powerful GPU hardware.

Expand full story

You must to comment.