Elettronica Plus

Le novità di LabVIEW 2010ERT

LabVIEW è un ambiente grafico cross platform in grado di operare su più sistemi operativi, chipset, device embedded e FPGA. La versione 2010, rilasciata recentemente, offre diverse novità, ma la più importante è l’incremento delle prestazioni rispetto alla versione precedente. Le novità introdotte permettono infatti di far funzionare il codice il 20% più velocemente grazie alle tecnologie utilizzate nel compilatore back end e alle ottimizzazioni del codice.

Il tempo è tutto
LabVIEW 2010 punta sostanzialmente su due elementi, il risparmio di tempo in fase di esecuzione e la riduzione dei tempi di sviluppo dei progetti. Per il primo elemento, LabVIEW 2010 contiene un compilatore ottimizzato (sin dalle primissime versioni infatti LabVIEW è un linguaggio compilato) che accelera i tempi di esecuzione dei programmi, senza la necessità di modificare il codice. La riduzione dei tempi di sviluppo, invece, è ottenuta grazie anche ai contributi della community di sviluppatori, agli add-on dei partner e alle partnership tecnologiche.

Un elemento fondamentale di LabVIEW è il compilatore che permette, per esempio, di astrarre i task come l’allocazione di memoria e la gestione dei thread. Per realizzare le ottimizzazioni NI è intervenuta sulla catena di compilazione. Tra le novità del compilatore, infatti, ci sono quelle introdotte nella gerarchia da LLVM e DFIR che consentono di migliorare l’esecuzione.

In realtà DFIR (Data Flow Intermediate Representation) era già presente nella edizione precedente di LabVIEW, quella 2009. Questa funzione di trasformazione (in pratica DFIR fornisce una rappresentazione intermedia di alto livello), nella catena di compilazione di LabVIEW, si colloca tra il diagramma a blocchi e il codice compilato sul target e permette, per esempio, di eliminare sottoespressioni comuni oppure parti di codice irraggiungibile. Per gli utenti, l’uso di DFIR offre tre importanti vantaggi che consistono nella maggiore velocità di esecuzione, nell’ottimizzazione meno vincolata al codice utente e nella rappresentazione intermedia degli script.

Fig. 1 – I punti nella catena di compilazione di LabVIEW 2010 in cui si inseriscono la sezione DFIR e l’LLVM

La seconda novità importante per il compilatore in LabVIEW 2010 è l’LLVM (Low Level Virtual Machine), sezione che si colloca nella catena di compilazione dopo quella di DFIR.
In pratica LLVM è un compilatore Open Source inventato dall’Università dell’Illinois e, oltre che in ambito universitario, è utilizzato da aziende del calibro di Adobe, Apple e Google. Le funzioni eseguite dall’LLVM permettono di fatto di semplificare le operazioni su target diversi.

LLVM viene utilizzato in numerose occasioni, come per esempio nel salto fra thread, per la combinazione di istruzioni, per la sostituzione scalare di aggregati, la propagazione condizionale, l’ eliminazione delle chiamate di coda, la riassociazione delle espressioni, l’unrolling dei loop, e molte altre.

I vantaggi offerti dall’adozione dell’LLVM risiedono essenzialmente nella maggiore velocità di esecuzione e nella possibilità di accesso a soluzioni open source per il miglioramento delle prestazioni e supporto hardware. Ovviamente occorre considerare che in alcuni casi i vantaggi sono minimi, per esempio, quando si ha a che fare con librerie già fortemente ottimizzate.

NI, a questo riguardo, ha fornito anche alcuni dati sul miglioramento di prestazioni di LabVIEW 2010 rispetto alla versione 2009 che sono strettamente legate al tipo di applicazione. Per esempio, l’incremento di prestazioni spazia da un minimo di pochi punti percentuali nel caso di matematica complessa a un guadagno del 100% nel caso di funzioni di manipolazione di bit a oltre il 180% nelle funzioni di parallel for loop.

Fig. 2 – Due esempi di intervento del DFIR per ottimizzare il codice, rispettivamente nel caso di eliminazione di sottoespressioni comuni e per l’eliminazione di parti di codice irraggiungibile

Agli utenti FPGA LabVIEW 2010 mette a disposizione un nuovo IP Integration Node, compatibile con il Core Generator di Xilinx, che permette di integrare qualsiasi IP FPGA di terze parti nelle applicazioni LabVIEW.

Sempre in ambito FPGA, sino all’edizione dello scorso anno NI ha utilizzato solo i tool ad alto livello, ma nella versione 2010 il processo è cambiato con i miglioramenti nella sequenza di compilazione. Sono stati usati infatti altri tool di Xilinx in modo da ottenere una maggiore quantità di informazioni su quelli che potrebbero essere risultati del processo di compilazione Il valore di queste informazioni risiede nella possibilità di risparmiare tempo utile in caso di errori o ripensamenti, e questo perché in questa versione per FPGA la compilazione è una operazione particolarmente dispendiosa in termini di tempi. L’ordine di grandezza per la fase di compilazione infatti non è quello dei millisecondi come negli altri casi, ma si parla anche di ore, e quindi il poter intervenire prima su eventuali correzioni permette di ridurre le perdite di tempo.

Le altre novità
Il miglioramento di LabVIEW è merito anche della community di sviluppatori e, infatti, la versione 2010 offre oltre una decina di nuove funzioni suggerite dagli utenti tramite il forum LabVIEW Idea Exchange, concepito per raccogliere online i feedback degli utenti. 14 suggerimenti degli utenti, come per esempio un diverso sistema per le label dei collegamenti, sono stati implementati su questa versione di LabVIEW e in generale i suggerimenti riguardano aspetti come l’ottimizzazione della documentazione e l’organizzazione del codice.

Con la presentazione di LabVIEW 2010, NI ha anche lanciato l’iniziativa LabVIEW Add-On Developer Program, che intende offrire ai partner l’opportunità di espandere la piattaforma tramite l’introduzione in LabVIEW di funzionalità personalizzate. Di fatto si tratta di una sorta di mercato online che fa parte del LabVIEW Tools Network che, per ora, mette a disposizione oltre 50 add-on realizzati sia dagli sviluppatori NI sia da terze parti. Ci sono anche librerie per il riutilizzo del codice, template, connettori di interfacce utente per altri pacchetti software. Alcuni prodotti sono gratuiti, mentre altri invece sono a pagamento.