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

Stuck after installation: Illegal instruction

bibi88
Beginner
193 Views
Hello,

I've recently changed from one computer (32 bits) to another (64 bits) and the new installation has got some problems.
I'm using Codeblock IDE with OpenCV2 and IPP 6.1.6.063, but it seems that an illegal instruction occurs when I try to call IPP functions (like ippiRGBToGray_8u_C3C1R). However, structures as Ipp8u are well recognized.
Because I'm stuck since a few days with this install, could you give me a way to test (using gdb or whatever you want) if IPP libraries are well recognized for my computer?

Thanks in advance
0 Kudos
2 Replies
bibi88
Beginner
193 Views
I've found a solution! It seems that the libs were totally different than for a 32 bits processor(I was expecting nearly the same names)...:(

Here is my Makefile if anyone get the same problem:

CC = gcc
INC = -I/usr/local/include/opencv -I/opt/intel/ipp/6.1.6.063/em64t/include
LIB = -L/usr/local/lib -L/opt/intel/ipp/6.1.6.063/em64t/sharedlib
OPT = -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_objdetect -lopencv_video -lguide -lippccem64t -lippchu8 -lippdcem64t -lippdiu8 -lippim7 -lippjy8 -lipprmx -lippse9 -lippsry8 -lippvmem64t -limf -lippccm7 -lippchy8 -lippdcm7 -lippdiy8 -lippimx -lippme9 -lipprn8 -lippsem64t -lippsu8 -lippvmm7 -liomp5 -lippccmx -lippcoreem64t -lippdcmx -lippgene9 -lippin8 -lippmem64t -lippru8 -lippsm7 -lippsy8 -lippvmmx -lippace9 -lippccn8 -lippcve9 -lippdcn8 -lippgenem64t -lippiu8 -lippmm7 -lippry8 -lippsmx -lippvce9 -lippvmn8 -lippacem64t -lippccu8 -lippcvem64t -lippdcu8 -lippgenm7 -lippiy8 -lippmmx -lippsce9 -lippsn8 -lippvcem64t -lippvmu8 -lippacm7 -lippccy8 -lippcvm7 -lippdcy8 -lippgenmx -lippje9 -lippmn8 -lippscem64t -lippsre9 -lippvcm7 -lippvmy8 -lippacmx -lippche9 -lippcvmx -lippdie9 -lippgenn8 -lippjem64t -lippmu8 -lippscm7 -lippsrem64t -lippvcmx -lirc -lippacn8 -lippchem64t -lippcvn8 -lippdiem64t -lippgenu8 -lippjm7 -lippmy8 -lippscmx -lippsrm7 -lippvcn8 -lsvml -lippacu8 -lippchm7 -lippcvu8 -lippdim7 -lippgeny8 -lippjmx -lippre9 -lippscn8 -lippsrmx -lippvcu8 -lippacy8 -lippchmx -lippcvy8 -lippdimx -lippie9 -lippjn8 -lipprem64t -lippscu8 -lippsrn8 -lippvcy8 -lippcce9 -lippchn8 -lippdce9 -lippdin8 -lippiem64t -lippju8 -lipprm7 -lippscy8 -lippsru8 -lippvme9 -pthread

BIN = ipp0 # executables to create
all: $(BIN)

ipp0: ipp0.c Makefile
$(CC) ipp0.c $(INC) $(LIB) $(OPT) -o $@

# "make clean" cleans the directory
clean:
rm *~ *.o $(BIN) core

0 Kudos
Ying_H_Intel
Employee
193 Views
Hi bibi88,

Thanks for the sharing. Yes, the IPP install package is different for different processor.

Intel ProcessorIntel IPP Package
32-bit IA-32 and compatible processors (Intel Core 2 processors, Intel Pentium processors, Intel Xeon processors, and compatible AMD* processors)l_ipp_ia32_p_6.x.059.tgz
64-bit Intel 64 and compatible processors (Intel Xeon and Pentium processors, and compatible AMD* processors)l_ipp_em64t_p_6.x.059.tgz
And the library name anddirectoryis a little different in 32 bit or em64(intel 64) 64 bit in IPP 6.x.

But IPP 7.0 will make the thing easy. The library name is aligned in both 32bit and 64bit. See New Directory Structure and Library Naming Scheme for Intel IPP 7.0 Library

Second, it seems a toolong list inOPT.

Actually, just -lipp*em64 (dispatched library)are required.all of otherslike ippdin8, ipprm7 processor-specific librariesare not required.
Please seehttp://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-understanding-cpu-optimized-code-used-in-intel-ipp/

If you are using a dynamic link library this process is handled automatically when the dynamic link library is initialized.

BestRegards,
Ying
0 Kudos
Reply