PDF de programación - Programación en LabVIEW para Ambientes Multinúcleo

Imágen de pdf Programación en LabVIEW para Ambientes Multinúcleo

Programación en LabVIEW para Ambientes Multinúcleográfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 14 de Enero del 2018)
483 visualizaciones desde el 14 de Enero del 2018
2,7 MB
40 paginas
Creado hace 11a (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
  • Links de descarga
http://lwp-l.com/pdf8316

Comentarios de: Programación en LabVIEW para Ambientes Multinúcleo (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad