Community
cancel
Showing results for 
Search instead for 
Did you mean: 
storin
Beginner
76 Views

Incorrect Convolution (ippsConv_32f)

I got incorrect convolution results from ippsConv_32f on Core i7-2600 (Sandy Bridge) machine. This does not happen on older CPU.
The length of the first input vector is 15 and the 2nd one is 10000.
Then, the output vector has zeros from index = 4096 to 4011, for example.
Also, it has zeros around index = 8192. Other values are correct.
IppStatus shows no error.

Does anyone see a similar problem?

Following is my test code (C++)

#define PI 3.14159265358979324

void main()

{

// Define vector lengths.
int len1 = 15; // Input vector 1
int len2 = 10000; // Input vector 2
int dstLen = len1 + len2 - 1; // Output vector

// Allocate memory space
float* src1 = new float[len1];
float* src2 = new float[len2];
float* dst = new float[dstLen];

// Initialize input vectors
for (int i = 0; i < len1; i++ )
src1 = 0.0f;
int impulseLocation = 6; // Set the impulse location manually.
src1[impulseLocation] = 1.0f;

for (int i = 0; i < len2; i++ )
src2 = (float)cos(i * PI / 8);
IppStatus s = ippsConv_32f(src1, len1, src2, len2, dst);

// Observe the output vector here

// Free up memory space
delete [] dst;
delete [] src2;
delete [] src1;

}

Other information:
Windows 7 64 bit
Visual Studio 2010 Professional
IPP information (ippcore-7.0.dll)
File version 7.0.2.05.1049
Product version 7.0 build 205.85

Thank you
Shige Torin

0 Kudos
2 Replies
Chao_Y_Intel
Employee
76 Views

Shige,

Have you got the chance to check the latest release? I noticed a similar problem was fixed since IPP 7.0 update 6 release.

Thanks,
Chao

storin
Beginner
76 Views

Hello Chao,

Thank you for your advice! The convolution worked fine for both 32 bit and 64 code after updating IPP to 7.07.

Best regards,
Shige

Reply