Log in

View Full Version : H.264 DXVA Benchmarks: QuickSync vs UVD 2.2 vs VP4 vs VP5


Pages : 1 2 3 4 5 [6] 7 8 9

vortex_hl
17th June 2014, 19:16
fyi geforce 340.43 drivers support HEVC_VLC_Main profile on GTX 750 Ti

http://i.imgur.com/iloiSBq.png

NikosD
18th June 2014, 06:46
Very interesting.

It seems that Nvidia with VP6 is closer to Intel than ever.

Sulik
18th June 2014, 08:41
NikosD: any plans to include VP6 numbers in your benchmark results ?

NikosD
18th June 2014, 11:11
If I had one, I would do it immediately :)

Anteys
21st June 2014, 07:52
Unless I'm misinterpreting something, my Titan with VP5 on 340.43 shows the same support for HEVC_VLD_Main:
http://i.imgur.com/07ccL3w.jpg

NikosD
21st June 2014, 09:46
Then I'll have to check my poor GT610 with VP5, to see if HEVC_VLD_Main depends on fixed-function HW (VP5&VP6) or as I suspect, on the number of shaders.

Which means that my card - GT610 - won't have it.

Wait just for 10 min.

Update:

Unfortunately I was right
http://s10.postimg.org/effteamc9/GT610_340_43.png

NikosD
21st June 2014, 10:15
Now, only one more test is missing.

A VP4 card in the middle or upper class, like the popular GT440 or better, in order to test if VP5 or VP6 has anything to do with HEVC_VLD_main, or it is something about shaders and CPU only (as I suspect)

Of course, marketing reasons could stop Nvidia of installing HEVC_VLD_Main on older Fermi cards with VP4, even if Fermi cards with a lot of shaders, could be capable of running this mode.

Intel for example, decided to remove HEVC_VLD_Main support from Haswell Pentium/Celeron for marketing reasons.

P.J
23rd June 2014, 21:44
Wow, so my 750 Ti and Intel HD 4400 supports HEVC too :goodpost:
Can't wait to get the latest driver :D :D

But how to test it? any HEVC DxVA decoder??

NikosD
30th June 2014, 15:41
This is not a good sign.

Intel cut every codec to 1080p with latest beta driver 3652!

http://s27.postimg.org/scbz7bfer/DXVA_Checker_3652_Pentium.png

Shiandow
30th June 2014, 19:05
Now, only one more test is missing.

A VP4 card in the middle or upper class, like the popular GT440 or better, in order to test if VP5 or VP6 has anything to do with HEVC_VLD_main, or it is something about shaders and CPU only (as I suspect)

I haven't really been following the discussion, but I happen to have a GTX560Ti, which is a VP4 card. So does this screenshot help?
http://i.imgur.com/1FntopP.png

Nvidia GTX560Ti, driver version 335.23.
Windows 7 x64 SP1.
Same result after updating the driver to 340.43

NikosD
30th June 2014, 19:40
Yes, this is exactly the test I wanted to see.

So only Kepler and Maxwell cards are included for HEVC.

Fermi cards are excluded regardless the number of shaders.

foxyshadis
1st July 2014, 00:53
This is not a good sign.

Intel cut every codec to 1080p with latest beta driver 3652!

I saw your posts on the Intel board. I'm not convinced this is going to be final behavior, but I appreciate you pressing them to not give up just because it's technically difficult (or worse, marketing, as you suspect).

I have to say I'm becoming quite annoyed at needing separate drivers for every Intel system at this point. I have multiple generations of PCs I keep reasonably up-to-date, especially when reinstalling, and now I'll have to keep separate installers for Core2, Sandy, Ivy, and Haswell.

FWIW, HEVC_VLD_Main isn't just missing from Pentium brands, this is my Haswell i7 with the beta:

NikosD
1st July 2014, 12:25
Thanks.

Yes, it's true, maintenance of different systems even from the same brand is getting more and more difficult.

We have already different drivers for Sandy.

If they separate Ivy from Haswell it will be even harder.

NikosD
3rd August 2014, 14:11
Interesting HEVC OpenCL solution from Strongene here:

http://xhevc.com/en/downloads/downloadCenter.jsp

It's a DS filter working with discrete AMD cards (HD 5000 or better) or APU.

I haven't tried it with Nvidia/Intel, it could work.

Using my old Core2Duo and HD 5750 card, it works for most of my H.265 samples, but with no clear performance benefits over the CPU only decoding.

My platform is very old supporting PCI-E v1.1x4, so maybe that's the problem.(it needs PCI-E v2.0)

