Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
공지
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.

"Illegal instruction" message on running ipp samples

yoavnaveh
초급자
570 조회수

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 포인트
2 응답
PaulF_IntelCorp
570 조회수
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 포인트
yoavnaveh
초급자
570 조회수
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 포인트
응답