Sesión Técnica. Sacando el máximo de tus Apps con IA

26
Sacando el maximo de tus Apps con IA Marcelo Lorenzati ASDC - Argentina Software Design Center

Transcript of Sesión Técnica. Sacando el máximo de tus Apps con IA

Page 1: Sesión Técnica. Sacando el máximo de tus Apps con IA

Sacando el maximo de tus

Apps con IA

Marcelo Lorenzati

ASDC - Argentina Software Design Center

Page 2: Sesión Técnica. Sacando el máximo de tus Apps con IA

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

Page 3: Sesión Técnica. Sacando el máximo de tus Apps con IA

Historia

Intel: Empresa fabricante de semiconductores creada en 1968, creadora del primer

procesador (4004)

Page 4: Sesión Técnica. Sacando el máximo de tus Apps con IA

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

Page 5: Sesión Técnica. Sacando el máximo de tus Apps con IA

Evolución

http://www.intel.com/support/galileo/index.htm

Page 6: Sesión Técnica. Sacando el máximo de tus Apps con IA

Evolución

Evolución de los equipos con Intel Inside hacia la movilidad

Page 7: Sesión Técnica. Sacando el máximo de tus Apps con IA

Contribución al software abierto

https://01.org/projects

Page 8: Sesión Técnica. Sacando el máximo de tus Apps con IA

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

Page 9: Sesión Técnica. Sacando el máximo de tus Apps con IA

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

Page 10: Sesión Técnica. Sacando el máximo de tus Apps con IA

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.

Page 11: Sesión Técnica. Sacando el máximo de tus Apps con IA

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

Page 12: Sesión Técnica. Sacando el máximo de tus Apps con IA

Paralelismo en datos

0-1

51h de video

0-15m 15-30m 30-45m 45-60m

45

-60

15

-30

30

-45

Page 13: Sesión Técnica. Sacando el máximo de tus Apps con IA

Paralelismo en tareas

Hilo principal – Orquestador

y parte visual

sica

Fís

ica

Lóg

ica

Page 14: Sesión Técnica. Sacando el máximo de tus Apps con IA

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/

Page 15: Sesión Técnica. Sacando el máximo de tus Apps con IA

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)

Page 16: Sesión Técnica. Sacando el máximo de tus Apps con IA

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

Page 17: Sesión Técnica. Sacando el máximo de tus Apps con IA

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)

Page 18: Sesión Técnica. Sacando el máximo de tus Apps con IA

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

Page 19: Sesión Técnica. Sacando el máximo de tus Apps con IA

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/

Page 20: Sesión Técnica. Sacando el máximo de tus Apps con IA

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*

Page 21: Sesión Técnica. Sacando el máximo de tus Apps con IA

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*

Page 22: Sesión Técnica. Sacando el máximo de tus Apps con IA

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

Page 23: Sesión Técnica. Sacando el máximo de tus Apps con IA

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

Page 24: Sesión Técnica. Sacando el máximo de tus Apps con IA

Optimizaciones, conceptos avanzados

Manual de optimizacioneshttp://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-

optimization-manual.html

Page 25: Sesión Técnica. Sacando el máximo de tus Apps con IA

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

Page 26: Sesión Técnica. Sacando el máximo de tus Apps con IA

Copyright© 2013, Intel Corporation. All rights reserved.

*Other brands and names are the property of their respective owners

Presentación y

Links

Preguntas?