Tcnicas de Programacin para Obtener el Mximo Provecho de LabVIEW
Ing. Benjamn Celis Gerente Ingeniera de Aplicaciones National Instruments Mexico
Agenda
Tcnicas de Programacin Multincleo Patrones de Diseo Avanzados Programacin Orientada a Objetos Herramientas para Aplicaciones a Gran Escala
Arquitecturas Paralelas Aumentan Desempeo
Procesadores rpidos
Clock Speed (kHz) Transistor Count
Procesadores Multincleo
CPU Speed
Procesador Intel QX6700 Quad Core
4 procesadores (pare de Core 2) Velocidad de reloj2.66 GHz
1970
1975
1980
1985
1990
1995
2000
2005
2010
Creando Aplicaciones Multitarea
Aplicaciones deben hacer uso de las tareas para beneficiarse de los procesadores multincleo.
Programas Multitarea en LabVIEW
Multitarea automtico
LabVIEW automticamente asigna tareas basado en el paralelismo La mayora de los programas existentes corrern ms rpido en un sistema Multincleo sin alteracin
Multitarea manual
Se limita la seccin de cdigo a ejecutarse como una tarea
Tcnicas para Paralelismo
Paralelismo de Tareas y Multitareas Automtico Paralelismo de Datos Pipelining y balanceo de etapas
Paralelismo Tareas
1) Buscar tareas que pueden correr en paralelo 2) La arquitectura del cdigo refleja el paralelismo
Eliminar dependencias de datos LabVIEW automticamente identifica cdigo paralelo y puede separarlo en mltiples tareas!
Ejemplo: Paralelismo de Tareas
Operaciones Paralelas
Tarea Tarea Tarea
Paralelismo de Datos
1) Buscar un set de datos grande que pueda ser procesado en dos o ms pedazos independientes 2) Arquitectura de cdigo: Separar los datos Procesar los datos en paralelos Combinar los resultados individuales para obtener un resultado general
Ejemplo: Paralelismo de Datos
Set de Datos
CPU Ncleo
Procesamiento Seales
Resultados
Ejemplo: Paralelismo Datos
Set de Datos
CPU Ncleo
Procesamiento Seal Procesamiento Seal Procesamiento Seal Procesamiento Seal
CPU Ncleo
Combinar Resultados
CPU Ncleo
CPU Ncleo
Pipelining
Motivacin: Muchos programas contienen secuencias, algoritmos de mltiples pasos Aplicando pipelining se puede incrementar la cantidad de datos procesados
2 4 2 4
Acquire
1
Filter
Analyze
3
Log
Acquire
1
Filter
Analyze
3
Log
time t0 t3 t4 t7
Estrategia Pipelining
CPU Core
Acquire
CPU Core
Filter
CPU Core
Analyze
CPU Core t0 t1 t2 t3
Log
time
Estrategia Pipelining
CPU Core
Acquire Acquire
CPU Core
Filter
Filter
CPU Core
Analyze
Analyze
CPU Core t0 t1 t2 t3
Log
Log
time
Estrategia Pipelining
CPU Core
Acquire Acquire Acquire Acquire
CPU Core
Filter
Filter
Filter
Filter
CPU Core
Analyze
Analyze
Analyze
Analyze
CPU Core t0 t1 t2 t3
Log
Log
Log
Log
time
Pipelining en LabVIEW
Secuencial Pipelining
Nota: otras tcnicas existen para pipelining como utilizar mltiples ciclos con buffers, y utilizar nodos de retroalimentacin
Balanceo de Etapas
La ruta crtica es la etapa ms larga Pipelining con etapas desbalanceadas no necesariamente da una mejora en desempeo
Sin Pipelining (tiempo total= 4s)
Etapa 1 (3s) Etapa 2 (1s)
Con Pipelining (tiempo total= 3s): aumento velocidad = 1.33X (no ideal para pipelining)
Etapa 1 (3s) Etapa 2 (1s)
Qu Son los Patrones de Diseo?
Una platilla o arquitectura para cdigo de LabVIEW Ampliamente aceptado y bien conocido Fcilmente reconocible
Herramientas Bsicas
Ciclos Registros Corrimiento Estructura Casos Constantes Enum Estructura Eventos
Variable Global Funcional
La Variable Global Funcional es un SubVI No-Reentrante Se puede hacer acciones sobre los datos La constante Enum selecciona la accin Guarda el resultado en un registro de corrimiento sin inicializar 5. El ciclo se ejecuta una sola vez 1. 2. 3. 4.
Mquina de Estados
Se tiene un caso por cada estado El cdigo de transicin determina el siguiente caso segn los resultados Primer Estado
Ejecucin de Estado
Los registros de corrimiento acarrean el estado
Cdigo de Transicin
Primer Estado Siguiente Estado
Opciones de Cdigo de Transicin
Step Execution
Step Execution
Step Execution
Productor / Consumidor
Mquina Estados Buffer & Productor/Consumidor con Eventos
1. Eventos son capturados por el productor 2. Productor pone los datos en el buffer 3. La mquina de estados en el consumidor ejecuta las acciones sobre los datos 4. SubVIs paralelos se comunican usando referencias a los buffers
Buffer Maestro
Ciclo Productor Basado en Eventos
Estado y Datos Entran al Buffer
Mquina Estados Consumidor
Buffers Adicionales (Q1 y Q2)
Estados Producen para los Buffers Adicionales
SubVIs Consumen datos de Q1 y Q2
Daemon Autoejecutable Estndar
Punto clave un Daemon debe mantener una referencia abierta a s mismo para evitar que sea purgado
Daemon Estndar Ejecutado
Puntos Clave el que ejecuta debe transferir responsabilidad por la referencia del daemon VI. El que ejecuta no debe cerrar la referencia al daemon VI
Proxy Estndar
Almacena referencia a un VI real Carga el VI slo en su primera llamada
Launcher Estndar
Programacin Orientada a Objetos
Un enfoque para el desarrollo de aplicaciones Apropiado para aplicaciones de gran escala con un equipo de desarrolladores Promueve reutilizar el cdigo Reduce el mantenimiento de cdigo Simplifica extender aplicaciones
Programacin Orientada a Objetos
Clase Padre Clases y Objetos Encapsulacin
Clase Hija
Herencia
Para desarrollo de aplicaciones a gran escala
Clases y Objetos
Los Objetos son actores en su aplicacin
Referencias a partes individuales de datos
La Clase define los datos y comportamiento de los Objetos
Los objetos en su aplicacin son instancias de una Clase
Creando Clases en LabVIEW
Crear una clase en el Proyecto Especificar los datos con el .ctl para la clase
Definir la clase en efecto define un nuevo tipo de dato
Caractersticas adicionales
Especificar el cono de la clase Especificar una plantilla de cono de VI Especificar el color del cable
Creando Mtodos para las Clases
Mtodos
Acciones o peticiones Desempeadas por los objetos Generalmente verbos
Crear un VI Especificar alcance
Pblico Privado Protegido
Herencia
Define subclases Crea una relacin de perteneca
Ejemplo: Telfono con Cmara es un Telfono Celular Reutiliza funcionalidad comn
Especializacin
Extender o sobrescribir funcionalidad para necesidades especficas
Encapsulacin
Tratar cada objeto como una caja negra
Interfaz bien definida de datos y mtodos Debe utilizar esta interfaz en la aplicacin
Todos los datos son privados Mtodos pueden ser pblicos, privados o protegidos
Composicin de la Clase
Definir una clase crea un nuevo tipo de dato Una clase puede estar hecha de otra clase
Aplicaciones de LabVIEW Usando Clases
Llaman mtodos y objetos Reduce la rescritura de cdigo mediante la herencia y envo dinmico
Proceso de Ingeniera de Software
Requerimeintos Arquitectura Desarrollo Depurado y Pruebas Despliegue
Herramientas de Ingeniera de Software
Requirements Gateway Design Patterns Object Orientation Multicore Dataflow MathScript Statechart Simulation Express VI Analyzer Real Time Execution Trace Desktop Execution Trace Unit Test Framework Application Builder Real Time FPGA Embedded
Herramientas para Depurado/Pruebas
Depurado y Pruebas
Complejidad Aplicacin
Avanzado
Unit Test Framework
Validacin Funcional
Desktop Execution Trace
Real Time Execution Trace
Anlisis Dinmico
Simple
VI Analyzer Toolkit
Anlisis Esttico
Bajo Riesgo
Aplicacin Crtica
Alto Riesgo
Preparando una Revisin de Cdigo con VI Analyzer
Automatiza el anlisis de cdigo con ms de 60 pruebas configurables
Desempeo Estilo
Inspecciona fallas interactivamente Genera reportes personalizados
Desktop Execution Trace Toolkit
Trazas Durante Ejecucin: Estructuras Eventos Localidades Memoria Buffers / Notificadores Referencia Fugas ID Tareas Errores sin Manejar SubVIs Estticos/Dinmicos Cadenas de Caracteres Personalizadas
LabVIEW Unit Test Framework
Valores Entrada
Salida
VI Bajo Prueba
Unit Test Framework
Resultados Esperados
Generacin Automtica Reporte
Vector prueba= Valores Entrada+ Salidas Esperadas
Integracion con Requerimientos
Implementacin Requerimientos Software
Unidades a Probar Resultados Pruebas
Preguntas?