Post on 13-Aug-2015
Sacando el maximo de tus
Apps con IA
Marcelo Lorenzati
ASDC - Argentina Software Design Center
Agenda
Breve historia, evolución y el rol de Intel en la tecnología
Información, recursos y contactos
Optimizaciones, consejos y buenas prácticas de desarrollo
Herramientas
Preguntas
Historia
Intel: Empresa fabricante de semiconductores creada en 1968, creadora del primer
procesador (4004)
Evolución
Evolución de los procesadores Intel, desde miles a billones de transistores en un
solo chip, en 42 años.
http://www.intel.com/content/www/us/en/history/history-intel-chips-timeline-poster.html
Evolución
http://www.intel.com/support/galileo/index.htm
Evolución
Evolución de los equipos con Intel Inside hacia la movilidad
Contribución al software abierto
https://01.org/projects
Contacto con los desarrolladores
Zona para desarrolladores Intel®
http://software.intel.com/es-es/
Foro de Preguntas del Hackaton
http://software.intel.com/es-es/node/472278
Optimizaciones, conceptos generales
1. Primero claridad antes que eficiencia
2. Estas pensando en optimizar? Espera!
3. Piensa en paralelismo
1. En los datos
2. En las tareas
3. En las instrucciones (acá te ayuda el
compilador y el micro)
4. Aprovecha herramientas y librerías
Concurrencia y paralelismo
Dos tareas en un procesador
de doble núcleo vs uno de
núcleo único.
Múltiples tareas en un
procesador de doble núcleo
Se usa paralelismo no solo para performance, sino como un método se separar dominios de un
problema.
Concurrencia y paralelismo
Sincronización de datos
entre tareas y procesos
Cuando no se usa paralelismo? Cuando el costo de implementar es mayor que el beneficio de provee.
Cual es ese costo? La sincronización y protección de los datos compartidoshttp://software.intel.com/sites/default/files/m/d/4/1/d/8/Gillespie-0053-AAD_Gustafson-Amdahl_v1__2_.rh.final.pdf
Paralelismo en datos
0-1
51h de video
0-15m 15-30m 30-45m 45-60m
45
-60
15
-30
30
-45
Paralelismo en tareas
Hilo principal – Orquestador
y parte visual
Mú
sica
Fís
ica
Lóg
ica
Optimizaciones, HTML5
• Webworkersvar worker = new Worker('task.js');
worker.postMessage(); //Ejecuta el worker por separado
• Animaciones CSS3 / HTML5 (la mayoría aceleradas por HW)<style>
div
{
width:100px;
transition:width 2s;
}
div:hover
{
width:300px;
}
</style>
• Librerias: – jquery, jqueryUi, bootstrap (client side scripting)
– cocos2D-HTML5, CraftyJs (gaming)
http://html5test.com/
http://www.html5rocks.com/en/tutorials/speed/html5/
http://www.html5rocks.com/en/tutorials/canvas/performance/
Optimización C/C++ - Librerías
Librerias de soporte de C++
Boost (http://www.boost.org/)
Frameworks de desarrollo de aplicaciones:
Qt (http://qt-project.org/)
GTK (http://www.gtk.org/)
WxWidgets (http:// www.wxwidgets.org/)
Webserver embebido
Mongoose (https://code.google.com/p/mongoose/)
Procesamiento de imágenes
OpenCV (http:// opencv.org)
Persistencia local
sqlite3 (http://www.sqlite.org/)
Imágenes 3D
Ogre (http://www.ogre3d.org)
Optimización C/C++ - Compilación y enlazado
Algunos parámetros de compilación: en GCC (GNU C Compiler) o en ICC( Intel C Compiler)
-O0 sin optimización
-O1 Optimizaciones escalares (por defecto)
-O2 Vectorización, transformación de bucles, inlining
-O3 La mas agresiva, se debe probar
incluye cache blocking, loop fusion, loop interchange
Optimización inter procedimiento: Analisis entre funciones sus fuentes
gcc –flto , icc -ipo
• Funciones inline
• Análisis de alineación
• Desambiguación
• Propagación de constantes
• Disposición y transformación de datos
Optimización C/C++ - Compilación y enlazado
Uso de librerías optimizadas
Gcc –lm
• Math (libm) ( acos, atan, ceil, log, pow, sin, etc)
• Math Kernel Library (MKL)
– Vectores y matrices
– Algebra lineal
– FFT
– Librería estadística (números aleatorios)
Manejo de punto flotante
• En gcc esta apagado por defecto, se habilita con –ffast-math
• En icc se habilita con –fp-model (fast / precise / strict)
SIMD: Single Instruction, Multiple Data
• Scalar mode
– one instruction produces
one result
– E.g. addss, (addsd)
• Vector mode– with AVX (or SSE) instructions
– one instruction can produce multiple
results
– E.g. addps, (addpd)
+
X
Y
X + Y
+
X
Y
X + Y
= =
x7+y7 x6+y6 x5+y5 x4+y4 x3+y3 x2+y2 x1+y1 x0+y0
y7 y6 y5 y4 y3 y2 y1 y0
x7 x6 x5 x4 x3 x2 x1 x0
SSE
Herramientas de optimización C/C++
Intel® Parallel Studio XE
Fase Herramienta Función Beneficio
Diseño
Intel®
Parallel
Advisor
for C++
Windows
Asistente de diseño con hilos
• Simplifica, desmistifica y acelera el diseño de aplicaciones con multihilo
Codificación
y depuración
Intel®
Composer
XE
Compiladores de C/C++ y Fortran
con librerías optimizadas
• Intel® Integrated Performance
Primitives
• Intel® Math Kernel Library
• Intel® Threading Building Blocks
• Intel@ Cilk™ Plus
• Permite alcanzar el rendimiento y
escalabilidad deseada aprovechando
beneficios multi-núcleo
VerificaciónIntel®
Inspector
XE
Análisis dinámico de memoria e
hilos para mejorar la calidad del
código
Análisis estático de código para
mejorar la calidad y confianza
• Incrementa la productividad, calidad y baja
costos.
• Encuentra defectos en memoria, hilos y
bugs antes de que sucedan.
Tune
Intel®
VTune™
Amplifier
XE
Generado de perfil para
optimización de aplicación y
escalabilidad
• Elimina conjeturas, salva tiempo y hace
fácil encontrar cuellos de botella del código
http://software.intel.com/en-us/articles/intel-software-evaluation-center/
20
Intel® Parallel Advisor – Overview
Discover, Analyze, Check, Add Parallelism
Analyzes the executing serial program as developers work through the methodology
Check SuitabilityEvaluates performance impact and implication of the parallel experiments
Survey TargetFocuses effort where it will pay off and targets coarse-grain parallelism
Annotate SourcesInserts annotations to sources to describe parallel experiments
Check CorrectnessFinds and resolves conflicts before parallelism is applied. Reduces debugging problems by defining safe and solid paths to parallelism
Design Phase
Models Intel® Threading Building Blocks, Intel® Cilk™ Plus, Microsoft*PPL, Windows* Threads, OpenMP*
10/7/2013
Intel® C++
Composer XE 2011 • Intel® C++ Compiler XE 12.1
• Intel® Threading Building Blocks
• Intel® Cilk™ Plus
• Intel® Math Kernel Library
• Intel® Integrated Performance
Primitives
Intel® Fortran
Composer XE 2011
• Intel® Fortran Compiler XE 12.1
• Intel® Math Kernel Library
• Intel® Integrated Performance
Primitives
Intel Composer XE - OverviewCompilers, Performance Libraries, Debugging Tools
• Leading Performance Optimizing Compilers
- Intel C++ and Fortran Compilers
- Intel® Integrated Performance Primitives, Intel® Math
Kernel Library libraries
- Profile-Guided Optimization (PGO)
- Interprocedural Optimization (IPO)
- Guided-auto parallelism (GAP)
- High-Performance Parallel Optimizer (HPO)
- SIMD Pragma
- C++ Array Notations
• Standard Support
- OpenMP*
- C++0x
- Support for key parts of the latest Fortran and C++
standards, Visual Studio* 2010 Shell for Visual Fortran*
• Compatibility – Mix and Match- Binary and source compatible with
Microsoft* Visual Studio* C++ and GCC*
Windows*, Linux*, Mac OS*
32-bit & 64-bit multicore processor support
Intel® AVX support
Supported Environments
Microsoft Visual Studio* 2005, 2008, 2010 Eclipse CDT and Mac XCode*
Intel® Inspector XE - Dynamic AnalysisDetects memory and threading errors
• Memory errors• Invalid Memory Accesses
• Memory Leaks
• Uninitialized Memory Accesses
• Improper usage of Memory API(s)
• Resource Leaks (Windows only)
• Threading Errors• Data Races
• Deadlock/Lock Hierarchy Violation
• Cross Stack Memory Accesses
No special compiles(dynamic binary instrumentation)
Analyze DLLs (source optional)
Runs threaded
32 and 64-bit OSs(e.g., Windows 7, RHEL 6)
Easy user interface
Where is my application…
Spending Time? Wasting Time? Waiting Too Long?
• Focus tuning on functions
taking time
• See call stacks
• See time on source
• See cache misses on your
source
• See functions sorted by
# of cache misses
• See locks by wait time
• Red/Green for CPU
utilization during wait
Intel® VTune™ Amplifier XE Performance Profiler
• Windows & Linux
• Low overhead
• No special recompiles
Advanced Profiling For Scalable Multicore Performance
Optimizaciones, conceptos avanzados
Manual de optimizacioneshttp://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-
optimization-manual.html
Consejos
• >60% de las classmates son dual boot
– Piensa en multiplataforma
• No siempre habrá conectividad constante de internet
– Modos offline, persistencia, etc.
• Tamaño de pantalla de 10.1”
– Diseña iconos y fuentes grandes
– No sobrecargues las pantallas con detalles, sepáralas
• Piensa en la batería
– Optimizar el procesamiento
– Usa sólo lo necesario
Copyright© 2013, Intel Corporation. All rights reserved.
*Other brands and names are the property of their respective owners
Presentación y
Links
Preguntas?