Intel C++ (Italiano)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Tango-preferences-desktop-locale-modified.pngThe translation of this article or section does not reflect the original text.Tango-preferences-desktop-locale-modified.png

Reason: Last updated in 2012 (223339), out of sync with English page (Discuss in Talk:Intel C++ (Italiano))

Installazione e uso di Intel® C++ Composer XE (formerly Intel® C++ Compiler Professional Edition) per Linux sotto Arch.

Prima di iniziare

Attenzione: I pacchetti compilati con icc dipenderanno da intel-openmp per poter essere eseguiti. Mentre intel-openmp dipende da intel-compiler-base; gli utenti devono avere entrambi i panchetti installati!

Creazione del pacchetto e installazione

intel-parallel-studio-xeAUR[broken link: package not found] è disponibile su AUR. Per poter costruire questo pacchetto è necessario ottenere una licenza per uso non commerciale direttamente dal sito di Intel registration che dovrà essere copiata nella $startdir prima di eseguire il makepkg. L'attuale PKGBUILD assembla 8 pachetti:

  • intel-compiler-base - Intel C/C++ compiler and base libs
  • intel-fortran-compiler - Intel fortran compiler and base libs (only Parallel Studio XE)
  • intel-openmp - Intel OpenMP Library
  • intel-idb- Intel C/C++ debugger
  • intel-ipp - Intel Integrated Performance Primitives
  • intel-mkl - Intel Math Kernel Library (Intel® MKL)
  • intel-sourcechecker - Intel Source Checker
  • intel-tbb - Intel Threading Building Blocks (TBB)
Nota: Un ambiente di lavoro minino richiede i pachetti intel-compiler-base e intel-openmp; se si desidera pure il compilatore fortran si deve installare intel-fortran-compiler.

Using icc with makepkg

Nota: Non tutti i pacchetti si possono compilare coi compilatori intel senza aver prima modificato i sorgenti.

Attualmente non ci sono guide ufficiali per usare icc. Questa sezione è intesa per ricevere i suggerimenti degli utenti. Se lo ritieni necessario apri una nuova sottosezione in questa pagina o completa quelle esistenti.

Metodo 1

Modifica /etc/makepkg.conf inserendo il seguente codice sotto la linea esistente CXXFLAGS per attivare icc con makepkg. Non sono necessarie altre opzioni particolari per attivare icc con makepkg.

_CC=icc
if [ $_CC = "icc" ]; then
  export CFLAGS="-fast -pipe -gcc"
  export CXXFLAGS="${CFLAGS}"
  export CC="icc"
  export CXX="icpc"
  export HOSTCC="icc"
fi
Nota: per passare da icc ad gcc o viceversa si deve commentare o decomentare la linea dove si definisce la variabile _CC.
Nota: In alcuni casi le direttive in /etc/makepkg.conf vengono ignorate e la compilazione avviene con gcc, quindi dopo aver costruito il pachetto ti devi assicurare che questo sia stato effettivamente compilato con icc

Per verificare che un pacchetto sia stato effettivamente compilato con icc:

  • Dare il comando ldd [your_app] | grep intel Se l'applicativo usa un libreria dinamica che si trova nella directory /opt/intel/lib/ significa che è stato effettivamente compilato con icc
  • Un altro metodo è quello di osservare l'output durante la costruzione del pacchetto e vedere se usa icc o icpc come comando.
  • L'ultimo metodo è quello di vedere se i warning sono nello stile di icc.

icc CFLAGS

Generalmente, icc supporta una buona parte dei CFLAGS di gcc ed è piuttosto tollerante coi flags di gcc che non implementa. In moltissimi casi si possono ignorare senza problemi i warning. Per una lista completa delle opzioni si consiglia di consultare la man page di icc , o dando il comando:

icc --help

-xX

Da usare per generare un codice ottimizzato sulla propria CPU. Se non si è sicuri di quali flags usare si deve andare a vedere la sezione flags nel file /proc/cpuinfo. Nell'esempio sotto, SSE4.1 è la scelta coretta:

$ cat /proc/cpuinfo  | grep -m 1 flags
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush 
dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs 
bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr
pdcm sse4_1 lahf_lm dts tpr_shadow vnmi flexpriority
  • -xHost
  • -xSSE2
  • -xSSE3
  • -xSSSE3
  • -xSSE4.1
  • -xSSE4.2
  • -xAVX
  • -xCORE-AVX-I
  • -xSSSE3_ATOM
Suggerimento: Se si usa l'opzione -xHost icc decide automaticamente quale è la configurazione ottimale per la CPU.

-Ox

Come con gcc. x è una delle seguenti opzioni:

  • 0 - disabilita ogni ottimizzazione
  • 1 - Ottimizza per avere una massimizzazione della velocità, ma disabilita alcune opzioni che accrescono la dimensione del eseguibile.
  • 2 - Ottimizza per avere una massimizzazione della velocità (DEFAULT)
  • 3 - Ottimizza per avere una massimizzazione della velocità e abilita una serie di ottimizzazioni molto aggressive (raccomandato per applicazioni numeriche intensive)

-w

Come con gcc:

  • -w - disabilita tutti i warnings (raccomandato per la compilazione dei pacchetti)
  • -Wbrief - stampa un warning di una linea
  • -Wall - abilita tutti i warning
  • -Werror - i warning vengono interpretati come errori.

Software compilato con Intel

Qui sotto riporto una lista di applicativi che si è tentato di compilare con Intel compiler, la compilazione in genere va fatta usando i PKGBUILD presenti in ABS.

Applicativo Compilazione Note
Gimp 2.8 OK Funziona col Metodo 1
MySql OK Funziona col Metodo 1
SqlLite OK Funziona col Metodo 1
xaos OK Funziona col Metodo 1
mplayer Fallita Tipo di compilatore non riconosciuto
VLC Non riuscita Ci sono problemi con le opzioni di compilazione
python-numpy OK si deve modificare il PKGBUILD. python-numpy-mklAUR
python-scipy OK si deve modificare il PKGBUILD. python-scipy-mklAUR

Leggenda:

OK La compilazione con ICC funziona senza intoppi
OK La compilazione funziona ma sono necessari degli interventi sul PKGBUILD
Non riuscita La compilazione potrebbe funzionare, ma si sono verificati degli errori durante la compilazione.
Non consigliata La compilazione funziona, ma non è consigliabile usare ICC
Fallita Non si riesce a compilare.