- sonicencoders and hyperthreading
- Posted by Eric Baines on February 28th, 2006
I have a twin 3GHz PC with hyperthreading. I use sonicencoders to burn video
dvds of digital TV recordings and it takes a long time (2.5-4 hours to burn a
2 hour movie). I think virtually all the resource needed is processor
resource.
When it is transcoding the file, if I look in task manager, one of the
processors shows as being highly used (80-100%) - but generally the other is
idle, unless I'm doing something else.
Is this the behaviour I should expect (hyperthreading is a mystery to me)? I
would have hoped that it would use all the processing power it has available
to it - is there any way I can exploit the fact that I have two processors?
Cheers
Eric
- Posted by R. J. Salvi on February 28th, 2006
By "twin", I assume you mean dual? Dual Xeon? If only one CPU is doing all
the work, then the program you're using is not SMT enabled. In your case
with dual Xeons, you should have four "Performance" graphs (for CPU usage)
in task manager and in a non-multithreaded environment, only one of those
graphs will show significant activity.
On the plus side, the "free" CPU will allow you to multitask without much of
a performance hit.
--
Robert J. Salvi, Ambiance Acoustics
http://www.ambianceacoustics.com
San Diego, CA USA
(858) 485-7514
"Eric Baines" <EricBaines@discussions.microsoft.com> wrote in message
news:3BFABECE-CD06-4225-AC2F-399DA035DF49@microsoft.com...
- Posted by Eric Baines on February 28th, 2006
I think I have misunderstood this - sorry.
I have a PC with HT. I have two processor graphs in task manager - I took
this to mean I had two processors. However, five minutes searching on the
site explained the error of my ways - I guess it is just single, and is
'pretending' to have two. So I guess, despite having one graph that is
flatlining at zero, I haven't got any more processing power to throw at the
task?
Cheers
Eric
"R. J. Salvi" wrote:
- Posted by JW on February 28th, 2006
You can think of Hyperthreading or dual CPU processing just like 2 Bank
Tellers only one teller at a time can work on a customers deposit. The
other teller can handle another customer if one comes in. Unless the
customer is able to split his deposit in half and then combine the results
when both tellers are finished having the second teller does not help.
Customers would be better off with one teller who could work twice as fast.
Some porgrams such as Database programs and programs that convert video file
format are designed to split their load among multiple processors and cobine
the results when appropriate. However writing to a DVD is not the type of
program that yields itself to this since only one program can actually write
at one time.
"Eric Baines" <EricBaines@discussions.microsoft.com> wrote in message
news:3BFABECE-CD06-4225-AC2F-399DA035DF49@microsoft.com...
- Posted by JW on February 28th, 2006
A Hyper threaded CPU looks and acts link a two CPU or dual Core system to
the operating system and gets about 80% of the performace of an equivalent
dual CPU system. An HT CPU has two sets of pipeline and memory access,
however, only one of the two threads can actually execute an instruction at
a time since there is only set of actual instructions. This is why you get
only 80% of the performance of a dual CPU or a dual Core system.
"Eric Baines" <EricBaines@discussions.microsoft.com> wrote in message
news:6E522BDE-8839-4721-92E3-468B42AACEC2@microsoft.com...
- Posted by Eric Baines on February 28th, 2006
Many thanks for the helpful answer - and apologoes if it was stupid question.
I suppose I did think that transcoding a video file was precisely the sort
of thing that could be spilt in the way you describe. I thought that (say) a
4Gb file could be split into four lots of data, each 1Gb in size, and then
fed out to whatever processors are free and available for transcoding. So
long as the boundaries could be handled, and the sequence wasn't lost, that
seems like it should work quite well - although I'm not sure I'd be ready to
code it!
Thanks again
Eric
"JW" wrote:
- Posted by JW on February 28th, 2006
No certainly don't want to try and write the code. Maybe you can find
another transcoder that supports multiple CPUs that you can use for the
trancoding part. I know there are some however, I don't track them and so
don't know if there is one that is appropriate.
"Eric Baines" <EricBaines@discussions.microsoft.com> wrote in message
news:EA6138C5-E0B9-4414-9B8B-52F4F130DE33@microsoft.com...
- Posted by Michael J. Mahon on March 2nd, 2006
You are exactly correct.
After a rather trivial bit of setup processing, the job of transcoding
video is an "embarrassingly parallel" activity, which can easily be
split into an arbitrary number of independent threads.
The fact that we have had MP, HT, and now multi-core processors for a
couple of years and that so few encoders take advantage of this is a
travesty.
Any software designer who tells you that video transcoding is an
inherently sequential process does not understand parallel processing.
It is trivial to "cut", transcode, and "splice" video, requiring
negligible extra processing relative to the actual transcoding effort.
Get to work, software designers--parallelism is no longer the future,
it's the present! And get busy software reviewers--start holding
software makers to higher standards of competition!
-michael
Eric Baines wrote:
--
-michael
Music synthesis for 8-bit Apple II's!
Home page: http://members.aol.com/MJMahon/
"The wastebasket is our most important design
tool--and it is seriously underused."
- Posted by R. J. Salvi on March 2nd, 2006
Agreed...and with bus speeds breaking the GHz barrier, there's an awful lot
of processing potential left on the table. Parallelism and better load
balancing...? Hell, nobody would ever use a Mac again. ;-)
--
Robert J. Salvi, Ambiance Acoustics
http://www.ambianceacoustics.com
San Diego, CA USA
(858) 485-7514
"Michael J. Mahon" <mjmahon@aol.com> wrote in message
news:eZydnbDGFeruMJvZ4p2dnA@comcast.com...