It's free, you can try it with better AMD cards/platform or with Nvidia/Intel cards.

huhn
3rd August 2014, 14:49
tried it with a r 9 270 i can't see a a real GPU usage but cpu usage is about 20-50% lower but memory usage was a lot higher.

i try it with EVR next.
i have a haswell hd 4400, a ivy hd 4000, a 760 gtx and the r9 270 in working pc right now to test.

Edit: gpu uasge is 0-31 % in highest powerstate with EVR

NikosD
3rd August 2014, 14:55
Try to use DXVA Checker in benchmark mode in order to see GPU usage going high and compare with the CPU only decoding.

What renderer did you use if not EVR ?

huhn
3rd August 2014, 15:14
i normally use madVR.

here a small test:
openCL32 187 130-255
lav32 87 50-127
lav64 142 82-198

openCL decoder is totally limited by my CPU a i3 4130 it just uses the GPU to accelerate the decoding nothing more.

NikosD
3rd August 2014, 15:39
I can't understand the figures.

What is the first and what is the second.

Did you try a 1080p HEVC clip ?

huhn
3rd August 2014, 15:47
decoder avgfps minfps-maxfps

so openCL 32 bit has an avg of 187 fps with min of 130 and a maximum of 255 fps.

the openCL decoder isn't working with h264 so yeah i used a HEVC clip.

the forum removed the formation of the "chart" so no wonder is hard to understand the format was fine while i was tipping.

P.J
3rd August 2014, 16:08
It crashes while playing a 4K HEVC video with 750Ti

huhn
3rd August 2014, 16:37
i tested it with a intel hd 4400.

it crashes when the AMD gpu is disabled!
it has about 23% gpu usage when run with lavfilter
and it has ~88% gpu uses when used with the openCL decoder.

Renderer: Enhanced Video Renderer (DirectShow)
Decoder: Lentoid HEVC Decoder (OpenCL)
[1]
Decoder Device: -
Processor Device: BF752EF6-8CC4-457A-BE1B-08BD1CAEEE9F
Time: 22.427
Frames: 2183
Avg FPS: 97,336fps (Min-Max: 54-101fps)
Avg CPU Usage: 31% (Min-Max: 16-56%)
Avg GPU Usage: -
[2]
Decoder Device: -
Processor Device: BF752EF6-8CC4-457A-BE1B-08BD1CAEEE9F
Time: 22.268
Frames: 2183
Avg FPS: 98,032fps (Min-Max: 73-100fps)
Avg CPU Usage: 33% (Min-Max: 17-58%)
Avg GPU Usage: -


as you can see the cpu was limited by the gpu this time.
my guess the decoder crashes when no amd GPU is found but works in theory with intel too.

edit: the gpu uasge is this time from gpu-z because it is not shown with in dxva tester.

clsid
3rd August 2014, 16:53
Performance test in GraphStudioNext (with null renderer). TearsOfSteal 1080p sample.

OpenCL: 278 fps
LAV x86: 133 fps
LAV x64: 280 fps

huhn
3rd August 2014, 16:58
how high where your gpu usage and what gpu?

NikosD
3rd August 2014, 17:30
@huhn My figures are like yours, see below (the analogy, not the absolute values)

Also Nvidia works fine without AMD card in the system :)


@P.J Try a 1080p clip


@clsid GPU ? CPU ?


I tried my Core i5-2400 with an Nvidia GT440, Win 8.1 x64

Using DXVA Checker x86 (32bit) in benchmark mode and EVR on TearsOfSteel 1080p HEVC sample

LAV x86: 59/90/229

OpenCL x86: 152/224/264


Using DXVA Checker x64 (64bit) in benchmark mode and EVR on TearsOfSteel 1080p HEVC sample


LAV x64: 105/180/307


We have a clear winner which is OpenCL of course.


The GPU load during OpenCL benchmarking was about 45%-50%, during LAV (x86/x64) was about 10%-15% due to EVR renderer.

LAV x64 is not optimized at all for multithreading.
The CPU usage was lower (a lot) from both LAV x86 and OpenCL decoder.

I'll try my brand new Core i7-4790 later (without discrete card)

JohnLai
3rd August 2014, 18:11
O.o? I didn't notice you also active in this forum.

So, since you are able to actually run the opencl decoder, how is the picture/image quality?

huhn
3rd August 2014, 18:20
it's a decoder it's suppose to be bit identical to other decoder...

NikosD
3rd August 2014, 20:16
@JohnLai I'm active here since 2010.

