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:
single threaded output:
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.