OPEN CL vs CUDA Which applications and programs work

OpenCL vs. CUDA: Which has better application support? GPGPU/GPU Acceleration real world face off

AMD vs. Nvidia: Should I go with OpenCL or CUDA? Which will perform best with my applications?


If you’re looking for more information on CUDA and OpenCL, this is the article for you. We’ll give you a brief overview of what GPGPU is and look at how AMD, Nvidia, OpenCL & CUDA fit into the mix. Finally we will explain which applications work best with which brand of graphics cards, providing a list that gives a brief overview of CUDA/OpenCL support in a wide variety of professional apps.

 


Introduction to GPGPU
(General Purpose computing on Graphics Processing Units)

If you’ve never heard of GPGPU or GPU acceleration, don’t worry, most people haven’t. OpenCL and CUDA, however, are terms that are starting to become more and more prevalent in the professional computing sector. OpenCL and CUDA are software frameworks that allow GPGPU to accelerate processing in applications where they are respectively supported.

So what exactly is GPGPU, or general purpose computing on graphics processing units? GPGPU is the utilisation of a GPU (graphics processing unit), which would typically only handle computer graphics, to assist in performing tasks that are traditionally handled solely by the CPU (central processing unit).

In traditional computing, data can be passed from the CPU to the GPU, the GPU then renders the data, but the GPU cannot pass information back. GPGPU allows information to be transferred in both directions, from CPU to GPU and GPU to CPU. Such bidirectional processing can hugely improve efficiency in a wide variety of tasks related to images and video. If the application you use supports OpenCL or CUDA, you will normally see huge performance boosts when using hardware that supports the relevant GPGPU framework.

So now you know what GPGPU is, how do OpenCL and CUDA fit into the equation? OpenCL is currently the leading open source GPGPU framework. CUDA, on the other hand, is the leading proprietary GPGPU framework.


Where do Nvidia & AMD sit in the GPGPU spectrum?

AMD NVIDIA OPENCL CUDAFortunately, AMD & Nvidia have made the debate slightly more black and white than it may have originally seemed. To cut to the chase, AMD support OpenCL and Nvidia support their own proprietary CUDA framework. So which framework do the major applications support you may ask? This is where things can get a little more complicated. Different apps support different GPGPU frameworks, in fact, some support both OpenCL and CUDA and some support neither.

Naturally your next question will be “does my application of choice support CUDA or OpenCL?”. Or “so if my application supports both, which should I go for?”. Don’t worry, that’s what we’re going to help you with today.

It should be noted that Nvidia cards actually support OpenCL as well as CUDA, they just aren’t quite as efficient as AMD GPUs when it comes to OpenCL computation. This is changing though as the recently released Nvidia GTX 980 is a very capable OpenCL card as well as a CUDA monster. We can only see Nvidia’s OpenCL performance getting better and better in the future and this is definitely something worth considering.


What are the strengths of CUDA acceleration?

Nvidia TITAN CUDAAs we have already stated, the main difference between CUDA and OpenCL is that CUDA is a proprietary framework created by Nvidia and OpenCL is open source. Each of these approaches bring their own pros and cons which we will highlight in this section.

The general consensus is that if your app of choice supports both CUDA and OpenCL, go with CUDA as it will generate better performance results. The main reason for this is that Nvidia provide top quality support to app developers who choose to use CUDA acceleration, therefore the integration is always fantastic. For example, if we look at the Adobe CC, which supports both CUDA and OpenCL, CUDA accelerates more features and provides better acceleration to the features that both frameworks are able to power. If we look at Premiere Pro CS6, without CUDA only software based playback is available (source). For further reading, in a forum thread on Creative Cow an Adobe employee stated that in most cases CUDA will out-perform OpenCL (source).

Another good example of the difference between CUDA and OpenCL support can be seen in REDCINE-X. If you enable OpenCL only 1 GPU can be utilised, however, when CUDA is enabled 2 GPUs can be used for GPGPU.

Obviously because CUDA is a proprietary framework it requires Nvidia’s support and time to integrate it into applications, this means that the functionality is always fantastic. However, CUDA is not as easy for apps to adopt as OpenCL (as it is open-source). Regardless of this, CUDA is still supported by a wide variety of apps of which the list continues to grow.

As an easy rule of thumb, if your app supports CUDA, grab an Nvidia card, even if it also supports OpenCL.


What are the strengths of the OpenCL platform?

