I need to develop a signal processing algorithm in a multicore Intel processor so I have decided to test IPP to simplify development because I am not very familiar with multicore programming
I guess I must be doing something wrong because when I run my programm I see that it is only using 1 core, instead of the 8 possible cores
The code calls several IPP functions for matrix operation (transpose, multiplication, inversion, multiplication) to process this vector (code attached). I have tested the code with different input vector sizes with same results. When I run the code the system monitor only shows an increase in the activity of 1 of the cores
I have tried both static and dynamic linking models, with and without calling ippSetNumThreads functions with same results
My development environment is a HP workstation model Z6000 with 2 x Xeon X5550 Quad Core processor running Linux (RedHat) 64 bits
Any ideas on why my programm is only ussing 1 core?
Thank you very much !
not all function in IPP library are threaded. There are many cases when threading inside of primitive function can't be implemented efficiently. I would recommend you to check ThreadedFunctionsList.txt (which is available in Documentation folder of IPP installation) to see if the particular functions you use threaded or not. If they are not threaded then you may want to consider implementing threading on top of IPP.
Moreover, in the attached code, it tests the matrix computation. Please note, IPP matrix function are designed for small matrix computation (like, 3x3, 4x4 etc) for some graphics application. If you want to compute large matrix, you can use Intel MKL libraries.