Aurelio Rodríguez
[email protected]
Agenda
Administración: (1 horas)
Instalación: Procedimiento, actualización y detalles de interés
Configuración entorno: Variables de entorno de interés.
Compiladores: (4 horas)
Intel C++ Compiler XE 14.0
Introducción
Ejemplos básicos de compilación
Opciones avanzadas:
Ejemplos optimizaciones: HLO, IPO y PGO
Ejemplos soporte OpenMP
Ejemplos compatibilidad y portabilidad
Ejemplos paralelización y vectorización automática
Intel Fortran Compiler XE 14.0
Introducción y ejemplos básicos ejecución.
Agenda
Intel Debugger: (2 horas)
Introducción
Uso a través de la GUI/eclipse/CLI
Ejemplos de uso en aplicaciones paralelas: multihilo (OpenMP) y MPI
Intel Math Kernel Library: (2 horas)
Introducción
Linkado
Ejemplos de rendimiento
Uso ScaLAPACK
Intel MPI: (1 hora)
Introducción
Referencia de comandos: compilador, ejecución, gestión de procesos, información del
procesador. Ejemplos.
Agenda
Intel MPI: (1 hora)
Tuning: automático, pinning y binding y variables de entorno. Ejemplos.
Intel Trace Analyzer and Collector: (1 hora)
Introducción
Collector: Uso, Instrumentación a nivel de usuario. Ejemplos.
Analyzer: Introducción, GUI, CLI y conceptos. Ejemplos.
Benchmarks: (3 horas)
¿Casos de usuario?
Rendimiento compiladores, MKL y MPI.
Benchmarks sintéticos y aplicaciones.
Documentación Actualizada
Última versión de la documentación en:
https://oc.cesga.es/public.php?service=files&t=03888d31fc9363a06320aad01c2f2c6e
http://goo.gl/rC7fqE
Agenda
Administración: (1 horas)
Instalación: Procedimiento, actualización y detalles de interés
Configuración entorno: Variables de entorno de interés.
Compiladores: (4 horas)
Intel C++ Compiler XE 14.0
Introducción
Ejemplos básicos de compilación
Opciones avanzadas:
Ejemplos optimizaciones: HLO, IPO y PGO
Ejemplos soporte OpenMP
Ejemplos compatibilidad y portabilidad
Ejemplos paralelización y vectorización automática
Intel Fortran Compiler XE 14.0
Introducción y ejemplos básicos ejecución.
Administración: Instalación
Registro de la licencia:
Ver documento adjunto (DO_Registro_intel.pdf)
Requisitos previos:
paquetes de desarrollo gnu (especialmente gcc-c++)
Oracle JDK
Descarga de productos:
completa + de 3GB
Se recomienda el uso del “online installer” siempre que se tenga acceso a internet en el servidor de
instalación.
Intel Cluster Studio 2013_sp1 for Linux
Intel® C++ Composer XE for Linux
l_ccompxe_online_2013_sp1.0.080.sh
Intel® Fortran Composer XE for
Linux
Intel® MPI Library
l_ccompxe_online_2013_sp1.0.080.sh
l_mpi_p_4.1.1.036.tgz (install.sh)
Intel® Trace Analyzer and Collector
l_itac_p_8.1.3.037.tgz (install.sh)
Administración: Instalación
Directorios:
/apps/intel
bin : comandos principales
composerxe : link a composer_xe_2013_sp1
composer_xe_2013_sp1 : Contiene links a la ultima release de la versión
composer_xe_2013_sp1.0.080 : Ultima versión
impi : Directorio con las versiones de impi
include : link a composerxe/include
ipp : link a composerxe/ipp (
itac : directorio de versiones del Trace analyzer and Collector
lib : link a composerxe/lib (librerías de los compiladores)
man : link a composerxe/man (man pages)
mkl : link a composerxe/mkl (Intel MKL)
mpirt : link a composerxe/mpirt (Intel MPI runtime)
tbb : link a composerxe/tbb (Threads building blocks)
Administración: Entorno
Variables de entorno:
source /apps/intel/composerxe/bin/compilervars.sh
(configura compiladores, debugger, mkl, ipp y tbb)
source /apps/intel/impi/4.1.1.036/bin64/mpivars.sh
(configura impi)
source /apps/intel/itac/8.1.3.037/bin/itacvars.sh
(configura itac)
Todas recogidas en el script /apps/intel/env.sh
Agenda
Administración: (1 horas)
Instalación: Procedimiento, actualización y detalles de interés
Configuración entorno: Variables de entorno de interés (si utilizan modules, se incluirá
la información para su configuración).
Compiladores: (4 horas)
Intel C++ Compiler XE 14.0
Introducción
Ejemplos básicos de compilación
Opciones avanzadas:
Ejemplos optimizaciones: HLO, IPO y PGO
Ejemplos soporte OpenMP
Ejemplos compatibilidad y portabilidad
Ejemplos paralelización y vectorización automática
Intel Fortran Compiler XE 14.0
Introducción y ejemplos básicos ejecución.
Compiladores: Intel C++
Rendimiento tanto en serie como paralelo para procesadores Intel.
●Introduce facilidades para la vectorización y la programación paralela para simplificar el desarrollo
de aplicaciones con alto rendimiento.
●Destacan entre estas características el soporte de nuevas funcionalidades de OpenMP 4.0 y la
posibilidad de autoparalelización.
●Mantiene compatibilidad con los compiladores más usados.
Documentación completa:
http://software.intel.com/en-us/compiler_14.0_ug_c
Compiladores: Intel C++
http://software.intel.com/intel_c_composer_xe_pb_en
Compiladores: Intel C++
INT:
Intel Compiler 14.0:
C/C++: -xAVX -ipo -O3 -no_prec-div -static -parallel -opt-prefecth -auto-p32
GCC 4.8.1:
C: -m64 -Ofast -ffast-math -flto -march=native -mfpmath=sse -funroll-all-loops -static -ftree-
parallelize-loops=16
C++: m64 -Ofast -ffast-math -flto -march=native -mfpmath=sse -funroll-all-loops
FP Speed:
Intel Compiler 14.0:
C/C++: -xAVX -ipo -O3 -no_prec-div -static -parallel -opt-prefecth -ansy-alias
GCC 4.8.1:
C: -m64 -Ofast -ffast-math -flto -march=native -mfpmath=sse -funroll-all-loops -static -ftree-
parallelize-loops=16
C++: m64 -Ofast -ffast-math -flto -march=native -mfpmath=sse -funroll-all-loops
Agenda
Administración: (1 horas)
Instalación: Procedimiento, actualización y detalles de interés
Configuración entorno: Variables de entorno de interés (si utilizan modules, se incluirá
la información para su configuración).
Compiladores: (4 horas)
Intel C++ Compiler XE 14.0
Introducción
Ejemplos básicos de compilación
Opciones avanzadas:
Ejemplos optimizaciones: HLO, IPO y PGO
Ejemplos soporte OpenMP
Ejemplos compatibilidad y portabilidad
Ejemplos paralelización y vectorización automática
Intel Fortran Compiler XE 14.0
Introducción y ejemplos básicos ejecución.
Compiladores: Intel C++
Uso básico:
Comandos: ‘icc’ para C, y ‘icpc’ para C++
Opciones “-O” compatibles con gcc pero no idénticos
-O2 es el nivel de optimización por defecto (en gcc es -O0)
-O* no implica los mismos conjuntos de opciones para gcc que para Intel pero los conceptos son
similares:
-O0 : para depuración
-O2 : por defecto
-O3 : optimizaciones avanzadas
icc –help, icpc -help proporciona la lista extensa de opciones
man icc
man icpc
Preprocessing
Semantic parsing
Optimization
Code generation
Linking
Compiladores: Intel C++
Ejemplos:
Compilar matrix.c sin optimización y con -O1 y comparar resultados
Ejecutar y comparar tiempos.
/apps/intel/composerxe/Samples/en_US/C++/optimize
Compilar int_sin.c con -O0 y -O1
Ejecutar y comparar resultados.
Agenda
Administración: (1 horas)
Instalación: Procedimiento, actualización y detalles de interés
Configuración entorno: Variables de entorno de interés (si utilizan modules, se incluirá
la información para su configuración).
Compiladores: (4 horas)
Intel C++ Compiler XE 14.0
Introducción
Ejemplos básicos de compilación
Opciones avanzadas:
Ejemplos optimizaciones: HLO, IPO y PGO
Ejemplos soporte OpenMP
Ejemplos compatibilidad y portabilidad
Ejemplos paralelización y vectorización automática
Intel Fortran Compiler XE 14.0
Introducción y ejemplos básicos ejecución.
Compiladores: Intel C++
Disable optimization
Optimize for speed (no code size increase)
Optimize for speed (default)
High-level optimizer, including prefetch,
unroll
Create symbols for debugging
Inter-procedural optimization
Profile guided optimization (muli-step build)
Optimize for speed across the entire
program
**warning: -fast def’n changes over time
OpenMP support
Automatic parallelization
-O0
-O1
-O2
-O3
-g
-ipo
-prof-gen
-prof-use
-fast (-ipo -O3 -no-prec-div -static -xHost)
-openmp
-parallel
Compiladores: Intel C++ y optimizaciones HLO
“High-Level Optimizer” (HLO):
Opciones de Compilación: -O2 y -O3
Optimizaciones a nivel de lazo/bucle:
Loop unrolling
Cache blocking
Prefetching
Análisis de dependencias agresivo:
Determina si es seguro o no reordenar o paralelizar ciertas ordenes
Substitución de escalares:
Su objetivo es reducir referencias a memoria con referencias a registros
Compiladores: Intel C++ y optimizaciones HLO
Ejemplos:
Compilar matrix.c con -O[2|3] sin vectorización y comparar resultados
Ejecutar y comparar tiempos.
/apps/intel/composerxe/Samples/en_US/C++/optimize
Compilar int_sin.c con -O2 y -O3 sin vectorización
Ejecutar y comparar resultados.
Compiladores: Intel C++ y optimizaciones HLO
Ver man page: man icc
-O3:
Performs O2 optimizations and enables more aggressive loop transformations such as Fusion, Block-
Unroll-and-Jam, and collapsing IF statements.
This option may set other options. This is determined by the compiler, depending on which operating
system and architecture you are using. The options that are set may change from release to release.
When O3 is used with options -ax or -x (Linux OS) or with options /Qax or /Qx (Windows OS), the compiler
performs more aggressive data dependency analysis than for O2, which may result in longer compilation
times.
The O3 optimizations may not cause higher performance unless loop and memory access
transformations take place. The optimizations may slow down code in some cases compared to O2
optimizations.
The O3 option is recommended for applications that have loops that heavily use floating-point
calculations and process large data sets.
Compiladores: Intel C++ y optimizaciones IPO
Interprocedural optimization (IPO): Análisis topológico de la aplicación
-ip :
Sólo para el fichero fuente actual.
-ipo :
Optimizaciones a través de todos o varios ficheros
Enabled optimizations:
●Procedure inlining (reduced function call overhead)
●Procedure reordering
●Interprocedural dead code elimination and constant propag
Comentarios de: Intel Cluster studio (Herramientas habituales) (0)
No hay comentarios