Intel C++

Installation and basic usage of Intel Performance Libraries and other tools for Linux on Arch. They are included in the Intel Parallel Studio XE (formerly Intel C++ Composer XE or Intel C++ Compiler Professional Edition).

Some libraries and tools are free and open source, other require a license file which can be obtained upon registration.

Free libraries

Intel Parallel Studio XE

Intel Parallel Studio XE packages are available in the AUR. The PKGBUILD uses a free download link, but a license file needs to be obtained in order to actually use (most of) the packages. Intel offers a free license for open-source contributors, students, researchers, and educators. The requisite license file is emailed to users upon registration and should be copied into the $startdir prior to building the packages.

The intel-parallel-studio-xe PKGBUILD assembles 10 split packages:

Using icc with makepkg

There is currently no official guide to using icc with makepkg. This section is meant to capture various methods suggested by users. Please make a new sub-section with your suggested method titled as such.

Method 1 (12/08/2012)

Modify inserting the following code under the existing line defining CXXFLAGS to enable makepkg to use icc. No special switches are needed when calling makepkg to build.

Method 2

Insert the following code anywhere near the top of the PKGBUILD:

groups=('modified')
export CC="icc"
export CXX="icpc"
export CFLAGS="-march=native -O3 -no-prec-div -fno-alias -pipe"
export CXXFLAGS="-march=native -O3 -no-prec-div -fno-alias -pipe"
export LDFLAGS="-Wl,-O1,--sort-common,--as-needed"
export AR="xiar"
export LD="xild"

Add intel-openmp and to the array.

icc CFLAGS

In general, icc supports many of the same CFLAGS gcc supports and is also pretty tolerant to gcc flags it cannot use. In most cases it will happily ignore the flag warning the user and moving on. For an exhaustive list and explanation of available compiler flags, consult the icc manpage or better yet by invoking the compiler with the help flag:

icc --help

-xX

Use to generate specialized code to run exclusively on processors supporting it. If unsure which option to use, simply inspect the flags section of . In the example below, SSE4.1 would be the correct selection:

$ grep -m 1 flags /proc/cpuinfo
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

-Ox

Same behavior as gcc. x is one of the following options:

  • 0 - disables optimizations
  • 1 - optimize for maximum speed, but disable some optimizations which increase code size for a small speed benefit
  • 2 - optimize for maximum speed (DEFAULT)
  • 3 - optimize for maximum speed and enable more aggressive optimizations that may not improve performance on some programs (recommended for math intensive looping programs)

-w

Similar to the gcc:

  • -w - disable all warnings (recommended for the package compilation)
  • -Wbrief - print brief one-line diagnostics
  • -Wall - enable all warnings
  • -Werror - force warnings to be reported as errors

Software compiled with Intel C / C++

In the following table we report a list of packages from the official repository that we have tried to compile with the intel C/C++ compiler. The compilation should be done by using the PKGBUILD from ABS.

ApplicationMethod 1Comments
xvidcore
kdebase
conky 1.9.0
nginx 1.4.2
gzip 1.6
xz
lz4Must edit the PKGBUILD.
minetest
opus
zlib 1.2.8Causes bugs in some applications, like tightvnc
Gimp 2.8 / 2.9
Pacman 4.0.3
x264
MySql
SqlLite
lame
xaos
gegl
VLCUnsuccessfulThere is some problem with the compiler flags
bzip2UnsuccessfulThere is some problem with the compiler flags
mplayerDoes not recognize the Intel compiler
optipngComment out in
python-numpyMust edit the PKGBUILD.
python-scipyMust edit the PKGBUILD.
QtWe must add the option (or ) in the configure command
systemdFailundefined reference to `server_dispatch_message'

Legend:

The compilation with ICC works!
The compilation works but is needed an editing of the PKGBUILD
UnsuccessfulThe compilation may work, but there are some compilations errors.
The compilation works, but is not recommended
FailIt is impossible to compile the PKG with ICC.
It is unsuccessful or fails with older CFLAGS.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.