INTEL CDK
Description
The Intel development kit is a set of tools for development of parallel (supports OpenMP and MPI parallel models) as well as serial programs programmed in C, C++, FORTRAN 77, Fortran 95 and High Performance Fortran (HPF). In addition to compilers and support libraries, the kit includes a debugger and a profiler with support for parallel programs, optimized mathematical libraries BLAS and LAPACK and ScaLAPACK parallel library.
Included tools:
- Intel® C/C++ Compiler -- C/C++ compilers
- Intel® Fortran Compiler -- Fortran compiler
- Intel® Debugger (IDB) -- a tool for debugging programs (including parallel/distributed ones) written in C, C++, and Fortran
- Intel® Cilk™ Plus -- an extension of C/C++ compilers that simplifies an implemention of parallel applications
- Intel® MKL (Math Kernel Libraries) -- a computing math library of highly optimized, extensively threaded math routines for applications that require maximum performance (core math functions include BLAS, LAPACK, ScaLAPACK1, sparse solvers, fast Fourier transforms, vector math, and more)
- Intel® IPP (Integrated Performance Primitives) -- an extensive library of multicore-ready, highly optimized software functions for multimedia, data processing, and communications applications
- Intel® TBB (Threading Building Blocks) -- runtime library that simplifies the writing of multithreaded applications in the C++ environment
- Intel® Trace Analyzer and Collector -- graphical tool for understanding MPI application behavior, quickly finding bottlenecks, improving correctness, and achieving high performance for parallel cluster applications based on Intel architecture
License
Can be used on MetaCentrum nodes by any MetaCentrum member.
Intel Parallel Studio XE 2019 Cluster Edition Update 3(module intelcdk-19u3
)
Intel Parallel Studio XE 2017 Cluster Edition Update 1(module intelcdk-17.1
)
- Intel® C/C++/Fortran Compiler, Intel® Debugger, Intel® Cilk™ Plus, Intel® MKL, Intel® IPP, Intel® TBB -- 2x permanent network-floating license
- Intel® Fortran Compiler -- 2x permanent network-floating license
Intel Parallel Studio XE 2017 Cluster Edition (module intelcdk-17
)
- Intel® C/C++/Fortran Compiler, Intel® Debugger, Intel® Cilk™ Plus, Intel® MKL, Intel® IPP, Intel® TBB -- 2x permanent network-floating license
- Intel® Fortran Compiler -- 2x permanent network-floating license
Intel Parallel Studio XE 2016 Cluster Edition (module intelcdk-16
)
- Intel® C/C++/Fortran Compiler, Intel® Debugger, Intel® Cilk™ Plus, Intel® MKL, Intel® IPP, Intel® TBB -- 2x permanent network-floating license
- Intel® Fortran Compiler -- 2x permanent network-floating license
Intel CDK version 15.0 (module intelcdk-15
) -- newly called Intel Parallel Studio XE 2015 Cluster Edition:
- Intel® C/C++/Fortran Compiler, Intel® Debugger, Intel® Cilk™ Plus, Intel® MKL, Intel® IPP, Intel® TBB -- 2x permanent network-floating license
- Intel® Fortran Compiler -- 2x permanent network-floating license
Intel MPI verze 5.0.1 (module intelmpi-5.0.1
)
- Intel® Trace Analyzer and Collector
Intel CDK version 14.0 (module intelcdk-14
):
- Intel® C/C++/Fortran Compiler, Intel® Debugger, Intel® Cilk™ Plus, Intel® MKL, Intel® IPP, Intel® TBB -- 2x permanent network-floating license
- Intel® Fortran Compiler -- 2x permanent network-floating license
Intel C/C++ Composer version 13.1 (module intelcdk-13
):
- Intel® C/C++ Compiler, Intel® MKL, Intel® TBB -- 4x permanent network-floating license
Intel CDK version 12.1 (module intelcdk-12
):
- Intel® C/C++ Compiler, Intel® Debugger, Intel® Cilk™ Plus, Intel® MKL, Intel® IPP, Intel® TBB -- 4x permanent network-floating license
- Intel® Fortran Compiler -- 2x permanent network-floating license
Usage
Upcoming modulesystem change alert!
Due to large number of applications and their versions it is not practical to keep them explicitly listed at our wiki pages. Therefore an upgrade of modulefiles is underway. A feature of this upgrade will be the existence of default module for every application. This default choice does not need version number and it will load some (usually latest) version.
You can test the new version now by adding a line
source /cvmfs/software.metacentrum.cz/modulefiles/5.1.0/loadmodules
to your script before loading a module. Then, you can list all versions of intelcdk and load default version of intelcdk as
module avail intelcdk/ # list available modules module load intelcdk # load (default) module
If you wish to keep up to the current system, it is still possible. Simply list all modules by
module avail intelcdk
and choose explicit version you want to use.
Initialize an environment and start the required program (icc, icpc, ifort, idb, ...) in accordance with the documentation.
module add intelcdk-17.1 # Intel Parallel Studio XE 2017 Cluster Edition Update 1
module add intelcdk-17 # Intel Parallel Studio XE 2017 Cluster Edition
module add intelcdk-16 # Intel Parallel Studio XE 2016 Cluster Edition
module add intelcdk-15 # Intel CDK version 15.0
module add intelcdk-14 # Intel CDK version 14.0
module add intelcomp-13 # Intel Composer version 13.1
module add intelcdk-12 # Intel CDK version 12.1
Optimizing compilation
Except the basic optimization options (-O1, -O2, -O3) you can use CPU instructions optimization (automatic CPU dispatching). This is Intel compiler unique ability of targeting the different instruction sets of different processors. GCC optimizes only for one processor instruction set, the application is not able to "choose the best" when running. If you need to run your code on all MetaCentrum clusters, add the following to one of CFLAGS, FFLAGS or CPPFLAGS:
-msse4.2 -axAVX,CORE-AVX2
You can find more information on this page.
WARNING: Be careful if you plan to add the -fast flag, which sets -xHost (and other options) automatically during compilation. If you place -fast after -axCORE-AVX2 -xSSE4.2, -xHost takes precedence over -axCORE-AVX2 -xSSE4.2, and the executable is generated for the compilation host processor. [1]
Linking MKL libraries
Simple way, how to get needed linking parameters provides Intel MKL link advisor.
Note: Intel FFTW libraries are the part of MKL since version 10. From that version it is sufficient to link only MKL and not bother with other wrappers.
Linking examples
These examples assumes using of intelcdk-15 module. All libraries are accessible at $MKLROOT/lib/intel64, differences between LP and ILP versions are described in the article Using the ILP64 Interface vs. LP64 Interface on Intel pages.
Following parameters can be variously combined.
- Using basic math libraries [2]:
export LDFLAGS="-limf -lm"
- Using FFTW:
export LDFLAGS="-L$MKLROOT/lib/intel64 -lfftw3xc_intel"
Please note that libfftw3xc is a FFTW3 C wrapper and libfftw3xf is FFTW3 Fortran wrapper.
- Using OpenMP:
export LDFLAGS="-L$MKLROOT/lib/intel64 -qopenmp"
- Using BLAS, LAPACK:
export LDFLAGS="-L$MKLROOT/lib/intel64 -lmkl_blas95_lp64 -lmkl_lapack95_lp64"
or (if not sufficient) try the full specification
export LDFLAGS="-L$MKLROOT/lib/intel64 -L$MKLROOT/../../../lib/intel64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lmkl_blas95_lp64 -lmkl_lapack95_lp64"
Please note that Intel MKL ILP64 libraries use the 64-bit integer type (necessary for indexing large arrays, with more than 231-1 elements), whereas the LP64 libraries index arrays with the 32-bit integer type. There are both library types available compiled by Intel compiler [3]. If you need BLAS and LAPACK compiled by gfortran, please use the path /software/intelcdk-15/mkl/lib/intel64/gfortran47 for the proper files. We can make available more versions of these libraries.
- Using SCALAPACK (LAPACK with MPI support), mandatory addition of openmpi-1.8.2-intel module:
export LDFLAGS="-L$MKLROOT/lib/intel64 -lmkl_blacs_openmpi_lp64 -lmkl_scalapack_lp64"
- Linking libraries path directly to program (avoid possible LD_LIBRARY_PATH issues)
make LDFLAGS=-Wl,-R/afs/ics.muni.cz/software/intelcdk-15/composerxe/lib/intel64
ld: cannot find -lompstub
From certain version of Intel compiler is used the library iomp5 instead of ompstub. So with intelcdk-15 use -liomp5 instead of -lompstub.
Programs and environment variables
Quick overview of the most used programs in module to ease you the searching in man pages.
Program | Description | Corresponding environment variables | Notes |
---|---|---|---|
icc | preprocessor, compiler, assembler and linker for C | CC="icc", CPP="icc -E" | |
icpc | preprocessor, compiler, assembler and linker for C++ | CXX="icpc", CXXCPP="icpc -E" | |
ifort | preprocessor, compiler, assembler and linker for Fortran 77 | F77="ifort -f77rtl" | default behavior of ifort is like Fortran 90 compiler |
ifort | preprocessor, compiler, assembler and linker for Fortran 90/95 | F90="ifort", FC="ifort" | default |
GCC and ICC interaction
Program parts can be compiled with different compilers and then link them together. Nice description is on Intel pages.
Documentation
Documentation is available on producer's WWW server (Support tab) or locally in the relevant directories:
- version 17.1:
/software/intelcdk-17.1/compilers_and_libraries/linux/documentation/en/
- version 17.0:
/software/intelcdk-17/compilers_and_libraries/linux/documentation/en/
- version 16.0:
/software/intelcdk-16/compilers_and_libraries/linux/documentation/en/
- version 15.0:
/software/intelcdk-15/composer_xe_2015.0.090/Documentation/
- version 14.0:
/software/intelcdk-14/composer_xe_2013_sp1.0.080/Documentation/
- version 13.1:
/software/intelcomp-13/composer_xe_2013.5.192/Documentation/
- version 12.1:
/software/intelcdk-12/composer_xe_2011_sp1.6.233/Documentation/
- version 11.0:
/software/ict-3.2.020/<PRODUKT>/11.0.074/Documentation/
- version 9.0:
/software/intel-9.0/amd64_linux26/doc/
- version 8.1:
/software/intelcomp-8.0/i386/<PRODUKT>/doc/
Homepage
URL: http://software.intel.com/en-us/articles/intel-sdp-products/