Cross-Platform GPU Acceleration Using the SDK
Copy link to clipboard
Copied
Hi gang;
I am looking more into GPU acceleration and have some questions.
Looking at the sample project SDK_Invert_ProcAmp, I can see there are seperate conditions depending on whether the user has a CUDA, OpenCL or Metal supported system. Here's my understanding of each:
CUDA is great but only for NVIDIA cards so you cannot rely entirely on it, and it won't work on any AMD-carded systems.
OpenCL is for GPU computations (not necessarily graphics, like OpenGL). Both seem to be cross-platform compatible and both seem to work across most hardware. However, I have read that Mac has officially dropped support for it, even though it still works. That means the future is uncertain for it, no?
Metal is the Mac GPU environment. I know nothing about it and am not really interesting in having to learn it, just to support GPU acceleration on the Mac.
So it seems the best and simplest approach would be to use OpenCL and / or OpenGL since it is cross-platform but it is worrisome that Mac no longer supports it.
If that is the case, why is it still featured in the SDK_Invert_ProcAmp project?
Any other tips or suggestions for adding GPU acceleration in my plugin?
Thanks,
-Richard
Copy link to clipboard
Copied
Hi Rich
I think the sample uses openCL because that's the only option for AMD cards on windows. You might be able to get the sample to work using openCL for all platforms (as it works on nvidia cards); though you may run into issues on mac in the future. That way you can just use one API instead of 3!
Apple really wants you to use metal and they keep threatening to remove support for older API's (openGL/CL) but that would break a lot of things so who knows when they will pull the trigger.
Copy link to clipboard
Copied
Just coming back to this with more questions.
If OpenGL is on its way out according to Mac, why is the GLator project (which is built upon OpenGL) still included with the SDK? Should it not be if Apple is killing it off from their platform? Or does this suggest that it's still safe to develop plugins using OpenGL?
If one wishes to use GPU acceleration that will be cross-compatible between Mac and PC, and not develop for three different GPU targets (CUDA, Metal, OpenCL), then is it safe to say that eithe OpenCL or OpenGL would be viable options?
Thanks,
Richard
Copy link to clipboard
Copied
Any other suggestions from anyone about what GPU approach to best use for an all-compatible workflow?
Checking the After Effects GPU requirements page here: https://helpx.adobe.com/after-effects/using/basics-gpu-after-effects.html
They list CUDA, DirectX, OpenCL, and Metal. They do not mention OpenGL although the GLator seems to be an OpenGL-specific project.
In my eyes, it seems like OpenCL and / or OpenGL would be fairly good cross-compatible API to use, despite the threat of Apple discontinuing which, from what I've read, seems to be possibly only in the far and distance future?
Thanks,
-Richard
Copy link to clipboard
Copied
Hi Rich
The GLator sample is officially deprecated but I think Adobe kept it for reference since it's still working.
It is safe to say currently OpenGL or openCL are really the only options if you wanted to use a single API. Vulkan if you wanted to do a very deep dive, and on mac use moltenVK to have it use metal under the hood. WebGPU is a successor that apparently has the blessing from Apple so maybe look into that if you're going to do more GPU dev in the future.

