Community
cancel
Showing results for 
Search instead for 
Did you mean: 
blinde
Beginner
64 Views

thread created after call of ippsFIR_32f_I / Linux

Hi.

To summarize I am migrating a soft under Linux from an old kernel with old IPP running on a Celerom to
a new kernel, with IPP6.1 on a core duo.

After a harware trigger, we start callingippsFIR_32f_I every 200ms.

After the call, I see that two new threads are created.
And one of this new threads makes a growing usage of CPU until it reaches 100%.
And then it goes back to 0% and restart growing...


In internal, does ippsFIR_32f_I create some threads ?

What can be the issue ?

Thanks

Chris

0 Kudos
3 Replies
PaulF_IntelCorp
Employee
64 Views

Hello Chris,

To find out if a primitive is threaded, look at the file named ThreadedFunctionsList.txt in the IPP doc directory. In the 6.1.5 version of that file the function is threaded (I think it is threaded for all 6.1 versions).

The CPU usage pattern is as much a function of the OpenMP threading engine as it is of the IPP function you are using. CPU usage should not be used as a guide for measuring performance. The key question is does the function accomplish the work required in the desired timeframe? The answer to that question, unfortunately, depends on your application, the data set, etc. So there's no easy answer...

One thing you should keep in mind, the threading within the primitive can generate more overhead than it is worth. Again, this depends on your application the data set you are feeding the function, etc. You can test a single-threaded version of the function against the multi-threaded version by linking against the single-threaded static library, or by disabling the threading. There are several threads and KB articles about this already on the site. I encourage you to search for them and compare your performance results with and without threading (in the primitive) before you decide which route is the best to take.

Regards,

Paul
blinde
Beginner
64 Views

Hi

Ok thanks for the hint.
I have just added a ippSetNumThreads(1) in my code and the code is now running as I want :)

Will try to understand if I should keep it or not later...

Thanks
PaulF_IntelCorp
Employee
64 Views

Hello Chris,

If your code runs per expectations using ippSetNumThreads(1), you might want to consider linking with the static single-threaded version of the library. Will probaby result in a little better single-threaded performance and will eliminate any overhead associated with the OpenMP library used by the multi-threaded versions of the library.

Paul
Reply