SlideShare una empresa de Scribd logo
1 de 26
Descargar para leer sin conexión
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 compartidos
http://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-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 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ó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
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*
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*
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
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 optimizaciones
http://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?

Más contenido relacionado

Destacado

2009 Summer Newsltr Parkinson Ali
2009  Summer Newsltr Parkinson Ali2009  Summer Newsltr Parkinson Ali
2009 Summer Newsltr Parkinson Ali
Jeffery Massey
 
Poradnik komputerowy dla każdego v.4 kolor
Poradnik komputerowy dla każdego v.4 kolorPoradnik komputerowy dla każdego v.4 kolor
Poradnik komputerowy dla każdego v.4 kolor
kasprzak
 
Pilares de la educación abierta y a distancia
Pilares de la educación abierta y a distanciaPilares de la educación abierta y a distancia
Pilares de la educación abierta y a distancia
AkemiRa-Lee
 
Essaouira festivalofgnawayouthcamp
Essaouira festivalofgnawayouthcampEssaouira festivalofgnawayouthcamp
Essaouira festivalofgnawayouthcamp
Csm Casablanca
 
Leitf@den Homepage - Netzwerk Elektronischer Geschäftsverkehr - BIEG Hessen
Leitf@den Homepage - Netzwerk Elektronischer Geschäftsverkehr - BIEG HessenLeitf@den Homepage - Netzwerk Elektronischer Geschäftsverkehr - BIEG Hessen
Leitf@den Homepage - Netzwerk Elektronischer Geschäftsverkehr - BIEG Hessen
eBusinessLotse-Suedwestfalen-Hagen
 

Destacado (20)

2009 Summer Newsltr Parkinson Ali
2009  Summer Newsltr Parkinson Ali2009  Summer Newsltr Parkinson Ali
2009 Summer Newsltr Parkinson Ali
 
Curso de Servicios de Valor Agregado y SMS Premium en Perú
Curso de Servicios de Valor Agregado y SMS Premium en PerúCurso de Servicios de Valor Agregado y SMS Premium en Perú
Curso de Servicios de Valor Agregado y SMS Premium en Perú
 
A materia prima
A materia primaA materia prima
A materia prima
 
Haas Jr Leadership - LGBT Funders Conference 2012
Haas Jr Leadership - LGBT Funders Conference 2012Haas Jr Leadership - LGBT Funders Conference 2012
Haas Jr Leadership - LGBT Funders Conference 2012
 
Poradnik komputerowy dla każdego v.4 kolor
Poradnik komputerowy dla każdego v.4 kolorPoradnik komputerowy dla każdego v.4 kolor
Poradnik komputerowy dla każdego v.4 kolor
 
Pilares de la educación abierta y a distancia
Pilares de la educación abierta y a distanciaPilares de la educación abierta y a distancia
Pilares de la educación abierta y a distancia
 
Essaouira festivalofgnawayouthcamp
Essaouira festivalofgnawayouthcampEssaouira festivalofgnawayouthcamp
Essaouira festivalofgnawayouthcamp
 
Leitf@den Homepage - Netzwerk Elektronischer Geschäftsverkehr - BIEG Hessen
Leitf@den Homepage - Netzwerk Elektronischer Geschäftsverkehr - BIEG HessenLeitf@den Homepage - Netzwerk Elektronischer Geschäftsverkehr - BIEG Hessen
Leitf@den Homepage - Netzwerk Elektronischer Geschäftsverkehr - BIEG Hessen
 
Dwr 3 eso_tejidos_animales - copia
Dwr 3 eso_tejidos_animales - copiaDwr 3 eso_tejidos_animales - copia
Dwr 3 eso_tejidos_animales - copia
 
Configuración de Buscadores en la WWW
Configuración de Buscadores en la WWWConfiguración de Buscadores en la WWW
Configuración de Buscadores en la WWW
 
Riego por goteo a bajo caudal y filtros autolimpiantes a baja presión
Riego por goteo a bajo caudal y filtros autolimpiantes a baja presiónRiego por goteo a bajo caudal y filtros autolimpiantes a baja presión
Riego por goteo a bajo caudal y filtros autolimpiantes a baja presión
 
Inteligencia
 Inteligencia Inteligencia
Inteligencia
 
Presentación HUB de Innovación en la Acción Social
Presentación HUB de Innovación en la Acción Social Presentación HUB de Innovación en la Acción Social
Presentación HUB de Innovación en la Acción Social
 
Kartheek Pavan New
Kartheek Pavan NewKartheek Pavan New
Kartheek Pavan New
 
