Nvidia, multicore e Italia: dal gaming alla guida autonoma

Il progetto europeo HERCULES grazie alla tecnologia Nvidia punta allo sviluppo di soluzioni avanzate per la guida autonoma e non solo. Facciamo il punto.

Avatar di Dario D'Elia

a cura di Dario D'Elia

Chi mai avrebbe potuto immaginare che una tecnologica Nvidia nata per il gaming diventasse il punto di riferimento mondiale per la guida autonoma delle auto? Sicuramente il progetto HERCULES (High-Performance Real-Time Architectures for Low-Power Embedded Systems). Ma anche Tesla, che monta le piattaforme Nvidia Drive PX 2, Volvo, Honda, BMW, Mercedes, Audi e Toyota.

Prima di parlare di GPU, però andiamo con ordine. 

Nvidia Drive PX 2
Nvidia Drive PX 2

Multi-core e multi-processore, la verità che non ti aspetti

Nell'epoca i cui i computer multi-core e multi-processore sono dati per scontati in realtà emerge che nell'automotive e nell'aerospaziale la transizione non è realmente ancora avvenuta. Ecco il senso del progetto europeo HERCULES (High-Performance Real-Time Architectures for Low-Power Embedded Systems), che vede coinvolte l'Università di Modena e Reggio Emilia (UNIMORE), l'ETH di Zurigo, Czech Technical University di Praga, Pitom, Airbus Innovation Group, Magneti Marelli ed EVIDENCE.

praga meeting
Workshop HERCULES a Praga

Il problema di scenario iniziale è che oggi le piattaforme multi-core che gestiscono le attività sensibili su veicoli o aerei vengono sfruttati come se fossero sistemi mono-core. In pratica tutto il potenziale di processing ed eventuale risparmio energetico non esiste, perché ad esempio 3 core su 4 sono sostanzialmente inutilizzati.

E il motivo si deve a una serie di ostacoli: la mancata possibilità, ad oggi, di avere software certificato con più di un core, e una - conseguente e comprensibile - certa ritrosia "storica" delle imprese a investire prima degli altri in un settore che può dare un ritorno di investimento solo a medio o lungo termine.

hercules

HERCULES, a distanza di un anno dall'avvio dei lavori, si prepara alla fase più delicata, ovvero lo sviluppo software che domani potrà essere alla base di un percorso di testing ed eventuali certificazioni. A Praga, qualche settimana fa, si è tenuto il secondo incontro dell'industrial advisory board - di cui Tom's Hardware fa parte - per fare il punto. Marko Bertogna, professore associato presso UNIMORE, ha aperto il workshop chiedendo "Quante performance dovremmo sacrificare per ottenere maggiore predicibilità? Questo è l'obiettivo di HERCULES!".

Applicazioni avioniche

Pitom e Airbus partecipano al progetto Hercules perché le potenzialità in campo avionico di HERCULES sono enormi. La prima è una piccola azienda della provincia di Pisa che progetta e sviluppa sistemi droni a guida autonoma (cielo, mare e terra) per grandi e piccoli committenti. Airbus, come tutti ben sanno, è l'azienda europea leader nella progettazione e costruzione di aeromobili.

avionic

Autpilota drone (attuale)

Pitom è concentrata sugli elementi di Hercules che elaboreranno i dati forniti dai sensori dei droni per guida, navigazione e controllo, in modo che la piattaforma hardware possa gestire di conseguenza auto-pilotaggio, individuazione ostacoli e aggiramento degli ostacoli. L'attuale drone sperimentale si affida a un motore Tmotor 4012-9 con doppio pacchetto batteria da 6200 mAh e chipset Nvidia Jetson TX2.

avionic 2

Autopilota drone (con Nvidia)

