Log in

View Full Version : x264 & AMD Stream SDK (GPGPU, SMP, CUDA)


Pages : 1 [2]

LoRd_MuldeR
22nd December 2008, 16:19
I found an article from Hexus.net (http://www.hexus.net/content/item.php?item=11725), where they were able to test GPGPU with a Radeon card and a Adobe Premiere Plugin. Performance boost versus CPU only according up to 4x:

"4x speed" says exactly nothing! :rolleyes:

Everybody can talk about speed-up numbers and show fancy diagrams. But how does the quality compare to x264 at the same bitrate ???

Unless they offer a proper quality comparison, we must assume they don't show any comparison, because the quality is crap...

sacharja
22nd December 2008, 18:05
"4x speed" says exactly nothing! :rolleyes:

Everybody can talk about speed-up numbers and show fancy diagrams. But how does the quality compare to x264 at the same bitrate ?
Sure, but according to your own post ("We are yet to see a GPU-based encoder that runs only 2x faster than the CPU-based one and provides equal quality at the same bitrate.") I assume that 4x is a realistic statement and not so ridiculous as the 19x of AVIVO which seems to be achieved just by crippling the quality. I'm no GPGPU developer and haven't tried it out, but according to this value I think that the quality of PowerDirector will be somewhat comparable to x264.

Nevertheless I think GPGPU is a good technique. If it's implemented correctly the quality can be even better without affecting speed. Imagine that not just the motion estimation can be offloaded but also color correction, deinterlacing etc. etc..

Dark Shikari
22nd December 2008, 19:00
Sure, but according to your own post ("We are yet to see a GPU-based encoder that runs only 2x faster than the CPU-based one and provides equal quality at the same bitrate.") I assume that 4x is a realistic statement and not so ridiculous as the 19x of AVIVO which seems to be achieved just by crippling the quality. I'm no GPGPU developer and haven't tried it out, but according to this value I think that the quality of PowerDirector will be somewhat comparable to x264."Comparable speed to x264" is not an extraordinary claim. "Comparable quality to x264" most definitely is.

LoRd_MuldeR
22nd December 2008, 20:34
Nevertheless I think GPGPU is a good technique. If it's implemented correctly the quality can be even better without affecting speed.

It would be enough if the quality of a GPGPU encoder is equal to the current state-of-the-art CPU encoders while the speed is significant faster. It would also be enough if the quality (at a given bitrate) is significant better, while speed is equal to the current CPU encoders. But the problem is: We are yet to see a GPGPU encoder that does achieve this...

deekey777
22nd December 2008, 21:56
Is Badaboom 1.1 (Main Profile and CABAC) so bad?

LoRd_MuldeR
22nd December 2008, 22:49
Is Badaboom 1.1 (Main Profile and CABAC) so bad?

Compare it to x264 at the same bitrate (2-Pass mode) and you'll know. And pick a mid-range bitrate. Not a high bitrate where both encoders look transparent ;)

CruNcher
23rd December 2008, 02:43
Yep but you say it it depends also heavily on your usage scenario and your system :) older systems can get a big boost with GPU support doing several things with it, but the higher you go the lower the advantage gets and the rest that stays is the Energy Efficiency of both and still GPUs are far away from being that Energy Efficient except their Internal Video Decoding Logic's like VP2 and UVD2 currently :)
Though imho GPU Parallelism and even CPU are still in it's Kid shoes and people will get more and more advanced with it over times and create nice clean efficient applications with it like we have today running on Singelcore CPUs (and even there it looks dark for the new Generations as many don't concentrate these days on low level optimization anymore but more and more use stuff like .Net and Java i see a big risk in that anyway just my thought's) :)
There are very interesting Companies forming that are into GPU R&D and its own unique field of expertise, that market grows daily :)

MfA
26th December 2008, 12:54
GPU shaders are fine for what they are designed for, SPMD with coherently branching programs performing floating point computations (no 4x8 or 2x16 bit SIMD). Also with G80 and 48xx you get scatter/gather into local cache at much greater bandwidths than desktop CPUs.

GPUs have great strengths ... it's just that normal video encoding doesn't need any of them, and at what video coding does need they aren't strong.

The best immediate use for GPUs in encoding at the moment would be for a pre-pass motion estimation for x264 (the existing ME in x264 might not fit the GPU, but something like hierarchical ME can be easily implemented on GPUs and should be sufficient for a pre-pass). Improving x264 encoding is not something either NVIDIA or AMD are really looking to do (off line encoding is a niche market and it would piss off other market partners) so we get stuff like Badaboom and Avivo, which try to have the GPU do more than it's suited for.

