Turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- Intel Community
- Software
- Software Development SDKs and Libraries
- Intel® Integrated Performance Primitives
- IPP Convolution Problem

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page

pascott1

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

07-10-2009
03:45 AM

88 Views

IPP Convolution Problem

We also tried using the convolve IPP call and got the same result so does the convolve function work the same way under the hood as the method we are using?

Link Copied

5 Replies

Chao_Y_Intel

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

07-12-2009
08:06 PM

88 Views

ippSetFlushToZero();

ippSetDenormAreZeros();

Can this be helpful? You can check the ippsman for these two functions.

Thanks,

Chao

pascott1

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

07-13-2009
02:41 AM

88 Views

We noticed these functions at the weekend and gave them a go. We disabled them both by setting them to 1 but this didn't seem to have an effect as the output still contained zeros. We put floating point exception handlers around the call as well and these were not triggered.

When we investigated using matlab we did the convolve long hand and found that the smallest value in the whole calculation was 9.5e-9. We are usingsingle precision (float32) so we think we should be well within the precision bounds (1.18e-38). However, we are a little confused about sub normal numbers. Epsilon of 0.0 is 1.18-38 which is what the calculation sould be using so we don't think the calculation should be underflowing or using sub normal numbers.

The dataviews we have are one dimensional. One is 996 values and then padded to 4096 with zeros. The values range from 1 to 10. The second dataview is 1600 values padded to 4096 with zeros. The values are from 0.95e-9 to 1.

So in conclusion we have disabled denorm to zero and flush to zero (even though we don't think the calculation should trigger these) and don't get floating point exceptions but still see zeros in our convolution output. When performed using a non ipp call we don't see any zeros. We are using ipp 5.3 with version 10 of the intelcompiler.

Are there any other reasons why we could be seeing zeros? I will check to see if I can send the input values to replicate our problem.

Thanks

Chao_Y_Intel

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

07-15-2009
01:11 AM

88 Views

Yes, the input values and the test code will be very helpful to root the problem..

Thanks,

Chao

pascott1

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

07-21-2009
08:12 AM

88 Views

Chao_Y_Intel

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

07-22-2009
12:29 AM

88 Views

Quoting - pascott1

We are calling the IPPInvDFT32CtoC function with a plan size of 4096. We are getting zeros in the output with Denorm to zero and flush to zero both off.The input vector is attached.

Hi,

Just tested the data with the following code. The output is very close to 0, but not 0.

are these the result you expected?

3.6954880e-006 0.00000000

6.6777798e-006 3.7308549e-008

8.1331855e-006 -4.9276043e-008

1.1082059e-005 -3.1710805e-008

1.4743879e-005 -5.1793156e-009

....

Thanks,

Chao

void main()

{

Ipp32f x[4096*2], y[4096*2];

int n;

FILE * fp,*fpout;

IppStatus status;

IppsDFTSpec_C_32fc* spec;

fp=fopen("vector_in.txt","r");

fpout=fopen("vector_out.txt","w");

for(int i=0;i<4096;i++) {

fscanf(fp,"%f %f",&x[2*i],&x[2*i+1]);

}

status =ippsDFTInitAlloc_C_32fc(&spec,4096,IPP_FFT_DIV_INV_BY_N, ippAlgHintNone);

ippsDFTInv_CToC_32fc((Ipp32fc *)x,(Ipp32fc *)y,spec, NULL);

ippsDFTFree_C_32fc( spec );

return ;

}

Topic Options

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

For more complete information about compiler optimizations, see our Optimization Notice.