We have a multi threaded image processing aplication that has been using IPP 5.1 for a couple of years now. With 5.1 and everything cranking away on a core2duo machine we run at about 30% CPU utilization. A call to ippGetNumThreads reveals that the number of thread is 2. When we attempted to upgrade to 5.2 a long time ago and now to 6.0 our CPU utilization goes to 100%. Upon further research a call to ippSetNumThreads(1) get us back around 30% CPU utilization. I can comprehend why having multiple threads trying to run theseIPP multithreaded functions could cause problems, but I can't understand why it worked fine in 5.1 with threads greater then 1 but doesn't work in later versions? Are there any other options for machines with more cores rather then restriciting it to 1 thread, for example instead of using the default where number of threads equals number of cores we use number of cores / 2?
For more complete information about compiler optimizations, see our Optimization Notice.