I was about to write to your post, when I saw you here.

You found me before I find you :)

Yes the quality is the same just like any other HEVC decoder, I suppose.

Only with my old platform of PCI-E v1.0 I had some problems with not so smooth decoding.

But with Nvidia I had no problem at all.

I'll try to put the 5750 on the Core i5 platform to see the difference.
5750 should be faster, maybe a lot faster than GT440 in OpenCL.

Now, regarding to my Core i7-4790 CPU with HD 4600@1.2GHz GPU, the results were not good.

It's a 4C/8C CPU, but only one core was active (!)@ 4.0GHz - no multithreading at all.

I don't know why, probably due to low OpenCL performance of HD 4600 or maybe it wasn't recognized properly from the decoder.

The threads were to "Auto" from codec properties, I tried to put them manually to 4 and then 8 threads, but nothing changed.

Only one core was active and couldn't even load the GPU properly.

I got a clock of GPU @750MHz with 77% utilization when max clock is 1.200MHz

The result was disappointing:

OpenCL x86 69/112/128

LAV x86 88/130/208 (all 8 threads active@3.8GHz)

huhn
3rd August 2014, 20:29
looks totally normal when i compare it to my hd 4400 at 98 fps the cpu was at about 1 thread too.

but i don't know if we should call this a openCL decoder i mean most work is done by the CPU...

NikosD
4th August 2014, 04:31
It is OpenCL decoder, because decoding on CPU only (Core i5-2400), LAV x86 goes up to 90 fps (avg), where OpenCL Decoder using GT440 on the same CPU (Core i5-2400) goes 224 fps (avg).

The difference is exactly 2.5 times faster.

So it seems that OpenCL decoder has been optimized to offload special difficult parts of HEVC decoding to GPU or LAV x86 is extremely slow or OpenCL CPU part is extremely optimized.

Any of three or all of them could be true.

But in realtime playback the GPU usage was low and looking at LAV x64 with 180 fps (avg), then LAV x86 is definitely slow with half speed and OpenCL decoder looks like an optimized CPU decoder more than OpenCL decoder.

When I go back to Core i5 system, I'll test more difficult clips in real time decoding, like 4K HEVC to check GPU usage.

I still don't understand why is using 1 thread only with Intel iGPU.

NikosD
4th August 2014, 06:29
I have finally found out a real use and real strength of Lentoid HEVC Decoder (OpenCL) for Intel iGPU systems.

I tried a 4K HEVC sample (It's Ducks Take off - 3840x2160@25fps - 32.3Mbps - HEVC Main@L5.1) with my Core i7-4790 (iGPU HD 4600) and all 8 threads were used.


Benchmark x86

LAV 7/18/20 CPU Usage 88% (8 threads)

OpenCL 11/35/47 CPU Usage 55% (8 threads) - GPU clock/usage 900MHz@88%


Benchmark x64

LAV 14/25/27 CPU Usage 85% (8 threads)


Real-time playback

LAV x86 19fps (avg) - CPU 92% (non real-time decoding - struggling playback)

OpenCL x86 25fps (avg) - CPU 32% (very smooth playback) GPU idle clock/usage 600MHz@66%

LAV x64 25fps (avg) - CPU 88% (smooth playback)


I think it's clear which is the most efficient HEVC decoder right now.

JohnLai
4th August 2014, 06:47
Hmm........I wonder what portion of decoding that being offloaded to GPU.....resizing? deblocking?

Ah, back to further elaboration of my original question on Lentoid opencl HEVC Decoder. Reason I asked about the decoder output quality is due to past h264 decoders.

When h264 decoder was in its infancy, developers used a lot of quality-damaging 'shortcut' in order to ensure smooth playback, example, the famous 'skip deblocking' resulted in smooth playback but blocky image output.

NikosD
4th August 2014, 06:54
For the first part of your question about what is offloaded to GPU, I think only Strongene could answer for sure and accurately, but I doubt if they would give such details about their decoder.

For the second part of your question, I totally agree with you about H. 264 decoders.

I don't know if they can "cheat" with H.265 decoders, too.

P.J
4th August 2014, 21:48
Also Nvidia works fine without AMD card in the system :)


@P.J Try a 1080p clip

1080p HEVC is useless since my i3 4130 can handle it ~%40 easily. HEVC is mostly for 4K.

I'll try HD4400 instead of 750 Ti...