AMD 7970 OpenCLSo now onto OpenCL, the open-source GPGPU framework. We’ve already mentioned that if your software supports both OpenCL and CUDA, then go for CUDA, but what if OpenCL is the only choice?

Simply put, if OpenCL is your only option, go for it. For example Final Cut Pro X only supports OpenCL and we usually recommend that our users put AMD OpenCL cards into their systems if they use the popular video editing app. On a whole OpenCL integration generally isn’t as tight as CUDA, but OpenCL will still produce significant performance boosts when used and is far better than not using GPGPU at all.

As we stated earlier, Nvidia cards also utilise the OpenCL framework, but they aren’t as efficient currently as AMD cards (however, they are catching up fast). So if the apps you use are all exclusively OpenCL based and don’t have CUDA support, such as Final Cut Pro X, we recommend you equip your system with an OpenCL AMD GPU.


Some of my applications are CUDA based & some just have OpenCL support, what should I do?

If the applications you use split their support between CUDA and OpenCL we recommend using a recent Nvidia card. With an Nvidia setup you will get the most out of your CUDA enabled apps whilst still having good OpenCL capability in non-CUDA apps.

For example, the Nvidia GTX 780 would supercharge all your CUDA based computation whilst still scoring 1700 in LuxMark Sala (OpenCL benchmark) giving it significant grunt in apps that are OpenCL based such as Final Cut Pro X. An even newer Nvidia GPU such as the GTX 980 scores 2600 in LuxMark Sala, a higher score than the AMD R9 280X (which scores 2400), giving you the best of both worlds. If you use Adobe CC, or other CUDA supported apps, as well as OpenCL exclusive software such as Final Cut Pro X the Nvidia GTX 780 and 980 are both solid solutions.


Which applications support which GPGPU framework?

Here we’ll briefly list a number of applications with GPGPU support, which framework they work with, and if published how GPGPU is used in the application. Please note that this list isn’t comprehensive, it simply contains major apps and relevant easily accessible information. Nvidia provides it’s own list of CUDA accelerated apps here. For OpenCL it can be a little harder to find out which apps support the framework, Google is normally the best method.

  • Adobe After Effects CC

    • CUDA Support
      • 3D ray tracing
      • Multi GPU support
    • OpenCL Support
      • No specifics stated
  • Adobe Photoshop CC

    • CUDA Support
      • 30 effects in Mercury Graphics Engine
    • OpenCL Support
      • No specifics stated
  • Adobe Premiere Pro CC

    • CUDA Support
      • Mercury Playback Engine for real time video editing & accelerated rendering
    • OpenCL Support
      • No specifics stated
  • Adobe SpeedGrade CC

    • CUDA Support
      • Real time grading and finishing
  • Autodesk Maya

    • CUDA Support
      • Increased model complexity
      • Larger scenes
    • OpenCL Support
      • Physics simulations
  • Avid Media Composer

    • CUDA Support
      • Faster video effects
      • Unique stereo 3D capabilities
  • Avid Motion Graphics

    • CUDA Support
      • Real time rendering
  • Blackmagic DaVinci Resolve

    • CUDA Support
      • Real time colour correction
      • Real time de-noising
    • OpenCL Support
      • Real time colour correction
  • Final Cut Pro X

    • OpenCL Support
      • Real time FX editing – no need to render the timeline
      • Faster overall playback & timeline performance
      • Faster third party effect rendering
      • No transcoding of AVCHD or other complex codecs to editable ProRes
  • RED REDCINE-X

    • CUDA Support
      • Accelerated debayering
      • Support for 2 GPUs
    • OpenCL Support
      • No specifics stated
      • Only supports 1 GPU
  • RED Giant Effects Suite

    • CUDA Support
      • Faster effects
  • RED Giant Magic Bullet Looks

    • CUDA Support
      • Faster effects
  • SONY Vegas Pro

    • CUDA Support
      • Faster video effects and encoding
    • OpenCL Support
      • No specifics stated
  • The Foundry HIERO

    • CUDA Support
      • Better interactivity
  • The Foundry NUKE & NUKEX

    • CUDA Support
      • Faster effects
  • The Foundry Mari

    • CUDA Support
      • Increased model complexity at interactive rates

Conclusion

It’s pretty clear that GPGPU is a move in the right direction for all professional users. When supported it brings huge performance benefits to apps, especially when they deal with image and video.