An exhaustive search for semi-optimal encoding parameters among a fixed size set of MVs/quantizers/etc specified by the CPU is also reasonably well suited to the GPU (locally optimal given the coding parameters from the previous iteration of the frame, or even previous iteration of the video if you want to take temporal effects into account, the first iteration would come from the CPU). A lot more work and will end up with very slow encoding modes.

CruNcher
26th December 2008, 21:08
You absolutely right, though especially ETI does a lot of effort (investment) to make Encoding as best as Possible on the GPU but sure it's not suited for that Generation 100% yet, but it can enhance the whole process especially in the post processing field as a supporter for the CPU i think about things like Realtime Motion Adaptive Deinterlacing, Denoising and Super Resolution there the GPU does allready a nice job :)
Nvidias Deinterlacer is all ready more efficient then Yadif and much faster, with it realtime HD Deinterlacing to 60p is really a easy task :)
and combined with the UVD2/VP2 logic (Decoding) before those Shader Power (Post processing) it's really a powerful fast and compared to Software Encoding better Energy Value Encoding for the average Consumer.
Even 4 cores doing this whole chain in the same quality which from the Deinterlacing side would need something more advanced then Yadif (MCBob or something else using Needi2, which would result automatically in a immense slowdown currently not really thinkable of doing all this 1080i->p in Realtime in a Software environment even with 4 cores.

This is my current Encoding Chain and it works marvelous :) on my relatively old System (X2 Toledo) and gives me nice results in much faster time, then what a entire software chain would be capable of.


VP2 Shader Dual Core
Decoding (GPU/DSP) -> Post Processing (GPU) -> Encoding (CPU)

The most time win comes from the Shader Processing and the almost 0 utilization of the CPU @ Decoding, the rest is free for the Encoding task

There is a lot of cpu cycles saved that can be invested fully into the Encoding task :) (either Speed/Quality or Balanced)



Sure FPGA solutions and such are more efficient but don't forget we talking about the end Consumer sure thing soon especially in Netbooks such transcoding tasks will be more and more done in FPGA solutions but for the Average Desktop it's not here yet and the quality is still questionable (Depends on the Encoder implementation) :) (and not influenced by the Consumer)

deekey777
10th January 2009, 15:32
CyberLink PowerDirector 7 Optimized for ATI Stream Technology from AMD (http://www.cyberlink.com/eng/press_room/view_1997.html)
The First Consumer Video Editing Software Optimized for ATI Stream Encoder

Taipei, Taiwan—January 10, 2009—CyberLink Corp. (5203.TW), innovative solution provider for the connected media lifestyle, launches today the latest PowerDirector 7 optimized for ATI Stream technology with accelerated MPEG2 and H.264 video encoding performance.

ATI Stream technology allows applications to take advantage of a graphic processing unit’s massive compute capability for demanding algorithms such as video editing. CyberLink PowerDirector 7 leverages ATI Stream technology to maximize transcoding performance when rendering MPEG2 and H.264 video files that users can output and view on the iPod®. PowerDirector 7 supports Stream-enabled ATI Radeon™ HD 4800 and ATI Radeon™ HD 4600 series graphic card solutions.

“PowerDirector 7 is a prime example of how ATI Stream technology can accelerate and streamline processing intensive PC tasks to improve the experience for consumers,” said Matt Skynner, vice president of product marketing, Graphics Products Group, AMD. “We are excited about the impressive results PowerDirector 7 is yielding with our innovative GPU technology and we applaud CyberLink’s commitment to deliver great HD video editing performance for video enthusiasts.”

"CyberLink is happy to collaborate with AMD, optimizing PowerDirector 7 as the first consumer video editing software with ATI Stream technology,” said Alice H. Chang, CEO of CyberLink. “With the growing popularity of video editing and AMD’s focus on developing advanced graphic and computing solutions, we felt it was a natural step to deliver accelerated software performance to allow users to spend more time on creating and sharing HD videos and less time waiting."
...
Product Availability
PowerDirector 7 optimized for ATI Stream technology will be available on CyberLink’s online store early February.

sacharja
11th January 2009, 12:18
Thanks, seems we have to wait till Feb

Product Availability
PowerDirector 7 optimized for ATI Stream technology will be available on CyberLink’s online store (http://www.cyberlink.com/prog/trial/index.do?locale=en_US) early February.

Ynatik
8th February 2009, 14:47
New patch build 2519 add Now Supports ATI Stream hardware video encoding
http://www.cyberlink.com/multi/download/patches_4_en_US.html

sacharja
9th February 2009, 22:06
Thanks, I tried the trial. Unfortunately I wasn't able to select "hardware video encoder" with my HD-4670. But I think I wouldn't use it even if I can profit from the 215% speed increment with Stream. PowerDirector offers almost no settings and you can only save the h.264 video as MPEG2-transport stream.

Hopefully there will be other programs with Stream support in the future.

tomos
9th February 2009, 22:15
so powerdirector is kinda pointless at the moment (unless you want to encode to mpeg2)?

CruNcher
10th February 2009, 00:00
Lol wtf "Now Suports Nvidia Cuda hardware Encoding" ehh wasn't the january update CES release already ? see my test of Nvidias Encoder, seems now it's real GPU i hope so gonna retest :)
@Tomos read what he wrote carefully it saves H.264 into transport stream .m2ts because it's mainly for AVCHD creation, you have some possibilities of settings but don't expect full control over the Encoder :)

