Article Page 1 - An API compute introduction
GPU Compute render performance review Twenty graphics cards tested with V-Ray NEXT, Indigo and Blender v2.82
Over the past year or so, we have received a good number of request from the (semi) professional end-users out there that would like to see how GPUs perform in the realm of content creation. Obviously there are many workloads you can fire off at a GPU, but in specific the most interesting feature is content creation aka GPU assisted rendering, not to confuse with Hybrid game based Raytracing. Last year we started including Vray results, based on that request in our article to address just that question, a software suite that has been showing (unfortunately) inconsistent results thus far. In the last year, however, several software suites have been updated. The Chaos Group released VRAY-Next, for which we had high hopes of better consistency and Radeon support, however, they remain CUDA exclusive. Also, Indigo is at build v4 and of course, there's Blender now at v2.82 and a wide variety of GPU Compute API support.
With the industry coming at an all-time halt due to many reasons among them Corona, we figured now is a good time to run these titles and add them into our benchmark suites. However be warned, in the world of anything compute related, nothing is as clear cut and straight forward as opposed to (in pale comparison) benchmarking game rendering die to Compute APIs, brands and the respective support at an application level.
What's a compute API?
To answer that, you first need to understand as to why you'd want to render a 3D image on a GPU. GPU rendering allows a GPU render engine to perform raytracing calculations on the GPU(s) installed on the system, rather than the CPU. GPUs are specifically designed for massively parallel calculations, they can speed up the rendering process by an order of magnitude. To accomplish it you need to 'talk' to the GPU in a specific more optimized to the workload manner, for that you need a Compute API (Application programming interface).
Yes, Compute API. When you game on a Windows 10 PC you often get the choice from Directx12, OpenGL or Vulkan. That's an API, a code path or a set of libraries optimized for your games. Some run better on Vulkan, others on DirectX 12. There's is no clear cut answer as to what gamer would run best on what API, some just do and some just don't. Developers choose an API for which they believe their software or game runs best on your graphics cards. It gets more complicated when you think of all the DirectX versions, 9, 11 and 12 and other subversions available. DirectX 12, for example, doesn't run on Windows 7 but does on Windows 10. It's the same for applications that need to use your GPU for compute functions. API available and the choices offered can make things more complicated as the content rendering world seems divided into two camps, OpenCL (an open standard) nearly solely used for AMD Radeon graphics cards, and then there is CUDA, the preferred platform for GeForce based graphics cards. CUDA, however, is a closed API only to be used with GeForce graphics cards as NVIDIA believes they can get 'closer' to the hardware with their own API, and thus squeeze out more performance.
When it comes to content creation (render) titles, sometimes applications will automatically opt what's they deem is best, others even trigger extended more advanced APIs, Blender, for example, can now also make use of Optix opposed to CUDA, but only if you have a GeForce RTX based graphics card. OptiX is part of Nvidia GameWorks and a high-level (close to the hardware) API, meaning that it is designed to encapsulate the entire algorithm of which ray tracing is a part, not just the ray tracing itself. This is meant to allow the OptiX engine to execute the larger algorithm with great flexibility without application-side changes. We can only assume that Optix triggers and makes use of RT (Raytracing) cores on the GeForce RTX series graphics cards. So that's three Compute APIs available.
Also let me state, that it's not one or the other; Hybrid Rendering is what is applied the most: (running OpenCL or CUDA both the GPU and CPU) – GPU OpenGL/CUDA rendering can be performed on CPUs and GPUs at the same time allowing the Compute code to combine your CPUs and GPUs to utilize all available resources. For this article, we measure the effect of the GPU only.
In this article, we'll test the three content rendering titles with twenty graphics cards, and see what that brings us in performance. We do so with the three forenamed applications as well as the three available Compute APIs these applications can utilize.