Professional Documents
Culture Documents
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
• Introduzione del
supporto UDP (Universal
Datagram Protocol)
Incrementare le prestazioni: Multicore
Processori più Veloci Processori Multicore
Clock Speed (kHz) Transistor Count
Quad Core
• 4 processori (Doppio Core
2)
• Frequenza di clock a 2.66
GHz
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.
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
13
Debugging di Applicazioni Multithreaded
Thread 1
Thread 2
Run » Threads
14
Librerie “Multi-Core Ready”
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
19
Multicore Execution Tracing
20
LabWindows/CVI Real-Time Targets
21
Per Ulteriori Informazioni:
Online:
http://www.ni.com/cvi/i/
Telefono:
02 413091
E-mail:
ni.italy@ni.com
22