You are on page 1of 22

Le Novità di LabWindows/CVI 8.

Fabio Mussi
NI Days 2008
Un Ambiente di Sviluppo più Flessibile
Gestione dei file sorgenti tramite l’opzione “tab browsing”
Un Ambiente di Sviluppo più Flessibile
Minimizzare – Espandere determinate regioni di codice
Modifica del codice durante l’esecuzione
Aggiunta – rimozione “on the fly” delle istruzioni desiderate
Comunicazione di Rete più Efficiente

• Incremento (2.5x) delle


prestazioni per le Network
Variables

• Introduzione del
supporto UDP (Universal
Datagram Protocol)
Incrementare le prestazioni: Multicore
Processori più Veloci Processori Multicore
Clock Speed (kHz) Transistor Count

Processore Intel QX6700


CPU Speed

Quad Core
• 4 processori (Doppio Core
2)
• Frequenza di clock a 2.66
GHz

1970 1975 1980 1985 1990 1995 2000 2005 2010


Impatto nel Campo Ingegneristico
Le applicazioni in campo scientifico ed ingegneristico si basano
tipicamente su sistemi dedicati (es. Multitasking limitato).
Creazione di Applicazioni Multithreaded
Ingegneri e ricercatori devono utilizzare i thread per sfruttare al
massimo i processori multicore.
Sistemi Deterministici Real-Time
LabWindows/CVI 8.5 aggiunge la tecnologia SMP (Symmetric
MultiProcessing) per i sistemi Real-Time.
Assegnare Task a Core dedicati
Con LabWindows/CVI Real-Time 8.5, I programmatori
possono assegnare parti di codice a determinati core
Gestione di tutte le componenti Software

Componente Descrizione
Strumenti di Sviluppo Assicurarsi che sul Sistema Operativo (OS) utilizzato
siano presenti gli strumenti di supporto necessari:, librerie
per la creazione e gestione dei thread e driver strumento.

Applicazioni o librerie di funzioni Le applicazioni devono essere thread-safe mentre le


funzioni di libreria devono essere rientranti.

Device Drivers I driver strumento potrebbero richiedere una modifica della


lora architettura per raggiungere prestazioni ottimali.

Operating Systems Verificare che il sistema operativo in uso possa contnuare


a supportare le nuove caratteristiche dei processori
multicore sfruttandone sempre appieno le prestazioni.

Core 1 Core 2
Esempio: Thread Pool
Application
Default Thread Pool
1. Lanciare il programma main()
thread
2. Creare un secondo thread
pool
New Thread Pool
3. Assegnare la funzione
func1 al secondo thread func1() func2()
pool thread thread
4. Assegnare la funzione func2
nel secondo thread pool

12
Multithreading in LabWindows/CVI
• Thread Pool
§ Creazione dei Thread
• Thread Safe Queue
§ Trasferimento sicuro di dati tra più thread
• Thread Safe Variables
§ Proteggere I dati utilizzati da più thread
• Thread Lock
§ Sezioni critiche o mutex in C
§ Prevengono l’accesso multiplo ai dati
• Thread Local Variables
§ Variabili localizzate nei singoli thread

Nota: Tutte le funzioni si trovano nella Utility Library

13
Debugging di Applicazioni Multithreaded

Thread 1

Thread 2

Run » Threads
14
Librerie “Multi-Core Ready”

Librerie Thread-Safe Drivers Thread-Safe


Advanced Analysis Formatting and I/O NI-DAQmx NI-VISA

Utility ANSI C RS-232 GPIB 488.2

Internet Network Variable NI-SCOPE NI-IMAQ


NI-HSDIO NI-FGEN
DDE PID
UDP TCP NI-MOTION NI-RFSA

TDM Streaming DIAdem Connectivity NI-Serial NI-RFSG

ActiveX .NET NI-SWITCH NI-DMM


NI-CAN NI-DCPower
Real-Time Utility MAX Configuration
NI-Fieldpoint NI-DNET

15
Il Nuovo Supporto Multicore in
LabWindows/CVI Real-Time 8.5
§ Symmetric Multiprocessing (SMP) in Real-Time –
Possibilità di utilizzare core multipli
§ Automatic Load Balancing– Assegnamento automatico dei
thread ai processori disponibili per bilanciare il carico
computationale
§ Processor Affinity - Possibilità di assegnare thread ad un
particolare core
§ Execution Trace Tool 2.0 – Monitoraggio il comportamento
dei singoli thread con supporto per ambienti multicore

16
Automatic Load Balancing

Spostamento dei
thread tra processori
Real-Time Processor Affinity
Assegnamento dei
threads a determinati
processori

CPU Core

CPU Core

ConfigureProcessorPool() SetProcessorAffinityForThread()
Multicore Execution Tracing
Build » Target Settings »
Trace Program Execution

Execution Trace Toolkit 2.0

19
Multicore Execution Tracing

Execution Trace Toolkit 2.0

20
LabWindows/CVI Real-Time Targets

Controllers PXI Embedded


Real-Time
Alte velocità, alta diensità di canali,
differenti tipi di I/O

LabWindows/CVI PC Desktop Industriali


Real-Time and
Single Board Computers
(SBC)
Determinismo per sistemi PCI

21
Per Ulteriori Informazioni:
Online:
http://www.ni.com/cvi/i/

Telefono:
02 413091

E-mail:
ni.italy@ni.com

22