Actualizado el 21 de Marzo del 2018 (Publicado el 14 de Enero del 2018)
1.215 visualizaciones desde el 14 de Enero del 2018
2,7 MB
40 paginas
Creado hace 16a (30/05/2008)
Programación en LabVIEW para
Ambientes Multinúcleo
Agenda
• Introducción al Multithreading en LabVIEW
• Técnicas de Programación en Paralelo
• Consideraciones de Tiempo Real
• Recursos
Evolución de la Instrumentación
Instrumentación tradicional
Evolución de la Instrumentación
Nace la Instrumentación Virtual
Evolución en la Programación
Tecnología Express
Basada en texto
Desarrollo
gráfico
Ambiente de Desarrollo Gráfico
Impacto en Ingenieros e Investigadores
Las aplicaciones de investigadores e ingenieros se
encuentran típicamente en sistemas dedicados.
Creando Aplicaciones Multihilo
Investigadores e ingenieros deben utilizar hilos (o
threads) para beneficiarse de procesadores
multinúcleo.
Multihilo Automático en LabVIEW
• LabVIEW divide automáticamente cada
aplicación en varios hilos de ejecución
• LabVIEW introdujo multihilo en 1998
Multihilo Automático en LabVIEW
• LabVIEW divide automáticamente cada
aplicación en varios hilos de ejecución
• LabVIEW introdujo multihilo en 1998
hilo
hilo
hilo
Demostración:
“Paralelismo Accidental” en LabVIEW
Nuevas Funciones Multihilo en LabVIEW 8.5
• Adaptabilidad del número de hilos de ejecución del
sistema dependiendo de los núcleos disponibles
• Calendarización de hilos mejorada para ciclos
temporizados de LabVIEW
• Asignar un procesador específico a estructuras
temporizadas
• Funciones de tiempo real:
– Soporte para objetivos de tiempo real con multiprocesamiento simétrico
– Real‐Time Execution Trace Toolkit 2.0
Caso de Estudio – Eaton Corporation
Eaton desarrolló un sistema de pruebas en vehículo portátil
para transmisiones automotrices utilizando LabVIEW.
• Adquisición y análisis de 16 canales con un núcleo utilizando el
driver multihilo NI‐DAQmx
• Ahora adquieren y analizan más de 80 canales en multinúcleo
“No hubo necesidad de reescribir nuestra
aplicación para las nuevas plataformas de
procesamiento multinúcleo.”
Scott Sirrine
Ingeniero Líder en Diseño
Eaton División Camiones
Soporte en Software para Sistemas Multihilo
Stack de Software
Herramienta de
Desarrollo
Librerías
Controladores de
dispositivos
Sistema Operativo
Soporte proporcionado en el
sistema operativo de elección; la
herramienta facilita la creación de
hilos y optimización
Capacidad de trabajar en ambientes
multihilo, librerías reentrantes
Controladores diseñados para
desempeño óptimo multihilo.
Sistema operativo soporta multihilo
y multitarea y puede balancear la
carga de tareas
(cid:57) Ejemplo: Naturaleza multihilo de
LabVIEW y estructuras que
proporcionan optimización
(cid:57) Ejemplo: Librerías BLAS
(cid:57) Ejemplo: Controlador NI‐DAQmx
(cid:57) Ejemplo: Soporte para
Windows, Mac OS, Linux® OS, y
sistemas operativos de tiempo real
¿Ejecutará Más Rápida mi Aplicación de
LabVIEW en un Sistema Multinúcleo?
¿El código es secuencial o paralelo?
¿Cómo son utilizados los recursos compartidos en la aplicación?
Consideraciones Claves
•
•
Conclusiones
•
• Muchas aplicaciones requerirán modificaciones pequeñas para
La mejora en velocidad de ejecución depende de la aplicación
aprovechar al máximo el procesador multinúcleo
Código Secuencial contra Código Paralelo
Ejemplo Secuencial
‐ LabVIEW ejecutara VIs en orden, uno después de otro.
Resultado:
Un sistema multinúcleo no mejorará la velocidad de
procesamiento sobre un sistema de un solo núcleo
porque no existe paralelismo en el código
Código Secuencial contra Código Paralelo
Ejemplo Paralelo
‐
Debido a que el código tiene ramas paralelas, LabVIEW
tratará de compilar el código para su ejecución paralela
RESULTADO:
El código puede aprovechar los beneficios de sistemas
multinúcleo, por ejemplo las mediciones de espectro y
filtrado se ejecutaran en paralelo
Potenciales Cuellos de Botella:
Recursos Compartidos
1. Dependencia de Datos
Ejemplo: Datos almacenados en variables globales que
necesitan ser utilizadas por diferentes VIs serían un
recursos compartido
2. Disco Duro
Ejemplo: Las computadoras pueden leer o escribir a
disco duro un elemento a la vez (la entrada/salida de
archivo no se puede realizar en paralelo)
3. VIs no‐reentrantes
VIs No‐Reentrantes
•
VIs que son no‐reentrantes no se pueden llamar
simultáneamente; una llamada se ejecuta y el otro espera a
que el primero termine antes de ejecutarse.
Para hacer un VI reentrante, seleccionar File»VI Properties, seleccionar
la categoría de Execution , y seleccionar Reentrant execution.
Técnicas de Programación Paralela para
Mejorar el Desempeño en Sistemas
Multinúcleo
• Paralelismo de Tareas
• Paralelismo de Datos
• “Pipelining”
Paralelismo de Datos
Se pueden acelerar las operaciones intensivas en
procesamiento sobre conjuntos grandes de
datos en sistemas multinúcleo
Conjunto de Datos
CPU Core
CPU Core
CPU Core
CPU Core
Resultado
Paralelismo de Datos
Se pueden acelerar las operaciones intensivas en
procesamiento sobre conjuntos grandes de
datos en sistemas multinúcleo
Conjunto de Datos
CPU Core
CPU Core
CPU Core
CPU Core
Resultado
Combinado
Demostración de Paralelismo de Datos
Ejemplo de Aplicación: Control de Alta Velocidad
• Instituto Max Planck (Munich, Alemania)
• Control de plasma en fusión nuclear tokamak con
LabVIEW en sistema de ocho núcleos utilizando la
técnica de paralelismo de datos.
“…con LabVIEW, obtuvimos un aumento en procesamiento de 20
veces mas con una máquina de ocho núcleos sobre una de un
solo núcleo…”
Louis Giannone
Lead Project Researc
Max Planck Institute
Estrategia de “Pipelining”
• Muchas aplicaciones involucran algoritmos
multipasos secuenciales
• Aplicar “pipelining” puede aumentar el
desempeño
Adquirir
Filtrar Analizar Guardar
Adquirir
Filtrar
Analizar Guardar
t0
t3
t4
tiempo
t7
Estrategia de “Pipelining”
Núcleo CPU
Adquirir
Núcleo CPU
Filtrar
Núcleo CPU
Analizar
Núcleo CPU
Guardar
t0
t1
t2
t3
tiempo
Estrategia de “Pipelining”
Núcleo CPU
Adquirir
Adquirir
Núcleo CPU
Filtrar
Filtrar
Núcleo CPU
Analizar
Analizar
Núcleo CPU
Guardar
Guardar
t0
t1
t2
t3
tiempo
Estrategia de “Pipelining”
Núcleo CPU
Adquirir
Adquirir
Adquirir
Núcleo CPU
Filtrar
Filtrar
Filtrar
Núcleo CPU
Núcleo CPU
Analizar
Analizar
Analizar
Guardar
Guardar
Guardar
t0
t1
t2
t3
tiempo
“Pipelining” en LabVIEW
Secuencial
“Pipelined”
?
o
Nota: Los búfers también se
pueden utilizar para “apilar”
datos entre diferentes ciclos
Demostración de “Pipelining”
Consideraciones Claves para “Pipelining”
• Considerar el número de núcleos en el procesador
para determinar el número de etapas de “pipeline”
• Asegurarse de balancear las etapas, porque la etapa
más larga limitará el aumento de desempeño
– Ejemplo:
“Pipeline”
desbalanceado
Recomendaciones para Balancear
Etapas de “Pipeline”
• Utilice técnicas de comparación de LabVIEW
– Realice comparaciones básicas
estampas de tiempo y el VI Profiler.
Ejemplo de Aplicación: Pruebas de Comunicaciones
• AmFax Ltd. (Reino Unido)
• Crea sistema de pruebas inalámbricas para teléfonos
de la nueva generación, utilizando la técnica de
“pipelining” de LabVIEW
“Con LabVIEW y el controlador embebido de doble núcleo,
hemos logrado un ahorro de tiempo de 5 veces mejor que
antes … ”
Mark Jewell
BDM – Wireless
AmFax Ltd.
Sistemas Determinísticos de Tiempo Real
LabVIEW 8.5 permite multiprocesamiento
simétrico para sistemas de tiempo real
Asignando Tareas a Núcleos en Específico
En LabVIEW 8.5, los usuarios pueden asignar
código a un núcleo del procesador en específico
utilizando el ciclo temporizado de LabVIEW.
Afinidad de Procesador con el Ciclo
Temporizado
• Recomendado para
desarrollo de tiempo
real
• Puede utilizarse en
Windows bajo uso
especial
(ejemplo: optimización
de cache)
Real‐Time Execution Trace Toolkit 2.0
• Evaluación por 30 días
• Compatibilidad con
LabVIEW 7.1 o superior
• Nuevas funciones en la
Versión 2.0
• Mejora en desempeño
• Ordenamiento de
actividad
• Nuevas banderas de
depuración
• Soporte multinúcleo
Ejemplo de Aplicación: Control en Tiempo Real
• Sistema de Túnel de Viento para
Vuelos Seguros en el Centro de
Investigación Ames de la NASA
• Resultados de la Comparación
– Se ejecuto en un controlador NI PXI‐8106 RT
– El ciclo de tiempo critico fue reducido de
43% de carga en CPU a 30% de carga en
CPU en un CPU del PXI‐8106 RT
– Se dejo libre a un núcleo para
procesamiento de tareas no críticas
Fuente de Imagen http://windtunnels.arc.nasa.gov
Recursos
www.ni.com/multicore
Comentarios de: Programación en LabVIEW para Ambientes Multinúcleo (0)
No hay comentarios