Right now CUDA and OpenCL are the leading GPGPU frameworks. CUDA is a closed Nvidia framework, it’s not supported in as many applications as OpenCL (support is still wide, however), but where it is integrated top quality Nvidia support ensures unparalleled performance. OpenCL is open-source, and is supported in more applications than CUDA, however, support is often lackluster and it does not currently provide the same performance boosts that CUDA tends to.

In our view, Nvidia GPUs (especially newer ones) are usually the best choice for users, built in CUDA support as well as strong OpenCL performance for when CUDA is not supported. The only situation in which we would recommend an AMD GPU to professionals is when they are exclusively using apps that support OpenCL and have no CUDA option.

If you’re looking for a CUDA/OpenCL based Mac Pro 5,1 system then head over to our configure page to put a system together or email us at build@create.pro.




22 thoughts on “OpenCL vs. CUDA: Which has better application support? GPGPU/GPU Acceleration real world face off

      1. I have an Asus GTX 960 which I’m exchanging today for an XFX Radeon R9 390x. I can tell you from first hand experience, CUDA is the last thing running through any gamers mind when purchasing an Nvidia. I have rarely seen a benefit from CUDA, what I will say about Nvidia cards though. Their new graphics technology is well designed for power/heat consumption it makes intelligent decisions on how to handle raw power. So why am I going over to AMD? I’m not a fan-boy I don’t favor one tech company over the other, but pure up spec to spec comparison reveals the AMD R9 390x is built like a beast with fangs to show it. Also if you favor CUDA but don’t want to AMD, you can have the best of both worlds there’s a hack that allows you to use CUDA with AMD graphics, you need install a master and slave card master being AMD slave being Nvidia.

        1. Hi Meh,

          If you read the article you can see that it isn’t about gaming, it is about GPU compute power for creative professionals. CUDA has nothing to do with gaming and is built as a GPGPU framework for GPU computing in professional applications.

          You certainly can’t run CUDA with a hack on AMD cards, the functionality is built in on a hardware level. AMD use OpenCL for GPGPU computing as an alternative to CUDA.

          Hope that helps.

          Tom

          1. Well there is this as well: http://wccftech.com/dx12-nvidia-amd-asynchronous-multigpu/

            What I meant about Nvidia/AMD was that there is a hack in the wild that lets you use both gpu’s together, the AMD acts as the primary graphics card and the Nvidia card acts as the Cuda/PhysX half.

            I wasn’t stealing your sunshine, I was talking about my upgrades and just decided to add in a bit about what I heard about NV/AMD cards in general.

          2. Ok I understand, I thought you meant enabling CUDA on an AMD card. We build custom Mac Pro systems where there is no hack required to run AMD & Nvidia together.

            Tom

        2. Hello, Meh – where did you hear about such a hack? Right now, isn’t DirectX 12 reliant on developers programming applications to take advantage of using both GPUs? If you used such a hack, I would imagine it doesn’t work as the abstract has described, right?

          1. There was an old driver hack called hybrid physx, where you could have an amd card in your system and you could stick in an nvidia card and use it for dedicated physx. I successfully did it, however the upkeep and managing updates, its really not worth it. http://physxinfo.com/wiki/Hybrid_PhysX

  1. Nvidia lately plays ditry, they introduced NVENC to their GPUs and pushed hardware encoding to that part of the GPU trough their drivers, though this makes sense into the gaming industry, for proffesionals is bad since software like Premiere / Vegas can`t take advantage of the CUDA cores while rendering, making things go slower, pushing the user into buying a more expensive Quadro card or just sticking to older drivers.

    On the AMD side (OpenCL) there are no such issues.

    Btw i see no issues with SpeedGrade CC and OpenCL , why do you state it only has CUDA? Also in Premiere CC both CUDA and OpenCL support the same hardware acceleration.

    1. It’s just two different approaches really, Nvidia have gone for proprietary and deep integration, whereas AMD have gone for a more open/scatter gun approach. Both have their pros and cons. In Premiere CC, it does seem like CUDA is still at least a little ahead of OpenCL, performance wise in our real world tests anyway. But who knows what the future holds.

      As for the compatibility list, that is simply comprised of what the official websites offer by way of information.

  2. this needs updating as Mari, (Nuke on Apple Mac Pro) AVID, Vegas pro, Adobe Photoshop and Premier Pro. Blackmagic etc all support more OpenCL than Cuda now. Maya is having OpenCL features. Otoy launched a OpenCL version of Octane and AMD has a raytracer on OpenCL. its changed massively in the last 3 months

  3. I’ve recently tested a Quadro k5200 and a Firepro W8100 to see whether CUDA and OpenCL had any affect on the performance, but I don’t really see any noticeable performance drop or increase from either. I tested on Maya and Photoshop CC since those are the programs that I use on a daily basis.

    I’m quite confused as how you got the results, mind telling me ? Since I don’t really understand whether one is still better than the other or has that changed ?

    1. Hi Alex,

      GPGPU wont affect the entire application, only what features have been written into the program. In terms of Photoshop it is the RayTracing/Mercury effects mostly. For Maya you will need a GPU rendering plugin installed, such as RUINS Shatter or Furryball.

      Hope that helps.

      Tom

  4. Dear Tom,

    This is the most practical and best explained article on this topic that I have found. Thank you!

    Could I please make a request? Could I trouble you to update the list of applications that support CUDA vs OpenCL in the new year?

    Thank you very much and a happy holidays to you!
    G

    1. Hi G Lucas,

      I’m glad you enjoyed the article. I’ll try to get this updated in the new year, although I don’t think too much has changed. Let me know if you’re aware of anything 🙂

      Tom

  5. Sony Vegas pro always favored Opencl, this is a strange article that outright lies or it’s not documented at all.
    I edit a lot in Vegas and Nvidia actually has a bad performance and support in Vegas compared to AMD Opencl.
    Also, Opencl is a standard supported by Intel too, quicksync rendering and all of that, support for OpenCl can only grow.

  6. The worst part about all this is the lack of detailed information on software vendor websites about what is accelerated, what isn’t, whether CUDA support includes the latest models, whether multiple GPUs can be used, whether an app is CUDA-only, OpenCL only or both, etc.

    Recently I tried to find out just basic information about CUDA support in Pinnacle, but the people at Corel didn’t even understand the questions (I asked about whether their app supported multiple GPUs and whether it exploited FP64, ie. GPU choice between Quadro 6000 + 2x GTX 580 vs. 2x 780 Ti). I kept asking, but the overall response wasn’t much more than, “Buy a PC.”, as they kept referring me to their web site’s recommend system spec which was incredibly generic.

    Atm I’m looking for info on whether Vegas V14 supports the newer 700/900/1000 series NVIDIA cards for CUDA (articles only refer to V13 or earlier which has only limited support up to the 500 series). It’s all very hard to pin down.

    And just to make it even more complicated, NVIDIA does appear to have put some significant effort into improving OpenCL performance on its products in recent months, ie. I found reviews which showed a 980 Ti running very well in OpenCL tests, far better than benchmarks from a year earlier, and reversing what one may have decided to purchase as a result.

    At the very least, sw vendors should include info on their web sites about what is supported with what products, and some honest data/benchmarks to help users make good purchasing decisions, data which all needs to be kept up to date. It’s equally irritating that users are left in the dark as to whether a vendor is planning to move in one direction or another with respect to CUDA support, eg. the way Adobe ditched RT3D development, but continued to maintain MPE support for newer GPUs.

    I’m trying to build an X79-based PC system for someone atm who will be using Vegas, but later possibly switching to Premiere (it’ll have a 4.8Ghz 3930K, 32GB/2400 RAM, various SSDs, Win7/64/Pro, etc.) If Vegas V14 doesn’t support CUDA with newer cards, and if Adobe is continuing to move away from CUDA, then AMD cards make more sense (I was thinking of 390X 8GB + 2x 290X 8GB). On the other hand, if NVIDIA has improved its OpenCL support to a significant degree, such that they’re either faster or more power efficient than AMD options, then NVIDIA would be a better solution (eg. 3x 980 Ti), given their drivers are undoubtedly better overall.

    It’s all a lot more complicated than it needs to be. I don’t understand the widespread degree of information secrecy about what an app does and does not support, feature/spec descriptions on sw vendor web sites are so incredibly vague, and there’s virtually never any detailed performance test data. Why are example performance results never included, showing how even just a couple of example GPUs behave? It’s bizarre. At least Adobe does have a fairly reasonable summary page on CUDA support in CC, though it’s not as detailed as it should be.

    Ian.

Leave a Reply

Your email address will not be published. Required fields are marked *