All times are UTC+02:00




Post new topic  Reply to topic  [ 719 posts ]  Go to page Previous 158 59 60 61 6272 Next
Author Message
 Post subject: Re: Stereo Tool 6.00
PostPosted: Thu Feb 03, 2011 1:05 am 

Joined: Sun May 02, 2010 11:26 pm
Posts: 547
See previous post. All my testing is on the same system, INTEL.


Top
   
 Post subject: Re: Stereo Tool 6.00
PostPosted: Thu Feb 03, 2011 1:06 am 
User avatar

Joined: Sun Oct 03, 2010 8:59 pm
Posts: 36
I have an AMD X6 and don't have any clicks even down to 1 ms , 64 samples and 512 latency, at 192kHz.

_________________
J0HN II


Top
   
 Post subject: Re: Stereo Tool 6.00
PostPosted: Thu Feb 03, 2011 1:10 am 
Site Admin
User avatar

Joined: Mon Mar 17, 2008 1:40 am
Posts: 11425
Brian: Creating such versions is possible, but will take a lot of time and effort. For the functions from the IPP library that I'm using, I have looked up benchmarks and they perform about equally on an AMD as AMD's own functions. The CPU detection is probably done once at the first call, but it's not done again when you press RESET, so that cannot be the cause either.

Most interesting so far is eldoradofm's answer that the issue disappears when the CPU load is lowered. So this means that if the processing thread finishes fast enough, the ASIO thread isn't hindered anymore and everything works fine. I would expect (especially in the new high priority version) that the ASIO thread will always get highest priority, then there should be no problem as well.

The real issue here is that the ASIO thread isn't able to do respond in time. I'll go back to the ASIO developers forum and hope that someone there can shed some light upon this.


Just to be clear: IF all the priorities would be handled as I expected them to be, it should work fine on ANY system which can handle the CPU load, also a single core, AMD etc. system.


Top
   
 Post subject: Re: Stereo Tool 6.00
PostPosted: Thu Feb 03, 2011 1:14 am 

Joined: Sun May 02, 2010 11:26 pm
Posts: 547
Could you post the link to the ASIO developer forum or send it to me?


Top
   
 Post subject: Re: Stereo Tool 6.00
PostPosted: Thu Feb 03, 2011 1:17 am 
Site Admin
User avatar

Joined: Mon Mar 17, 2008 1:40 am
Posts: 11425
It's actually a DSP development forum, with lots of people there who also work on ASIO apps:
http://www.kvraudio.com/forum/viewforum.php?f=33


Top
   
 Post subject: Re: Stereo Tool 6.00
PostPosted: Thu Feb 03, 2011 1:21 am 

Joined: Sun Dec 12, 2010 2:26 pm
Posts: 885
Quote:
Brian: Creating such versions is possible, but will take a lot of time and effort. For the functions from the IPP library that I'm using, I have looked up benchmarks and they perform about equally on an AMD as AMD's own functions. The CPU detection is probably done once at the first call, but it's not done again when you press RESET, so that cannot be the cause either.

Just to be clear: IF all the priorities would be handled as I expected them to be, it should work fine on ANY system which can handle the CPU load, also a single core, AMD etc. system.
I don't think you understand what goes on with compiled executables and how the compiler builds in instructions to direct the software down various codepaths. This issue is something that is a "magic" thing that happens inside the compiler. You can attempt to direct the compiler to do certain things (compiler directives), but it's not a simple thing like you appear to be thinking that it is.

Quoting from this URL, and sorry for the length. There are clickable URLs once you go to this site for more information: http://www.osnews.com/story/22683/Intel ... m_Compiler_
Quote:
Here's something you probably don't know, but really should - especially if you're a programmer, and especially especially if you're using Intel's compiler. It's a fact that's not widely known, but Intel's compiler deliberately and knowingly cripples performance for non-Intel (AMD/VIA) processors.
Agner Fog details this particularly nasty examples of Intel's anticompetitive practices quite well. Intel's compiler can produce different versions of pieces of code, with each version being optimised for a specific processor and/or instruction set (SSE2, SSE3, etc.). The system detects which CPU it's running on and chooses the optimal code path accordingly; the CPU dispatcher, as it's called.