deekey777
10th February 2009, 01:38
Thanks, I tried the trial. Unfortunately I wasn't able to select "hardware video encoder" with my HD-4670. But I think I wouldn't use it even if I can profit from the 215% speed increment with Stream. PowerDirector offers almost no settings and you can only save the h.264 video as MPEG2-transport stream.

Hopefully there will be other programs with Stream support in the future.

It looks like the trial version is older than the newest version, so it lacks AMD Stream support.

tomos
10th February 2009, 12:25
Lol wtf "Now Suports Nvidia Cuda hardware Encoding" ehh wasn't the january update CES release already ? see my test of Nvidias Encoder, seems now it's real GPU i hope so gonna retest :)
@Tomos read what he wrote carefully it saves H.264 into transport stream .m2ts because it's mainly for AVCHD creation, you have some possibilities of settings but don't expect full control over the Encoder :)

oops, you're right. i'm a 'tard.

i'm just hoping ATi put some effort into this. I haven't heard anything about them helping someone the way nvidia have been helping neuron2 with any probs on his CUDA AVC/VC1 decoder.

doesn't seem that they are as serious about stream as nvidia are about CUDA. :(

Sharktooth
10th February 2009, 16:32
they are serious, they just lack human resources.

sacharja
10th February 2009, 18:18
It looks like the trial version is older than the newest version, so it lacks AMD Stream support.
Yes, I found an explanation:

A trial is not available yet, while Nvidia customers are already able to download and install a modified trial. But a ATI stream demo will certainly follow the next few days
http://translate.google.com/translate?prev=hp&hl=de&u=http%3A%2F%2Fwww.computerbase.de%2Fnews%2Fhardware%2Fgrafikkarten%2F2009%2Ffebruar%2Fpowerdirector_ati_stream_cuda%2F&sl=de&tl=en&swap=1

deekey777
11th February 2009, 17:30
Note: in order to enjoy speed gains while transcoding you will need to install the ATI Avivo™ converter from the ATI website

It's a joke?

tomos
13th March 2009, 18:24
i just tried it again and the gpu assisted encoding option is greyed out - not installing avivo though. no way a program made years ago for the x1000 range is going to help with my 4850

next GPU upgrade for me will probably be nvidia unless ATi get their act together. as an ati user i cant even use neurons tools :(

Sharktooth
13th March 2009, 20:03
are you £$%&#! or what?
avivo is based on stream SDK and stream SDK works on 48xx series cards (too).
if it doesnt find a 48xx card or a supported one it reverts to software (CPU).
so, yes, avivo converter is GPU assisted thanks to stream SDK and if a software requires avivo converter that means it will relay on it to get the accelerated encoding.

sacharja
17th March 2009, 18:15
@Sharktooth
I think tomos meant the greyed out option in PowerDirector. I made the same experience. I would test it again, but I don't want to reinstall the necessary WMP.

BTW: Did you ever try Avivo with a HD card? During transcoding:
GPU load: 0%
CPU load: 100%

When you have watched my example movie that I posted at the beginning of the thread you know that the speed of AVIVO is just achieved by reducing quality drastically.

Sharktooth
18th March 2009, 02:23
it seems avivo GPU assisted encoding is broken with catalyst 9.2.
however it works correctly with catalyst 9.1.

Ajax_Undone
18th March 2009, 09:24
Until they trust their own encoders enough to compare them against x264 running on Nehalem (or at least Core2 Quad), we are far away from GPU encoders taking over the scene ;)

Just a question not really aiming for much but would it not be favorable to start building codecs that can use GPU logic along with CPU b4 they start getting good results... Or am I just out of my area of experience here and should shut up...:)

~DarC

Ajax_Undone
18th March 2009, 09:26
it seems avivo GPU assisted encoding is broken with catalyst 9.2.
however it works correctly with catalyst 9.1.

Whats with that? I was wondering about that my self.:confused:

Sharktooth
18th March 2009, 14:18
probably a bug or just a transition phase to new APIs.