Sei sulla pagina 1di 53

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?

Potrebbero piacerti anche