"However, the Intel CPU dispatcher does not only check which instruction set is supported by the CPU, it also checks the vendor ID string," Fog details, "If the vendor string says 'GenuineIntel' then it uses the optimal code path. If the CPU is not from Intel then, in most cases, it will run the slowest possible version of the code, even if the CPU is fully compatible with a better version."

It turns out that while this is known behaviour, few users of the Intel compiler actually seem to know about it. Intel does not advertise the compiler as being Intel-specific, so the company has no excuse for deliberately crippling performance on non-Intel machines.

"Many software developers think that the compiler is compatible with AMD processors, and in fact it is, but unbeknownst to the programmer it puts in a biased CPU dispatcher that chooses an inferior code path whenever it is running on a non-Intel processor," Fog writes, "If programmers knew this fact they would probably use another compiler. Who wants to sell a piece of software that doesn't work well on AMD processors?"

In fact, Fog points out that even benchmarking programs are affected by this, up to a point where benchmark results can differ greatly depending on how a processor identifies itself. Ars found out that by changing the CPUID of a VIA Nano processor to AuthenticAMD you could increase performance in PCMark 2005's memory subsystem test by 10% - changing it to GenuineIntel yields a 47.4% performance improvement! There's more on that here [print version - the regular one won't load for me].

In other words, this is a very serious problem. Luckily, though, it appears that the recent antitrust settlement between AMD and Intel will solve this problem for at least AMD users, as the agreement specifically states that Intel must fix its compiler, meaning they'll have to fix their CPU dispatcher.

The Federal Trade Commission is investigating Intel too, and it is also seeking a resolution of the compiler issue, but the FTC takes it all a step further than the Intel-AMD settlement. Since the latter only covers AMD, VIA could still be in trouble. Consequently, the FTC asks that Intel do a lot more than what's described in the AMD settlement:


Requiring that, with respect to those Intel customers that purchased from Intel a software compiler that had or has the design or effect of impairing the actual or apparent performance of microprocessors not manufactured by Intel ("Defective Compiler"), as described in the Complaint:


a.Intel provide them, at no additional charge, a substitute compiler that is not a Defective Compiler;
b.Intel compensate them for the cost of recompiling the software they had compiled on the Defective Compiler and of substituting, and distributing to their own customers, the recompiled software for software compiled on a Defective Compiler; and
c.Intel give public notice and warning, in a manner likely to be communicated to persons that have purchased software compiled on Defective Compilers purchased from Intel, of the possible need to replace that software.

Fog also offers up a number of workarounds, such as using GNU GCC, whose optimisations are similar to that of Intel's compiler, "but the Gnu function library (glibc) is inferior". You can also patch Intel's CPU dispatcher - Fog even provides a patch to do so in "Optimizing software in C++: An optimization guide for Windows, Linux and Mac platforms".

This is a particularly nasty kind of anticompetitive practice, as it really requires deep knowledge of matters in order to find it out. God knows how many benchmarks have been skewed in favour of Intel simply because people unknowingly used Intel's compiler in good faith. Intel's compiler is seen as the cream of the crop and delivers superior performance, but apparently only if you stick to GenuineIntel.


Top
   
 Post subject: Re: Stereo Tool 6.00
PostPosted: Thu Feb 03, 2011 1:26 am 
User avatar

Joined: Tue Mar 17, 2009 2:56 pm
Posts: 4229
Quote:
Most interesting so far is eldoradofm's answer that the issue disappears when the CPU load is lowered. So this means that if the processing thread finishes fast enough, the ASIO thread isn't hindered anymore and everything works fine. I would expect (especially in the new high priority version) that the ASIO thread will always get highest priority, then there should be no problem as well.
Logical thinking .. it should work on any CPU. But i remember one thing from always, that ST was unstable when CPU/s goes higher then 30-40%. More CPU usage, more ST is unstable. Same thing happens with DS, not only with Asio.


Top
   
 Post subject: Re: Stereo Tool 6.00
PostPosted: Thu Feb 03, 2011 1:41 am 
Site Admin
User avatar

Joined: Mon Mar 17, 2008 1:40 am
Posts: 11425
Brian: About the Intel compiler issue: I just realized that there currently _is_ no switching in Stereo Tool - I'm building completely separate versions for different systems, which are included in the installer executable, which automatically selects the correct one. The same is true for IPP: I *only* include the version that I need.

So in each version there's only a single code path which can be taken.

Also, this story is "old" (it's still true though), but in newer compilers - since they were taken to court - there are 2 options to select processor support, one for Pentium 4+ and one for systems with SSE2 support. Naturally I used the 2nd :-)

So basically, an AMD uses exactly the same code path as an Intel CPU, because there is only one included. (There is also an SSE version for Pentium 3 systems).

(In case you wonder why there are no SSE3/4 versions: Nothing there that gives a significant performance effect.)


Top
   
 Post subject: Re: Stereo Tool 6.00
PostPosted: Thu Feb 03, 2011 1:42 am 
Site Admin
User avatar

Joined: Mon Mar 17, 2008 1:40 am
Posts: 11425
Quote:
Quote:
Most interesting so far is eldoradofm's answer that the issue disappears when the CPU load is lowered. So this means that if the processing thread finishes fast enough, the ASIO thread isn't hindered anymore and everything works fine. I would expect (especially in the new high priority version) that the ASIO thread will always get highest priority, then there should be no problem as well.
Logical thinking .. it should work on any CPU. But i remember one thing from always, that ST was unstable when CPU/s goes higher then 30-40%. More CPU usage, more ST is unstable. Same thing happens with DS, not only with Asio.
What do you mean by "unstable"'? It should work fine at any CPU load, even 90% or so. (And I've seen at least version 5.xx with FM output work on a Pentium 4 with 80% CPU load, without any issues)


Top
   
 Post subject: Re: Stereo Tool 6.00
PostPosted: Thu Feb 03, 2011 1:43 am 
User avatar

Joined: Fri Oct 08, 2010 3:58 am
Posts: 304
Hans, have a look at these. I now feel that you're NOT DOING anything wrong wrt ASIO thread handling. As you said there's no need to intervene in the ASIO thread handling and fiddling with its priority. I think it's a massive change you need to make in terms of load balancing across multiple cores in ST for low latency FM output. Now BBP ASIO uses the same audio core uses the same audio engine as BA Live. This audio engine HARDLY shows up in CPU usage(in BA or BBP ASIO). In the VM I'm running, BA takes 4-7% CPU of which the bulk is taken by ASIO thread whose priority is same as ASIO thread priority of ST set to realtime. But be it BALive or BBP ASIO, they have 35 threads running. How?
I tried to analyse by suspending each thread at a turn. Leif has broken up every possible PARALLEL module to a thread. So there's a thread that refreshes Input waveform, 1 for output waveform, 1 for Mutiband, 1for O/p Limiter, 1 for input AGC and so on. Collectively GUI rendering, crash recovery and critical audio engine, ASIO thread monitoring is done by the ancillary Breakaway process that keeps running (but doesnot use much CPU). Most importantly if I disable one core for BBP, it begins to stutter pretty much like ST at low latencies. I guess here Hans, that you probably have to do something clever in terms of balancing the load across the cores. ASIO part looks fine..no need for time critical priority.
Image
Image
EDIT: BTW, the 2 different ASIO threads. 1 actual ASIO thread, the other ASIO Confg panel. So I can kill the latter-doesnot make any difference!

_________________
visit website


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 719 posts ]  Go to page Previous 158 59 60 61 6272 Next

All times are UTC+02:00


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited