Documente Academic
Documente Profesional
Documente Cultură
ni.com/mexico
La guerra de los GHz ha sido reemplazada por la guerra de los N-ncleos CPUs con ms ncleos estn ms cerca de lo que creemos
Polaris: procesador experimental con 80 ncleos Larrabee: 16-32 ncleos, hyperthreaded a 4x
Escalabilidad a mltiples ncleos Mantenerse productivo al mismo tiempo que lidia con la complejidad
Agenda
Ejecucin de threads y multitareas en LabVIEW Paralelismo de tareas Paralelismo de datos Pipelining Consideraciones y herramientas para depurar aplicaciones multincleo
Threads
Threads son unidades dentro de un proceso que pueden ser ejecutadas (regularmente en paralelo) Todos los threads comparten los recursos del proceso
Manual
Forzar secciones del cdigo a ejecutar en un thread nico
Paralelismo de Tareas
1) Busque tareas que se pueden realizar en paralelo 2) Modifique el cdigo para que refleje ese paralelismo
Elimine la dependencia de datos LabVIEW automticamente identifica cdigo en paralelo y lo divide en mltiples threads!
Multithreading Automtico
LabVIEW divide un programa en mltiples threads (introducido originalmente en 1998 con LabVIEW 5.0) La mayora de los programas existentes corrern ms rpido en un sistema multincleo sin alteraciones al cdigo thread thread thread
DEMO
Paralelismo de Datos
1) Busque conjuntos de datos que puedan ser procesados en dos o ms bloques independientes 2) Disee su cdigo: Divida los datos Procese los datos en paralelo Combine los resultados individuales
CPU Core
Procesamiento de Seales
Resultado
Combinacin de Resultados
DEMO
Pipelining
Motivacin: muchos programas contienen algoritmos secuenciales de mltiples pasos Implementar pipelining puede mejorar la tasa de rendimiento
2 4 2 4 3
Acquire
1
Acquire
1
t0
t3
t4
t7
Estrategia de Pipelining
CPU Core
Acquire
CPU Core
Filter
CPU Core
Analyze
CPU Core
Log
t0
t1
t2
t3
tiempo
Estrategia de Pipelining
CPU Core
Acquire Acquire
CPU Core
Filter
Filter
CPU Core
Analyze
Analyze
CPU Core
Log
Log
t0
t1
t2
t3
tiempo
Estrategia de Pipelining
CPU Core
Acquire Acquire Acquire Acquire
CPU Core
Filter
Filter
Filter
Filter
CPU Core
Analyze
Analyze
Analyze
Analyze
CPU Core
Log
Log
Log
Log
t0
t1
t2
t3
tiempo
Cada etapa se ejecuta en bloque Hay que tomar en consideracin la inicializacin y fin de variables/operaciones El cableado en el diagrama de bloques es poco natural
Cada etapa se ejecuta en bloque Hay que tomar en consideracin la inicializacin y fin de variables/operaciones Forma de cablear mucho ms natural
Cada etapa corre con cierto grado de libertad Es fcil inicializar valores Muchos cables Las copias de los datos pueden llenar los queues
Con pipeline (tiempo total = 3 s): Mejora = 1.33X (no ideal para pipeline)
Etapa 1 (3s) Etapa 2 (1s)
DEMO
Productor / Consumidor
Los queues funcionan como bfer para las transferencia de datos entre los ciclos El diseo de productor/consumidor es uno de los patrones ms usados PRODUCTOR
QUEUE 1
CONSUMIDOR
DEMO
VIs Re-entrantes
Todos los VIs en LabVIEW se pueden configurar como reentrantes Permite que cada subVI ocupe un lugar de memoria separado
Todos los subVIs que se ejecuten mltiples veces en paralelo deben de configurarse como re-entrantes
Ejecucin Iluminada
Permite visualizar secciones paralelas del cdigo durante su ejecucin Nota: esta opcin alenta la ejecucin, por lo que debe de apagarla una vez terminada la depuracin
Sincronizacin de Threads
No hay garanta de que el SO calendarizar los threads en la secuencia correcta sin primitivas de sincronizacin El orden de los eventos puede cambiar cada ejecucin debido a la calendarizacin de los threads
Primera ejecucin Segunda ejecucin Tercera ejecucin
Thread 1 Thread 2 Thread 3 Thread 2 Thread 3 Thread 1 Thread 3 Thread 1 Thread 2
thread
Sincronizacin en LabVIEW
Existen mecanismos de sincronizacin cuando se requiere control a ms bajo nivel:
Queues Notifiers Semaphores Rendezvous Occurrences
Trazado de la Ejecucin
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 ncleo al seleccionar el CPU especfico
L2 Cache
System Bus
Fuente: Tian and Shih, Software Techniques for Shared-Cache Multi-Core Systems, Intel Software Network
Paralelismo de Datos
Ideal para aplicaciones que trabajan con conjuntos de datos muy grandes que pueden ser divididos y manejados independientemente
Pipelining
Ideal para cdigo que repite varias etapas en forma secuencial con dependencia de datos entre las etapas
Recursos Adicionales
www.ni.com/multicore