P.J
4th August 2014, 22:41
Ok, seems it crashes while playing 60fps 4k h.265 but no problem with Ducks Take off 4K HEVC
Then I tried with both HD4400 and 750Ti and the CPU usage is still 99% but smoother than LAV x64 (RAM usage: 1GB)
HD4400: ~60% @ 600MHz
750Ti: ~60% @ 200MHz (1176MHz Max)
Then the decoder only uses a small and specific part of any GPU...
Anyway to benchmark it in DXVA Checker? It doesn't recognize the h.265 video at all

NikosD
5th August 2014, 04:42
What do you mean it doesn't recognise the H. 265 video at all ?

If you mean the OpenCL decoder, you have to run the x86 version of DXVA Checker, not the x64.

If you mean the Ducks Take Off 4K HEVC clip, you have to install LAV splitter.

P.J
5th August 2014, 12:00
Worked now:

Renderer: Enhanced Video Renderer (DirectShow)
Decoder: Lentoid HEVC Decoder (OpenCL)
Decoder Device: -
Processor Device: 6CB69578-7617-4637-91E5-1C02DB810285
Time: 22.882
Frames: 500
Avg FPS: 21.851fps (Min-Max: 0-26fps)
Avg CPU Usage: 94% (Min-Max: 46-100%)
Avg GPU Usage: -


Renderer: Enhanced Video Renderer (DirectShow)
Decoder: LAV Video Decoder x64
Decoder Device: -
Processor Device: 6CB69578-7617-4637-91E5-1C02DB810285
Time: 53.390
Frames: 500
Avg FPS: 9.365fps (Min-Max: 3-11fps)
Avg CPU Usage: 97% (Min-Max: 48-100%)
Avg GPU Usage: -

Waiting for better OpenCL optimization...

nevcairiel
5th August 2014, 13:28
OpenCL is in general not all that super useful for video decoding. People tried before with H.264 to leverage it, and it just didn't help all that much.

The decoder is probably just better optimized for CPU decoding, so its faster. Optimizations for the HEVC decoder in ffmpeg (which LAV uses) are coming basically every day, as clsid mentioned in another thread it got 20% faster just recently, and there is still a lot of potential for improvements.

NikosD
5th August 2014, 15:31
Decoder: Lentoid HEVC Decoder (OpenCL)
Avg FPS: 21.851fps (Min-Max: 0-26fps)
Avg CPU Usage: 94% (Min-Max: 46-100%)


Decoder: LAV Video Decoder x64
Avg FPS: 9.365fps (Min-Max: 3-11fps)
Avg CPU Usage: 97% (Min-Max: 48-100%)

Waiting for better OpenCL optimization...

It's obvious comparing your results that CPU usage hasn't changed using OpenCL decoder.

BUT it's more than obvious that with the same CPU usage you have 2.5 times faster result, exactly as I described it in a previous post!

With OpenCL decoder you can just play the clip in almost real-time, while using LAV x64 the playback should be awful.

OpenCL decoder is not perfect, but it's 2.5 times faster than LAV.
I think, that's a huge difference between those two free decoders.

I suggest to download and try PowerDVD 14 which supports OpenCL HEVC for AMD, but probably will work for other GPUs too and tell us your results.



Optimizations for the HEVC decoder in ffmpeg (which LAV uses) are coming basically every day, as clsid mentioned in another thread it got 20% faster just recently, and there is still a lot of potential for improvements.

Downloaded and tried LAV x64 0.62.0.3287 4/8/2014 compilation including latest FFMpeg update and the results were disappointing.


Exactly the same performance for 4K HEVC:

LAV x64 0.62 (Jun-2014) : 14/25/27

LAV x64 0.62 (Aug-2014) : 10/25/30

I don't see where you saw the 20% improvement.

P.J
5th August 2014, 16:39
PowerDVD works quite different, faster than LAV but not perfect... and I think it's not OpenCL based, almost no GPU usage
Waiting for a proper DXVA2 decoder :)

OpenCL is in general not all that super useful for video decoding. People tried before with H.264 to leverage it, and it just didn't help all that much.

The decoder is probably just better optimized for CPU decoding, so its faster. Optimizations for the HEVC decoder in ffmpeg (which LAV uses) are coming basically every day, as clsid mentioned in another thread it got 20% faster just recently, and there is still a lot of potential for improvements.

What about QuickSync and CUDA?

huhn
5th August 2014, 17:01
you can't program in quicksync.

cuda should have the same problems as openCL i guess it has something to do with the huge used numbers but what did i know ^^

the "dxva" HEVC decoder where planned as openCL. for true DXVA support we need new ASIC with HEVC support so new cards.
the planned "DXVA" decoder aren't comparable with a true hardware DXVA decoder.

