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

Why IPP uses gcc by default?

Basawaraj_J_
Beginner
688 Views

Hi,

I installed "parallel_studio_xe_2015_update3".

I ran the command:

perl build.pl --cmake=speech-codecs,intel64,make,d,mt,debug --build --clean

(I know speech codecs is no more supported, but my query is not about that..)

By default the build happens with gcc.

Query 1> Why gcc is default? Why not icc? Why icc location is not set in the $PATH? (Is it because I've installed parallel_studio_xe_2016 also? or it depends on type of license I've)

Query 2> When icc was forced to compiler, build failed. Why?

Query 3> The command "icc -fopenmp openmp2.c" (see attached code) gives correct multithread output (see below). Whereas, same code in IPP framework (i.e., when put in player.c of speech-codec) gives single threaded output. Why? How to get multithreaded output? Any code snippet similar to  attached one, that demonstrates IPP multithread features?

Query 4> Does icc perform better than gcc? (What is the meaning it is gcc compatible - icc version 15.0.3 (gcc version 4.8.3 compatibility)?)

 

(I've Xeon D1540 board.)

correct multithread output:

1
4
1
3
1

 

 

single threaded output:

1
1
1
1
1

 

 

Thank you,

Basawaraj

0 Kudos
2 Replies
Chao_Y_Intel
Moderator
688 Views

Basawaraj, 

It is right that sample code was legacy , and will not be supported. That code was also for old IPP releases. If you plan to check it, you need to maintain it by yourself. 

some quick note for your questions:  I think that sample code could be built both by Intel compiler, and by GCC. It need to add "--comp=intel" to use Intel build the code. 

Before you use Intel compiler,  have you set the environment for the compiler?  For example: 
>source /opt/intel/composer_xe_2015.x.xxx/bin/compilervars.sh intel64 

If you get error report with Intel compiler, what is the error? 

Regarding the threading here, it actually two things,  1) use internal IPP threading ( linking with threaded IPP libraries, it is not recommended),  2) Using the threading at the high level.  You are working on the threading by your code. 

It seems to me you are writing the your OpenMP threading code?    

When you build your threading code with IPP, are you also add the -fopenmp into the compiler flag?  For your threaded code, that flag needed to add for the compiler.

Thanks,
Chao

0 Kudos
Basawaraj_J_
Beginner
688 Views

Thanks.

Your tips worked, if not all, definitely few of them.

I got what I wanted from that reply.

I feel good to work with genius ones.

-Basawaraj

 

0 Kudos
Reply