"Illegal instruction" message on running ipp samples

"Illegal instruction" message on running ipp samples

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[i] = 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);

3 帖子 / 0 全新
最新文章
如需更全面地了解编译器优化,请参阅优化注意事项

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

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

发表评论

登录添加评论。还不是成员?立即加入