15 de octubre crowne plaza - acohailab.webcindario.com
TRANSCRIPT
![Page 1: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/1.jpg)
15 de Octubre
Crowne Plaza
Ciudad de México
ni.com/mexico
Simposio Técnico de
Medición y Automatización
![Page 2: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/2.jpg)
Arquitecturas de Programación
para Sistemas Multinúcleo
EmbebidoFinanciero Médico Científico Industrial
National Instruments Confidential
Aprovechando los procesadores multinúcleo en sus aplicaciones
![Page 3: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/3.jpg)
El Rendimiento de los CPUs Ahora
Proviene del Diseño Multinúcleo
• ¿Porqué multinúcleo?
– Relojes más rápidos = más potencia y calor
– Respuesta: relojes más lentos, pero múltiples núcleos
• La guerra de los GHz ha sido reemplazada por la • La guerra de los GHz ha sido reemplazada por la
guerra de los N-núcleos
• CPUs con más núcleos están más cerca de lo que
creemos
– Polaris: procesador experimental con 80 núcleos
– Larrabee: 16-32 núcleos, hyperthreaded a 4x
![Page 4: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/4.jpg)
Diseños de Software Deben
Adaptarse para Aprovecharlo
• ¿Quieren mejoras en el rendimiento?
– Re-escriba el código crítico para lograr paralelismo
• Desafortunadamente… ¡esto es difícil!
– La mayoría de los programadores piensan de forma
“secuencial”
• Además, todavía están los retos tradicionales
– Eficiencia del código
– Corrección del algoritmo
![Page 5: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/5.jpg)
Nuevos Retos al Escribir Software en
Paralelo
• Es más difícil conseguir eficiencias:
– Afectación por la memoria caché en los CPUs
multinúcleo
– Limpiar el caché, coherencia, etc– Limpiar el caché, coherencia, etc
• Escalabilidad a múltiples núcleos
• Mantenerse productivo al mismo tiempo
que lidia con la complejidad
![Page 6: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/6.jpg)
Agenda
• Ejecución de threads y multitareas en
LabVIEW
• Paralelismo de tareas
• Paralelismo de datos• Paralelismo de datos
• Pipelining
• Consideraciones y herramientas para
depurar aplicaciones multinúcleo
![Page 7: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/7.jpg)
¿Qué son Procesos y Threads?
• Procesos
– Cada programa en ejecución es un proceso
– Los procesos cuentan con recursos necesarios para su ejecución
(memoria, manejadores de memoria, sockets, ventanas)
• Threads• Threads
– Threads son unidades dentro
de un proceso que pueden ser
ejecutadas (regularmente en
paralelo)
– Todos los threads comparten
los recursos del proceso
![Page 8: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/8.jpg)
Aplicaciones Multithreading en
LabVIEW• Automático
– Un algoritmo de agrupación en LabVIEW
automáticamente asigna partes del código a
threads basado en su paralelismo
• Manual
– Forzar secciones del código a ejecutar en un
thread único
8
![Page 9: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/9.jpg)
Multithreading Automático en
LabVIEW
• LabVIEW automáticamente divide cada
aplicación en múltiples threads de
ejecución
threadthread
thread
thread
![Page 10: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/10.jpg)
Multithreading en LabVIEW – a Fondo1. Se agrupan las instrucciones secuenciales del código y sus
dependencias
2. Se almacenan en una fila (queue) de ejecución los diferentes
segmentos de código que pueden correr juntos
3. Si el diagrama de bloques contiene suficiente paralelismo, se
ejecutará simultáneamente en todos los threads del sistema
thread
thread
thread
thread
21 3
ejecutará simultáneamente en todos los threads del sistema
![Page 11: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/11.jpg)
Técnicas de Programación en Paralelo
• Paralelismo de tareas y
multithreading automático
• Paralelismo de datos• Paralelismo de datos
• Pipelining y balanceo de
etapas
![Page 12: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/12.jpg)
Paralelismo de Tareas
1) Busque tareas que se pueden realizar en
paralelo
2) Modifique el código para que refleje ese
paralelismoparalelismo
• Elimine la dependencia de datos
• ¡LabVIEW automáticamente identifica código en
paralelo y lo divide en múltiples threads!
![Page 13: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/13.jpg)
• LabVIEW divide un programa en múltiples threads
(introducido originalmente en 1998 con LabVIEW 5.0)
• La mayoría de los programas existentes correrán más
rápido en un sistema multinúcleo sin alteraciones al
código
Multithreading Automático
threadthread
thread
thread
![Page 14: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/14.jpg)
Paralelismo Automático en LabVIEW
thread
thread
Operaciones Simultáneas
thread
thread
DEMO
![Page 15: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/15.jpg)
Threading Manual con Estructuras
Temporizadas
• El código en estas
estructuras se ejecuta
en un thread
independiente
• Los threads pueden • Los threads pueden
tener una prioridad
relativa
• Capacidad para
definir el procesador
o núcleo
DEMO
![Page 16: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/16.jpg)
1) Busque conjuntos de datos que puedan ser
procesados en dos o más bloques independientes
2) Diseñe su código:
Paralelismo de Datos
2) Diseñe su código:
• Divida los datos
• Procese los datos en paralelo
• Combine los resultados individuales
![Page 17: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/17.jpg)
Ejemplo: Paralelismo de Datos
Resultado
Conjunto de Datos
Procesamiento de ResultadoCPU CoreProcesamiento de
Señales
![Page 18: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/18.jpg)
Co
mb
ina
ció
n d
e R
esu
lta
do
s
Procesamiento de Señales
Conjunto de Datos
CPU Core
CPU Core Procesamiento de Señales
Ejemplo: Paralelismo de Datos
Co
mb
ina
ció
n d
e R
esu
lta
do
s
CPU Core
CPU Core
Procesamiento de Señales
Procesamiento de Señales
![Page 19: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/19.jpg)
Ejemplo: Paralelismo de Datos en
LabVIEW
Multiplicación de Matrices
![Page 20: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/20.jpg)
Desempeño del Paralelismo de Datos
DEMO
![Page 21: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/21.jpg)
• Motivación: muchos programas contienen
algoritmos secuenciales de múltiples pasos
• Implementar pipelining puede mejorar la tasa
de rendimiento
Pipelining
1
2
3
4
Acquire Filter Analyze Log
tiempo
1
2
3
4
Acquire Filter Analyze Log
t0 t3 t4 t7
![Page 22: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/22.jpg)
Acquire
Filter
CPU Core
CPU Core
Estrategia de Pipelining
tiempo
Analyze
Log
t0 t1 t2
CPU Core
CPU Core
t3
![Page 23: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/23.jpg)
Acquire Acquire
Filter Filter
CPU Core
CPU Core
Estrategia de Pipelining
Analyze Analyze
Log Log
CPU Core
CPU Core
tiempot0 t1 t2 t3
![Page 24: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/24.jpg)
Acquire Acquire Acquire Acquire
Filter Filter Filter Filter
CPU Core
CPU Core
Estrategia de Pipelining
Analyze Analyze Analyze Analyze
Log Log Log Log
CPU Core
CPU Core
tiempot0 t1 t2 t3
![Page 25: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/25.jpg)
Secuencial Pipeline
Pipelining en LabVIEW: Registros de
Corrimiento en Cascada
• Cada etapa se ejecuta en bloque
• Hay que tomar en consideración la inicialización y fin de
variables/operaciones
• El cableado en el diagrama de bloques es poco natural
![Page 26: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/26.jpg)
Secuencial Pipeline
Pipelining en LabVIEW: Nodos de
Retroalimentación
• Cada etapa se ejecuta en bloque
• Hay que tomar en consideración la inicialización y fin de
variables/operaciones
• Forma de cablear mucho más natural
![Page 27: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/27.jpg)
Pipelining en LabVIEW: Queues
• Cada etapa corre con cierto grado de libertad
• Es fácil inicializar valores
• Muchos cables
• Las copias de los datos pueden llenar los queues
![Page 28: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/28.jpg)
Balanceo de las Etapas del Pipeline
• La ruta crítica es la etapa que más tiempo tome
• Implementar pipelining con etapas no balanceadas
puede no generar mejoras significativas en desempeño
Sin pipeline (tiempo total = 4 s)
Etapa 1 (3s) Etapa 2 (1s)
Etapa 1 (3s)
Etapa 2 (1s)
Con pipeline (tiempo total = 3 s): Mejora = 1.33X (no ideal para pipeline)
DEMO
![Page 29: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/29.jpg)
Diseñando Aplicaciones Multinúcleo
• Patrones de diseño más comunes:
– Ciclo sencillo con técnicas de programación en
paralelo
– Ciclos múltiples independientes– Ciclos múltiples independientes
– Productor/consumidor (transferencia de datos vía
queues)
Patrón de Diseño
Técnicas Paralelas
![Page 30: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/30.jpg)
Diseños con un Solo Ciclo• Utilice técnicas de paralelismo (paralelismo de datos,
paralelismo de tareas, pipelining) en un mismo ciclo
• La velocidad del ciclo se ve limitada a la etapa crítica
![Page 31: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/31.jpg)
Diseño de Ciclos en Paralelo
• Ciclos separado pueden ejecutar en paralelo
• Permite tener diferentes velocidades de ejecución
![Page 32: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/32.jpg)
Productor / Consumidor
• Los queues funcionan como búfer para las
transferencia de datos entre los ciclos
• El diseño de productor/consumidor es uno de los
patrones más usados
QUEUE 1
PRODUCTOR
CONSUMIDORDEMO
![Page 33: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/33.jpg)
Consideraciones y Herramientas para
Depurar Aplicaciones Multinúcleo
• VIs re-entrantes y ejecución iluminada
• Sincronización de threads
• Trazado de la ejecución
• Consideraciones en la transferencia de datos
• Distribución física del procesador
![Page 34: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/34.jpg)
VIs Re-entrantes• Todos los VIs en LabVIEW se pueden configurar como re-
entrantes
• Permite que cada subVI ocupe un lugar de memoria
separado
Todos los subVIs que se ejecuten múltiples veces en
paralelo deben de configurarse como re-entrantes
![Page 35: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/35.jpg)
Ejecución Iluminada
• Permite visualizar secciones paralelas del código
durante su ejecución
• Nota: esta opción alenta la ejecución, por lo que
debe de apagarla una vez terminada la depuración
![Page 36: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/36.jpg)
Sincronización de Threads
• No hay garantía de que el SO calendarizará los
threads en la secuencia correcta sin primitivas de
sincronización
• El orden de los eventos puede cambiar cada
ejecución debido a la calendarización de los threadsejecución debido a la calendarización de los threadsThread
1Thread
2Thread
3
Thread 2
Thread 3
Thread 1
Primera ejecución
Segunda ejecución
Thread 3
Thread 1
Thread 2Tercera ejecución
![Page 37: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/37.jpg)
Sincronización de Código Usando
Flujo de Datos• El paradigma de flujo de datos garantiza la
sincronización
threadLas rutas de código
paralelo son sincronizadas
thread
paralelo son sincronizadas
y el orden de ejecución es
determinado por los
cables en LabVIEW
El flujo de datos natural en LabVIEW facilita la
programación multinúcleo
![Page 38: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/38.jpg)
Sincronización en LabVIEW
• Existen mecanismos de sincronización cuando se
requiere control a más bajo nivel:
• Queues
• Notifiers
• Semaphores
• Rendezvous
• Occurrences
![Page 39: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/39.jpg)
Trazado de la Ejecución• En sistemas de tiempo real, se refiere a la capacidad de
ver la actividad de cada thread a nivel del SO
• Se puede visualizar la actividad de cada thread por
núcleo al seleccionar el CPU específico
![Page 40: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/40.jpg)
Consideraciones en la Transferencia de
Datos
• Tome en consideración la arquitectura de la memoria
en su sistema al programa sistemas multinúcleo
• Evite transferir conjuntos de datos muy grandes entre
núcleos (relativo al tamaño del caché)
• Transferencias muy pequeñas de memoria pueden
causar actualizaciones constantes del caché y reducir
el rendimiento
![Page 41: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/41.jpg)
Distribución Física del Procesador
• La distancia entre los procesadores y la calidad de las
conexiones entre los mismos puede afectar
considerablemente
• La transferencia de datos a través del bus del sistema es más
lento que de la caché compartida
Ejemplos de Caché
Compartida: Sistema
Dual-Core con Dos
Procesadores
Fuente: Tian and Shih, Software Techniques for Shared-Cache Multi-Core Systems, Intel Software Network
Core 0 Core 1 Core 2 Core 3
L2 Cache L2 Cache
System BusSystem
Memory
![Page 42: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/42.jpg)
Resumen: Estrategias para Paralelismo
• Paralelismo de Tareas
– Ideal para programas con funcionalidades independientes
que tienen una mínima dependencia de datos o recursos
compartidos
• Paralelismo de Datos• Paralelismo de Datos
– Ideal para aplicaciones que trabajan con conjuntos de
datos muy grandes que pueden ser divididos y manejados
independientemente
• Pipelining
– Ideal para código que repite varias etapas en forma
secuencial con dependencia de datos entre las etapas
![Page 43: 15 de Octubre Crowne Plaza - acohailab.webcindario.com](https://reader035.vdocuments.co/reader035/viewer/2022070503/62c144cbe1fac831361fdda5/html5/thumbnails/43.jpg)
Recursos Adicionaleswww.ni.com/multicore