View Single Post
Old 7th June 2011, 01:51   #13  |  Link
Mikey2
Registered User
 
Join Date: Nov 2010
Posts: 80
Quote:
Originally Posted by CruNcher View Post
Everything you say is nice and correct but you know why you use Hardware acceleration do you ?
I mean especially for Mobile Devices it's about Power Consumption (saving battery life) on the Desktop that isn't so important (though not true either their are many user who think it is equally important) it can help realizing some different workloads where you torture the CPU with less things like Decoding though Hardware Decoding surely is always limited and no ISV or OSS yet can use both efficiently based on different scenarios.

They all have have Design flaws either you use the Hardware Playback or the Software but non lets you efficiently combine both where it would make sense
Oh yes, I am beginning to have a deeper understanding of the pros/cons of graphics Hardware Acceleration and the inevitable trade-offs common to all engineering solutions.

My point is that I think technology is back to a point where many people should consider at least trying to go back to a configuration that uses "software decoding" to rely less heavily on the GPU, especially in a situation (such as ours) where our CPU's/Bus speeds are superior to our graphics cards. (FYI I have 2 8600GT's in SLI but have a much superior overclocked quad-core Q6600 CPU.)

Most of us come from either gaming backgrounds and/or from a time when using HW Acceleration on new-gen GPU's not only freed up computational power to the CPU, but also optimized the calculations due to the customized PLA of the GPU, rather than the generalized architecture of the CPU/Mobo.

Thus the rule of thumb was to always do HW Acceleration whenever possible. The trends have been apparent in the marketplace: Mobo's and CPU's have been dropping in price and increasing in bandwidth folloing Moore's law. However, with this craze to try to do everything on the GPU, those cards are often the most powerful and expensive parts in most high-end gamer's machines.

This makes sense for gamers, since not only are their graphics purposes utilizing many more features specific to gaming, but it also frees-up the CPU for multitasking and computational algorithms, communications, etc used in the game-engine logic.

However, for those of us who are primarily using our systems for an HTPC, I see two fundamental faults with this trend:
  1. Even when processing h.264/AVC/etc, much of the GPU's functionality is not utilized (specifically many 3D features....even in MadVR!) And since they are such specialized PLA's, it cannot be used for anything else.
  2. Watching (or even editing) a video does not require as much "generic" work that a gamer or engineer needs, such as database queries or complex algorithms...

Thus Many of us have enough excess processing power on our main CPU/Bus to pave the way for using that free computational power on the CPU to do the intensive task of decoding, rather than cramming it into the GPU, which must do the rendering step no matter what.

Furthermore, since Moore's law is now crippled by other limiting facts such as bus-speed and HDD access, most decent processors still have the excess processing power ready to be used while it is queued up waiting in the pipeline for other commands. (For instance, even I still see latency when my SataII 6Gb/s SSD is communicating via my RAM and northbridge to the CPU...thus I hardly ever peg my CPU even in the most demanding tasks.)

That is where I disagree: at least in my experience, I have had excellent luck simultaneously running software [CPU] decoding and hardware [GPU] rendering. The proof is that I not only see no dropped frames, but I can also multi-task fairly smoothly. When I used DXVA, Cuda, or CPUID for HW decoding, naturally the CPU usage was nil; however, GPU-Z was showing my graphics cards [remember I have SLI] maxed out. Furthermore, I ran a DPC-Latency checker and it was...spotty to say the best.

Now I see all of my performance monitors hovering around 40-60% across all cores and processors without any considerable latency. In other words, I am now fully utilizing my entire system.

I should note that this is a very new successful test and change of thinking for me. I believe that much has to do with the very latest NVidia Graphics drivers, madVR, FFmpeg, LAV Splitter, and particularly the new ffmpeg-mt multi-threaded software decoder for H.264/AVC files (used in lieu of libavcodec in ffdShow....))

I admit, I was taking a little bit of a shot in the dark in regards to this particular issue; however, VERY long story short (lol sorry) I have had much better luck balancing the tasks across both the CPU and the GPU rather than trying to dump-off as much as I can to the GPU while letting the CPU do next to nothing.

Phew, I apologize for the length of that! ...In short, I think it is worthwhile to at least give it a shot. I am glad I did - I was one day away from buying a new (overpriced) GPU before I figured out this magic!

MikeY
Mikey2 is offline   Reply With Quote