Successfully reported this slideshow.
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, cons...
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://...
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 H...
Optimizaciones, conceptos generales
1. Primero claridad antes que eficiencia
2. Estas pensando en optimizar? Espera!
3. Pi...
Concurrencia y paralelismo
Dos tareas en un procesador
de doble núcleo vs uno de
núcleo único.
Múltiples tareas en un
proc...
Concurrencia y paralelismo
Sincronización de datos
entre tareas y procesos
Cuando no se usa paralelismo? Cuando el costo d...
Paralelismo en datos
0-15
1h 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ísica
Lógica
Optimizaciones, HTML5
• Webworkers
var worker = new Worker('task.js');
worker.postMessage(); //Ejecuta el worker por separ...
Optimización C/C++ - Librerías
Librerias de soporte de C++
Boost (http://www.boost.org/)
Frameworks de desarrollo de aplic...
Optimización C/C++ - Compilación y enlazado
Algunos parámetros de compilación: en GCC (GNU C Compiler) o en ICC( Intel C C...
Optimización C/C++ - Compilación y enlazado
Uso de librerías optimizadas
Gcc –lm
• Math (libm) ( acos, atan, ceil, log, po...
SIMD: Single Instruction, Multiple Data
• Scalar mode
– one instruction produces
one result
– E.g. addss, (addsd)
• Vector...
Herramientas de optimización C/C++
Intel® Parallel Studio XE
Fase Herramienta Función Beneficio
Diseño
Intel®
Parallel
Adv...
20
Intel®
Parallel Advisor – Overview
Discover, Analyze, Check, Add Parallelism
Analyzes the executing serial program as d...
10/7/2013
Intel® C++
Composer XE 2011
• Intel® C++ Compiler XE 12.1
• Intel® Threading Building Blocks
• Intel® Cilk™ Plus...
Intel® Inspector XE - Dynamic Analysis
Detects memory and threading errors
• Memory errors
• Invalid Memory Accesses
• Mem...
Where is my application…
Spending Time? Wasting Time? Waiting Too Long?
• Focus tuning on functions
taking time
• See call...
Optimizaciones, conceptos avanzados
Manual de optimizaciones
http://www.intel.com/content/www/us/en/architecture-and-techn...
Consejos
• >60% de las classmates son dual boot
– Piensa en multiplataforma
• No siempre habrá conectividad constante de i...
Copyright© 2013, Intel Corporation. All rights reserved.
*Other brands and names are the property of their respective owne...
Upcoming SlideShare
Loading in …5
×

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

298 views

Published on

Sesión técnica de Marcelo Lorenzati, ingeniero de Intel en ASDC, en el Hackathon Sadosky

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Sacando el maximo de tus Apps con IA Marcelo Lorenzati ASDC - Argentina Software Design Center
  2. 2. 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
  3. 3. Historia Intel: Empresa fabricante de semiconductores creada en 1968, creadora del primer procesador (4004)
  4. 4. 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
  5. 5. Evolución http://www.intel.com/support/galileo/index.htm
  6. 6. Evolución Evolución de los equipos con Intel Inside hacia la movilidad
  7. 7. Contribución al software abierto https://01.org/projects
  8. 8. 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
  9. 9. 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
  10. 10. 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.
  11. 11. 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 compartidos http://software.intel.com/sites/default/files/m/d/4/1/d/8/Gillespie-0053-AAD_Gustafson-Amdahl_v1__2_.rh.final.pdf
  12. 12. Paralelismo en datos 0-15 1h de video 0-15m 15-30m 30-45m 45-60m 45-60 15-30 30-45
  13. 13. Paralelismo en tareas Hilo principal – Orquestador y parte visual Música Física Lógica
  14. 14. Optimizaciones, HTML5 • Webworkers var 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/
  15. 15. 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)
  16. 16. 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
  17. 17. 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)
  18. 18. 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
  19. 19. 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ón Intel® 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. 20. 20 Intel® Parallel Advisor – Overview Discover, Analyze, Check, Add Parallelism Analyzes the executing serial program as developers work through the methodology Check Suitability Evaluates performance impact and implication of the parallel experiments Survey Target Focuses effort where it will pay off and targets coarse-grain parallelism Annotate Sources Inserts annotations to sources to describe parallel experiments Check Correctness Finds 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*
  21. 21. 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 - Overview Compilers, 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*
  22. 22. Intel® Inspector XE - Dynamic Analysis Detects 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
  23. 23. 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
  24. 24. Optimizaciones, conceptos avanzados Manual de optimizaciones http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures- optimization-manual.html
  25. 25. 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
  26. 26. Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners Presentación y Links Preguntas?

×