so this comment was very true http://forum.doom9.org/showpost.php?p=1682920&postcount=247

you can write a decoder for everything in openCL does that mean we "have" hardware decoder for everything?

NikosD
5th August 2014, 19:25
... and I think it's not OpenCL based, almost no GPU usage


That "almost no GPU usage" is the same scenario for Strongene's OpenCL decoder too.

Probably both decoders leverage GPU decoding capabilities using the enormous parallel processing of GPU processors in small parts of the HEVC algorithm, but a lot times faster than CPU decoding.


Waiting for a proper DXVA2 decoder :)


Proper DXVA2 decoder needs proper HW.

Broadwell will not have QuickSync engine capable of H.265 decoding and VP6 from Nvidia doesn't support H.265 decoding too.

So, for the next couple of years, you have to play and fight with implementations like OpenCL decoder or Intel's and Nvidia's HEVC_MAIN_VLD decoder which use CPU+GPU in a similar way like OpenCL decoder (meaning that they leverage the EUs or SMXs or whatever you want to call the computing processors of GPUs)




so this comment was very true http://forum.doom9.org/showpost.php?p=1682920&postcount=247



That comment was and is completely inaccurate at the second part.

Like OpenCL decoder, the Nvidia's and Intel's HEVC_MAIN_VLD implementations are leveraging both CPU+GPU compute engine, in order to decode HEVC.

If OpenCL decoder is SW solution, then how come during playback of 4K HEVC, I need 92% of CPU power of Core i7-4790 for real-time playback using LAV x64, when OpenCL decoder achieves same result with 32% CPU usage ?

Is the OpenCL decoder almost 3 times faster due to CPU optimizations only ?

I doubt it.

UPDATE:

After the above post I did some more "weird" tests and maybe the OpenCL decoder is indeed a lot faster than LAV in CPU decoding.

Look here:
http://forum.doom9.org/showthread.php?p=1689049#post1689049

huhn
5th August 2014, 19:34
it is GPU assisted software yes.

is GPU assisted software now a hardware decoder?
is everything running on a GPU hardware code not software?

does this help at all?

P.J
5th August 2014, 19:48
I believe PowerDVD HEVC decoder only uses CPU while Strongene OpenCL HEVC decoder uses both CPU and GPU.

HEVC_MAIN_VLD should be better solution if it can use the full potential of GPU and not only a small part of it.

NikosD
5th August 2014, 19:48
@huhn

Yes it helps.

My CPU using LAV x64 needs 92% usage for real-time playback of 4K HEVC and only 32% CPU using OpenCL decoder.

Do you want any further proof ?

The only thing is how much the GPU really assists for dropping CPU usage and how much of this drop happens due to a lot better CPU decoding of OpenCL decoder.

NikosD
5th August 2014, 19:51
@P.J

I haven't tried myself PowerDVD, I only said what I read.

Maybe it's for AMD GPUs only.

P.J
5th August 2014, 20:10
@P.J

I haven't tried myself PowerDVD, I only said what I read.

Maybe it's for AMD GPUs only.

Where did you read that?

http://www.cyberlink.com/products/powerdvd-ultra/spec_en_GB.html

NikosD
5th August 2014, 20:12
From Anandtech's presentation and review of A10-7800:


The other feature using the GCN cores is HEVC Compute support with PowerDVD 14, using OpenCL to speed up decoding for high definition content. With a soon-to-be released update, AMD Fluid Motion Video should also be supported



AMD also points out in its release that PowerDVD 14 is fully supporting HEVC compute via OpenCL on AMD APUs, with also AMD Fluid Motion Video in a later update.

P.J
5th August 2014, 20:21
I don't believe them :D

huhn
5th August 2014, 20:39
@huhn

Yes it helps.
does this help at all?

this was pointed at discussing about hardware and software decoder not if the openCL version is or can be faster.

this openCL decoder is currently fast if not blocked by a terrible bad GPU i don't argue that!

foxyshadis
6th August 2014, 01:38
The Strongene decoder may very well be the same decoder as what's in PowerDVD, although PowerDVD might have licensed an older version. From their release notes:
The OpenCL version is developed jointly by Strongene and AMD; [...] This version supports the OpenCL devices like AMD HD 5000 and above discrete GPUs, and AMD APUs (like Richland and Kaveri).

The fact that it works at all on nVidia or Intel is fantastic, since it obviously wasn't optimized for them in any way. At least it wasn't specifically disabled on them.

Edit: Downloaded the PowerDVD trial, it's definitely using different code for its OpenCL.