Airbus invece è interessata al tracking video, sfruttando il suo sistema proprietario CETRAC, per il futuro monitoraggio a 360° dei velivoli a terra. In pratica la prospettiva è che gli aerei domani possano essere dotati di sistemi video capaci di monitorare ciò che avviene intorno e allertare in caso di sicurezza.

Auto a guida autonoma

Magneti Marelli è impegnata nello sviluppo di sistemi per la guida autonoma applicata ai veicoli. Il suo Jeep Renegade sperimentale al momento è in grado di procedere autonomamente e fermarsi in caso di attraversamento pedoni. Inoltre in condizioni ideali il veicolo sarà capace di individuare una postazione libera in un grande parcheggio e manovrare di conseguenza. 

prototipo

Prototipo archiettura automotive

L'obiettivo per i prossimi 12 mesi è di migliorare l'efficienza della cosiddetta Solving maneuver cost function grazie alla parallelizzazione dell'algoritmo. In pratica si tratta di ottimizzare i processi che stanno dietro la valutazione degli spazi, la manovra potenziale, la traiettoria da impiegare, etc. Il primo prototipo sarà basato poi su Nvidia Tegra X2, Xilink Ultrascale e Infineon Aurix Tricore.

Nei primi due casi si tratta di piattaforme di nuova generazione, ancora fondamentalmente inesplorate in ambito automotive e avionics a causa delle loro complessità. Infineon Tricore invece, è un core "ben noto" agli addetti ai lavori, che è già in grado di fornire garanzie di predicibilità, pur senza sfruttare massivamente il multi-core, e per questo è già largamente utilizzato nell'industria.

nvidia px

Nvidia DPX2

Il futuro dei sistemi embedded

Le piattaforme hardware per i sistemi embedded saranno sempre più basate su architetture multi-many core (4 o superiori) abbinate ad acceleratori many-core (migliaia di core) come le schede grafiche GPU per il calcolo parallelo massivo, e questo è risaputo da diversi anni.

predicibilità

 

L'elemento chiave però è la predicibilità, ovvero la capacità in ogni settore di applicazione di produrre, con un tempo di risposta garantito e quindi certificabile, reazioni conseguenti alle analisi delle informazioni fornite dalla sensoristica. Il problema è che per il calcolo in parallelo vi sono criticità sia sul piano del timing fra i core che sull'impiego della memoria condivisa. E questa è solo la punta dell'iceberg.

In termini semplici è come immaginare di avere a disposizione più core che devono collaborare per raggiungere un risultato comune senza generare colli di bottiglia e quindi "pestarsi i piedi" l'un l'altro, ad esempio per accedere ai banchi di memoria condivisi. Il tutto considerando che ognuna delle migliaia di componenti software, "task", per tali sistemi, deve lavorare sinergicamente con tutte le altre. Si pensi ad esempio all'attività dei sistemi operativi e delle cosiddette librerie di run-time, che devono automaticamente e costantemente riassegnare "task", ai core disponibili per tenerli il più occupati possibile.

La complessità per gestire un tale sistema, come si può intuire, è enorme. Il framework di Hercules non a caso adotterà una semplice interfaccia basata su diffusi modelli di programmazione per consentire una gestione omogenea delle risorse di host (ad esempio, un "tradizionale" quad-core) e accelerazione grafica, ad esempio una GPU con migliaia di core.

interferenze

Interferenze

Si parla di modelli di esecuzione predittivi e algoritmi efficienti di co-scheduling per una gestione coordinata di esecuzione di task e accessi alle memorie condivise, il vero collo di bottiglia prestazionale di tali piattaforme. Insomma considerando l'uso di architetture moderne come la Nvidia Tegra X2, alla, base dei sistemi on-board automotive e avionics di prossima generazione, sarà fondamentale il mix di attività allocate tra CPU e GPU.

