Order of filters/effects and drop in CUDA-rendering speed, is it a bug or a feature?

Enthusiast ,
Jun 02, 2019 Jun 02, 2019

Copy link to clipboard

Copied

While trying to optimize my workflow, found an interesting thing - order of filters/effects heavily affects rendering speed.

CUDA render enabled:

option #1

- CUDA-accelerated and non-accel effects are placed in the same adj layer

- render time ~70min (as slow as Mercury "Software only" renderer)

option #2

- CUDA-accelerated and non-accel effects are placed in separate layers

- "GPU layer" is on top of "CPU-layer"

- render time ~7min (yes, 10 times faster!)

option #3 same as #2, but the order of adj layers are reversed: "CPU layer" is on top of "GPU-layer"

- render time ~70min again

In case of the effects applied directly to the clip, without adj layers, behavior is similar: rendering is fast only if all accel effects placed after non-accel effects. If they are mixed in any ways - the speed drops to "Software only" level again.

So, I'm wondering - is it a bug or a hidden / undocumented "feature"?

Also would be interesting to know, is it works the same way on different Hardware & Software configs.

I checked CC2015.3 and CC2018, both work this way, for both 4k and 1080p.

Test system:

Win7 x64

Core 2 Quad 3Ghz

8GB RAM

GTX 1060 3GB, driver 419.67

1920x1080 display

Views

1.5K

Likes

translate

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct Answer

Adobe Employee , Jun 14, 2019 Jun 14, 2019
It took a bit of digging but as it turns out you are correct! An adjustment layer itself is treated as a CPU (non-accelerated) effect if any of the effects in it are non-accelerated, even if the effect order within the layer should allow GPU processing of some of the effects in the layer. As a workaround you can separate the accelerated effects into their own adjustment layer, which will allow them to be processed on the GPU as expected.Obviously this isn't ideal and I'll open a bug for it.Kyle

Likes

translate

Translate

Translate
Adobe Community Professional ,
Jun 02, 2019 Jun 02, 2019

Copy link to clipboard

Copied

Fascinating post. I don't use AL's much so I'll set up a test for this next week.

Neil

Likes

translate

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jun 13, 2019 Jun 13, 2019

Copy link to clipboard

Copied

Folks, has anyone tested the issue, any results, positive or negative? If it's a bug, the more statistics the better.

Meanwhile, I've tested OpenCL renderer instead of CUDA (all on GTX1060). Sure, absolute numbers are different, but relative performance is the same - about 10 times difference on my setup.

Likes

translate

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe Community Professional ,
Jun 13, 2019 Jun 13, 2019

Copy link to clipboard

Copied

Haven't had a chance yet, will try to test this today or tomorrow.

Neil

Likes

translate

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe Employee ,
Jun 13, 2019 Jun 13, 2019

Copy link to clipboard

Copied

Premiere will process all effects on the CPU up to the last CPU effect in the effect stack. This was done to prevent frequent copying to and from GPU memory (which has been traditionally slow and can quickly saturate the PCI-E bus). This may be something that gets revisited in the future.

Kyle

Likes

translate

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jun 14, 2019 Jun 14, 2019

Copy link to clipboard

Copied

Kyle, thanks for the insight. That explains a lot. But I can see one inconsistency in the adjustment layer processing.

Seems, it is processed soley by CPU regardless of where in the effect stack a "cpu-effect" is placed. At the beginning or at the end - no difference, adj layer always renders at SW-only speed.

But, if the same stack is applied to the clip itself, we have an expected speed difference (~10 times for my case).

Could it be a bug or it's just another flaw in architecture? What do you think?

Likes

translate

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe Employee ,
Jun 14, 2019 Jun 14, 2019

Copy link to clipboard

Copied

It took a bit of digging but as it turns out you are correct! An adjustment layer itself is treated as a CPU (non-accelerated) effect if any of the effects in it are non-accelerated, even if the effect order within the layer should allow GPU processing of some of the effects in the layer. As a workaround you can separate the accelerated effects into their own adjustment layer, which will allow them to be processed on the GPU as expected.

Obviously this isn't ideal and I'll open a bug for it.

Kyle

Likes

translate

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jun 19, 2019 Jun 19, 2019

Copy link to clipboard

Copied

So, as a summary, until Adobe will fix the bug (or change the processing logic in one way or another),

below are recommendations how to get maximum use of a dedicated GPU and thus make the rendering faster:

- Ideally don't use CPU-effects at all (keep a timeline "yellow"). This is maximum speed mode.

If you can't avoid using CPU-effects:

- Don't mix CPU and GPU effects in the same adjustment layer. Doing so will cause rendering in "software only" mode (very slow). Instead separate GPU and CPU effects in two different layers. Put "GPU-layer" on top of a "CPU-layer".

This way GPU-acceleration will be actually working.

- In case of applying effects directly to a clip without adjustment layers: organize effects in a way that all GPU-effects are applied after CPU-effects.

Here "GPU-effect" means GPU-accelerated effect, when added it makes a timeline "yellow",

"CPU-effect" - any that makes a timeline "red".

Likes

translate

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe Community Professional ,
Jun 19, 2019 Jun 19, 2019

Copy link to clipboard

Copied

Cool post! Thanks.

A couple of documenting screen shots would be great, and can you specify which effects you test with? Also media.

thanks very much

pj

Likes

translate

Translate

Translate

Report

Report
Community Guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines