Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
6758 Discussions

"Illegal instruction" message on running ipp samples

yoavnaveh
Beginner
403 Views

Hello,

I want to use ipp for my new project - implementing a compression algorithm for our big files based on 2D wavelet transform.

I'm new to ipp and when I tried running some of the examples I keep getting the illegal instruction message upon which teh execution stops. I'm running on Redhat 4.6 64bit Linux, with Intel 11.1 compiler (ipp ver. 6.1).

when running your 2D wavelet transform example (pasted below) I get this on the very first function call - ippiCopyWrapBorder_32s_C1R

what's wrong?

here is a simpler example that also produce the same run exitwith "illegal message" :

float buf[10*10];
for (i = 0; i < 100; i++)
buf = 0;

IppiSize imgSize1 = {4,4};
ippiSet_32f_C1R (5, buf, 40, imgSize1);


Yoav

IppiWTFwdSpec_32f_C1R* pSpec;
IppiWTInvSpec_32f_C1R* pSpecInv;
Ipp32f pTapsLow[3] = {0.25, 0.5, 0.25};
int lenLow = 3;
int anchorLow = 1;
Ipp32f pTapsHigh[3] = { 0.75, -0.25, -0.125};
int lenHigh = 3;
int anchorHigh = 1;
Ipp32f pSrc[8*8] = { 0.0, 0.0, 0.0, 11.1, 11.1, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 11.1, 11.1, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 11.1, 11.1, 0.0, 0.0, 0.0,
11.1, 11.1, 11.1, 11.1, 11.1, 11.1, 11.1, 11.1,
11.1, 11.1, 11.1, 11.1, 11.1, 11.1, 11.1, 11.1,
0.0, 0.0, 0.0, 11.1, 11.1, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 11.1, 11.1, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 11.1, 11.1, 0.0, 0.0, 0.0};
Ipp32f pSrcB[9*9];
int srcStepB = 9*sizeof(Ipp32f);
IppiSize roiSizeB = {9, 9};
int srcStep = 8*sizeof(Ipp32f);
IppiSize roiSize = {8, 8};
Ipp32f pDetailXDst[4*4];
Ipp32f pDetailYDst[4*4];
Ipp32f pDetailXYDst[4*4];
Ipp32f pApproxDst[4*4];
IppiSize dstRoiSize = {4, 4};
int bufSize, bufSizeInv;
Ipp8u* pBuffer;
Ipp8u* pBufferInv;
Ipp32f pDstInv[8*8];
Ipp32f pAppB[5*5];
Ipp32f pXB[5*5];
Ipp32f pYB[5*5];
Ipp32f pXYB[5*5];
int StepB = 5*sizeof(Ipp32f);
IppiSize roiInvSize = {4, 4};
IppiSize roiInvSizeB = {5, 5};
int stepDstInv = 8*sizeof(Ipp32f);
int approxStep, detailXStep, detailYStep, detailXYStep;
approxStep = detailXStep = detailYStep = detailXYStep = 4*sizeof(Ipp32f);


//adds border to the source image
ippiCopyWrapBorder_32s_C1R((Ipp32s*)pSrc, srcStep, roiSize, (Ipp32s*)pSrcB, srcStepB,
roiSizeB, 1, 1);

0 Kudos
2 Replies
PaulF_IntelCorp
Employee
403 Views
Hello Yoav,

What sort of processor are you running on?

Note that the default compilation level for the Intel 11.1 compiler is SSE2. If you are using an old processor this might be a problem. Otherwise, not sure what might be causing this.

Paul
0 Kudos
yoavnaveh
Beginner
403 Views
Hi Paul,

I managed to solve the problem.
My makefile included too many (unnescessary) ipp libraries, some of them to different platforms.
When I filtered it to the ipp libraries I need, the problem resolved.

Yoav
0 Kudos
Reply