Nel progetto Hercules, viene al momento utilizzata le piattaforma Drive CX2 sviluppata da Nvidia esplicitamente per il mercato automotive, e di cui la board Tegra X2 rappresenta la versione per ricerca & sviluppo. Alla "GPU Technology Conference" (GTC) 2017, vero e proprio punto di riferimento mondiale per l'innovazione in tale ambito, è stata presentata la prossima generazione Nvidia Drive, che seppur sostanzialmente analoga alla precedente, offre prestazioni ancora più spinte, ed è ancora più orientata al mondo automotive.

Ovviamente le "antenne" dei ricercatori di Hercules sono sempre alzate in tale ambito, per usare le tecnologie allo stato dell'arte e performanti.

Si pensi ad esempio al futuro Drive CX3 (aka Xavier) che Nvidia ha deciso di sviluppare in collaborazione con Bosch. Al momento si parla di una capacità di 20 DL TOPS (Deep Learning Tera-Ops) con un Thermal Design Point a soli 20 watt. Da ricordare che si affida a un processo produttivo FinFET a 16 nm e che monterà l'architettura Volta GPU con 512 CUDA core.

Sistemi embedded ispirati al gaming in ambito automotive e avionics

GPU dicevamo. Ma come è possibile che piattaforme nate per il rendering grafico e che hanno trovato la loro massima espressione nei videogame vengano utilizzate in un ambito così "esotico" come per esempio le auto a guida autonoma?

I sistemi di guida autonoma utilizzano massicciamente tecnologie per la cosiddetta computer vision, per effettuare compiti come il riconoscimento di oggetti in una scena, e la loro la categorizzazione.

framework

Framework Hercules

Ad esempio: "Quella forma che vedo al lato della strada, è un albero, e quindi potenzialmente immobile, o è una persona e quindi c'è la possibilità che si muova e quindi rappresenta un potenziale pericolo?", o ancora: "Quelle due linee che vedo parallele a me, sono i limiti di una corsia, e quindi non devo passarle, ma anzi posso agganciarmi a loro e seguirle in curva?".  

lanescreen

Chiaramente le GPU sono nate, sono state costruite esplicitamente, per eseguire tali compiti di elaborazione grafica in maniera molto efficiente, anche dal punto di vista energetico e quindi è sicuramente preferibile affidarsi ad esse per svolgerli. Basti pensare che effettuare un task grafico su un core "normale" può aumentare fino a 50-100 volte il tempo e fino a 50 volte l'energia consumata.

Il secondo motivo è che da ormai decenni le GPU sono state "sdoganate" come computer dedicati solamente alla grafica. Ormai si parla di GPU per il calcolo "general purpose", o "GP-GPU", e i programmatori di tutto il mondo sono da diverso tempo ormai capaci di sfruttare certe categorie, come ad esempio la famiglia Nvidia, per calcoli astronomici, biologia molecolare, esplorazione statistica, fino alla matematica pura e alla finanza.

Tutto ciò ha fornito (da non sottovalutare!!) una base di conoscenze di strumenti fondamentali per i programmatori GP-GPU. Si pensi ai tool di sviluppo e librerie software, ma anche forum e comunità online. Di recente, diverse università fra cui - guarda a caso - Modena e Reggio Emilia stanno spingendo molto, nei propri piani didattici, sulle piattaforme basate su GPU!

software

Architettura software

A ben vedere ci sarebbe un terzo ambito, strettamente legato al precedente. Negli ultimi anni, si è cominciato a sfruttare le GPU anche per la creazione di reti neurali, ovvero di cervelli artificiali: il nuovo algoritmo di ricerca delle immagini di Google ne è un esempio. Similmente, diversi prototipi di sistemi a guida autonoma (o parti di essi) si basano già su reti neurali. Le GPU-based neural network possono ad oggi già svolgere semplici compiti di riconoscimento e decisione molto meglio di algoritmi "tradizionali". Il futuro è decisamente qui!


Tom's Consiglia

L'architettura Pascal nelle auto ma anche nei vostri PC, con la GTX 1070 si gioca alla grande!