Can you give some details about IPP dynamic memory allocation functions? Do you have your own optimized heap implementation, or it is just a wrapper for existing Operating System's malloc() that ensures proper alignment?
It's well known that, for example, default Visual C++ heap manager is not any good in multithreaded environment, especially on SMP systems.
Looks at the following benchmarks:
It would be great if IPP provided decent heap manager of its own.
You could base it on one of the free libraries (not sure on license terms) such as:
And make it configurable so that the IPP users could select the best heap implementation for their application.