Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
24 Views

About IppFFT and cilk_spawn

Hi all,

I have the method using ippiFFT to perform forward and inverse FFT of an Image. This method calls ippiFFT 3 times.

I try apply cilk_spawn with purpose improve performance of FFT processing, but processing time of method with cilk_pawn is slower than method without cilk_spawn.

I don't known what the problem is. Does anyone have experience about it?

I also attach example code.

Best regards,

Ha Duy Tuan

0 Kudos
4 Replies
Highlighted
Valued Contributor II
24 Views

>>...I try apply cilk_spawn with purpose improve performance of FFT processing, but processing time of method >>with cilk_pawn is slower than method without cilk_spawn. >> >>I don't known what the problem is. Does anyone have experience about it? I did a quick review of your source codes and all FFT functions from IPP library you use are internally threaded. So, you're dealing with some kind of double-threading and use Windows Task Manager for a verification of how many threads are actually created. Take a look at ThreadedFunctionsList.txt in a documentation folder of Intel Parallel Studio XE.
0 Kudos
Highlighted
Beginner
24 Views

Hi Sergey

Thanks for your answer.

It mean that if a method is internally threaded method, we cannot apply more parallel such as cilk_pawn?

0 Kudos
Highlighted
Valued Contributor II
24 Views

>>...It mean that if a method is internally threaded method, we cannot apply more parallel such as cilk_pawn? I think you can when ippSetNumThreads( 1 ) is called but you need to verify if there Is a performance improvement when it is used with Cilk. If there is No then just use a threaded IPP function with ippSetNumThreads( SomeNumberOfThreads ) without Cilk. Also, please take into account that internal threading has to be removed in some next ( future ) release of IPP. So, in that case all your efforts with Cilk will be paid off.
0 Kudos
Highlighted
Moderator
24 Views

yes, ippiFFTInv_CToC_32fc_C1IR is internally threaded and therefore you need to set ippSetNumThreads(1) like Sergey recomended, or link your application with serial version on IPP ( ipp*_l.libs)

0 Kudos