Crowdsort.me: Presentation (SW Madrona '11)
Crowdsort.me: Presentation (SW Madrona '11)Crowdsort.me: Presentation (SW Madrona '11)
Crowdsort.me: Presentation (SW Madrona '11)
 
Propuesta Pedagógica Ecología Empresarial
Propuesta Pedagógica Ecología EmpresarialPropuesta Pedagógica Ecología Empresarial
Propuesta Pedagógica Ecología Empresarial
 
Analisis derechos television deportes y futbol España 2013 2014 - Sports Tv r...
Analisis derechos television deportes y futbol España 2013 2014 - Sports Tv r...Analisis derechos television deportes y futbol España 2013 2014 - Sports Tv r...
Analisis derechos television deportes y futbol España 2013 2014 - Sports Tv r...
 
Embedded linux barco-20121001
Embedded linux barco-20121001Embedded linux barco-20121001
Embedded linux barco-20121001
 
Elitecore Maravedis Webinar Final Slide Deck
Elitecore Maravedis Webinar  Final Slide DeckElitecore Maravedis Webinar  Final Slide Deck
Elitecore Maravedis Webinar Final Slide Deck
 
Diseño pedagógico para la formación online. El Máster en Educación Digital
Diseño pedagógico para la formación online. El Máster en Educación DigitalDiseño pedagógico para la formación online. El Máster en Educación Digital
Diseño pedagógico para la formación online. El Máster en Educación Digital
 

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

Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Andrés Iturralde
 

Similar a Sesión Técnica. Sacando el máximo de tus Apps con IA (20)

ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx
 
Herramientas de Intel en Android Day
Herramientas de Intel en Android DayHerramientas de Intel en Android Day
Herramientas de Intel en Android Day
 
Desarrollo en c++, vision aplicada
Desarrollo en c++, vision aplicadaDesarrollo en c++, vision aplicada
Desarrollo en c++, vision aplicada
 
Ccs c compiler v4
Ccs c compiler v4Ccs c compiler v4
Ccs c compiler v4
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 
Laboratorio 1 arquitectura de computadores
Laboratorio 1 arquitectura de computadoresLaboratorio 1 arquitectura de computadores
Laboratorio 1 arquitectura de computadores
 
"Al rico" PHP
"Al rico" PHP"Al rico" PHP
"Al rico" PHP
 
Arquitecturas de computadores_avanzadas
Arquitecturas de computadores_avanzadasArquitecturas de computadores_avanzadas
Arquitecturas de computadores_avanzadas
 
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
 
Arquitecturas RICS-CISC
Arquitecturas RICS-CISC Arquitecturas RICS-CISC
Arquitecturas RICS-CISC
 
Dotnet2019 Asp .Net Core Good Practices 2019
Dotnet2019 Asp .Net Core Good Practices 2019Dotnet2019 Asp .Net Core Good Practices 2019
Dotnet2019 Asp .Net Core Good Practices 2019
 
DotNet 2019 | Carlos Landeras y Luis Ruiz Pavón - Asp.Net Core Good Practices...
DotNet 2019 | Carlos Landeras y Luis Ruiz Pavón - Asp.Net Core Good Practices...DotNet 2019 | Carlos Landeras y Luis Ruiz Pavón - Asp.Net Core Good Practices...
DotNet 2019 | Carlos Landeras y Luis Ruiz Pavón - Asp.Net Core Good Practices...
 
S4 - EF
S4 - EFS4 - EF
S4 - EF
 
Presentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
Presentación Taller Herramientas Rendimiento DB2 en IBM i y GenexusPresentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
Presentación Taller Herramientas Rendimiento DB2 en IBM i y Genexus
 
Arquitectura 63583.pptx
Arquitectura 63583.pptxArquitectura 63583.pptx
Arquitectura 63583.pptx
 
.Net Conf Sevilla 2018
.Net Conf Sevilla 2018.Net Conf Sevilla 2018
.Net Conf Sevilla 2018
 
S4-PD1-2.2 EF
S4-PD1-2.2 EFS4-PD1-2.2 EF
S4-PD1-2.2 EF
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualización
 
Despliegue de la solución de software
Despliegue de la solución de softwareDespliegue de la solución de software
Despliegue de la solución de software
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 

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

  • 1. Sacando el maximo de tus Apps con IA Marcelo Lorenzati ASDC - Argentina Software Design Center
  • 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. Historia Intel: Empresa fabricante de semiconductores creada en 1968, creadora del primer procesador (4004)
  • 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
  • 6. Evolución Evolución de los equipos con Intel Inside hacia la movilidad
  • 7. Contribución al software abierto https://01.org/projects
  • 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. 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. 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. 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. Paralelismo en datos 0-15 1h de video 0-15m 15-30m 30-45m 45-60m 45-60 15-30 30-45
  • 13. Paralelismo en tareas Hilo principal – Orquestador y parte visual Música Física Lógica
  • 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. 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. 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. 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. 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. 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 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. 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. 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. 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. 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. 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. Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners Presentación y Links Preguntas?