bwUniCluster : numlib/mkl/11.3.4

Suchen (ALLE CLUSTER)

Cluster-Übersicht
Suchen (pro Cluster)
 
Ankündigungen
Neue Programme  < 14 Tage
alles anzeigen/reset

Cluster-Verwaltung

Hilfe
Login für
Software-Admins
zurück
 

bwHPC Links
  E-Mail an CIS-Admin
  bwHPC Support-Portal
  bwHPC WIKI
  bwHPC Hauptseite
zurück  Dieses Programm auf allen Clustern suchen
Kategorie/Name/Versionnumlib/mkl/11.3.4
ClusterbwUniCluster      (für ALLE verfügbar!)
Nachricht/Übersicht
Konflikte
Preregs =Abhängigkeiten
conflict numlib/mkl
LizenzCommercial(install-doc/EULA.txt)
URL
What-isnumlib/mkl/11.3.4 : Intel(R) Math Kernel Library MKL (BLAS, LAPACK, FFTW, ...) version 11.3.4
Hilfe-Text
This module provides the Intel(R) Math Kernel Library (MKL)
version 11.3.4, a fast and reliable implementation
of BLAS/LAPACK/FFTW (see also 'http://software.intel.com/en-us/intel-mkl/').

The preferable compiler for this MKL version is 'compiler/intel/16.0'. Linking
with other compilers like GNU, PGI and SUN is possible. The desired compiler
module (exception system GNU compiler) has to be loaded before using MKL.

Local documentation:

  See dir  $MKL_DOC_DIR = /opt/bwhpc/common/compiler/intel/compxe.2016.4.258/documentation_2016/en/mkl/common

Linking examples (ifort compiler with support for blas and lapack):

* Dynamic linking of myprog.f and parallel MKL supporting the LP64 interface:

  ifort myprog.f -L${MKL_LIB_DIR} -I${MKL_INC_DIR}            \
        -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread

* Dynamic linking of myprog.f and sequential MKL supporting the LP64 interface:

  ifort myprog.f -L${MKL_LIB_DIR} -I${MKL_INC_DIR}            \
        -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread

* Hints for linking sequential programs with other compilers:

  PGI: pgf90    -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread
  GNU: gfortran -lmkl_gf_lp64    -lmkl_sequential -lmkl_core -lpthread
  SUN: f90      -lmkl_gf_lp64    -lmkl_sequential -lmkl_core -lpthread

* Hints for linking parallel programs with other compilers:

  PGI: pgf90    -lmkl_intel_lp64 -lmkl_pgi_thread -lmkl_core -lpthread -mp
  GNU: gfortran -lmkl_gf_lp64    -lmkl_gnu_thread -lmkl_core -lpthread
  SUN: f90      -lmkl_gf_lp64    -lmkl_gnu_thread -lmkl_core -lpthread

* Static linking of myprog.f and parallel MKL supporting the LP64 interface:

  ifort myprog.f -L${MKL_LIB_DIR} -I${MKL_INC_DIR}            \
        -Wl,--start-group ${MKL_LIB_DIR}/libmkl_intel_lp64.a   \
                          ${MKL_LIB_DIR}/libmkl_intel_thread.a \
                          ${MKL_LIB_DIR}/libmkl_core.a         \
        -Wl,--end-group   -liomp5 -lpthread

* Static linking of myprog.f and sequential MKL supporting the LP64 interface:

  ifort myprog.f -L${MKL_LIB_DIR} -I${MKL_INC_DIR}            \ 
        -Wl,--start-group ${MKL_LIB_DIR}/libmkl_intel_lp64.a   \
                          ${MKL_LIB_DIR}/libmkl_sequential.a   \
                          ${MKL_LIB_DIR}/libmkl_core.a         \
        -Wl,--end-group   -lpthread

* Intel compiler options for static linking:
      '-static -Bstatic' or '-static-intel -static-gnu -Bstatic'

* If the -Wl,... statments of the static linking examples do not work (e.g.
  -Wl,... is lost due to a complex build system), one can put the libraries
  in a GROUP statement within a library container file. Example:
      echo 'GROUP (libmkl_intel_lp64.a libmkl_intel_thread.a libmkl_core.a)' > libmy_group.a
  Thereafter linking with -lmy_group should work as follows:
      ifort myprog.f -L${MKL_LIB_DIR} -I${MKL_INC_DIR}            \
                     -L`pwd` -lmy_group -liomp5 -lpthread
  The same effect but with an absolut library name:
      ifort myprog.f -L${MKL_LIB_DIR} -I${MKL_INC_DIR}            \
                     `pwd`/libmy_group.a -liomp5 -lpthread

* For integer-size 64 support (Fortran): Use '_ilp64' instead of '_lp64'.
  For details see pdf documentation.

* Depending on the chosen integer size, you might need one additional
  include directory for Fortran programs:
             -I${MKL_INC_DIR}/intel64/lp64/
             -I${MKL_INC_DIR}/intel64/ilp64/

* Static FFTW2/3 C/Fortran interfaces can be found in dir
    ${MKL_HOME}/interfaces/
  Examples:
    Link to FFTW3 Fortran interface with GNU compiler and ilp64 support:
      ${MKL_HOME}/interfaces/fftw3xf/libfftw3xf_intel64_double_i8_gnu47.a
    Link to FFTW3 Fortran interface with Intel compiler and lp64 support:
      ${MKL_HOME}/interfaces/fftw3xf/libfftw3xf_intel64_double_i4_intel150.a
  The Intel FFTW interfaces requires the Intel MKL library (e.g. it does
  not work with ACML library). Usually it is not a problem to use a
  different compiler version, e.g. to use _gnu41.a with gnu 4.3 compiler.
  See dir ${MKL_HOME}/interfaces/ for other interfaces (fftw2/3 Fortran/C).
  Compiler option for include files: -I${MKL_INC_DIR}/fftw

Threads can be controlled via OMP_NUM_THREADS and MKL_NUM_THREADS. Usually the
performance gain is small and it is not worth to waste additional cores: So in
many cases 'OMP_NUM_THREADS=1' is a good choice or even better simply use the
sequential version. Nevertheless in some cases the performance gain can be high.
So one should always benchmark several different thread setups. If threading is
implemented in your program by another method, e.g. OpenMP, and your program
should have the sole control over the threads, you can disable MKL threading via
'MKL_NUM_THREADS=1' and enable threads in your prog by e.g. 'OMP_NUM_THREADS=4'.

The environment variables and commands are available after loading this module.
In case of problems, please contact 'bwunicluster-hotline (at) lists.kit.edu'.
SupportbwHPC Support-Portal
Installationsdatum05.10.2017
Löschdatum
Best-Practice-Wiki