EMBEDDED
52 • MAGGIO • 2014
58
HARDWARE
SoC
una soluzione non proprietaria e cross-platform per acce-
lerare l’esecuzione delle loro applicazioni sulle piattaforme
di elaborazione più diffuse tra cui APU, SOC e CPU e GPU
multicore. OpenCL consente agli sviluppatori di focalizzarsi
sulle loro applicazioni invece che sull’architettura dei chip
sfruttando un unico codice sorgente portabile, mettendo a
disposizione un linguaggio e una toolchain unificata da uti-
lizzare su tutti i processori paralleli attualmente in uso. Per
ottenere un risultato di questo tipo allo sviluppatore viene
presentato un modello di piattaforma astratto che concettua-
lizza tutte queste architetture nel medesimo modo, oltre a un
modello di esecuzione che supporta il parallelismo dei task e
dei dati per le varie architetture eterogenee.
La recente introduzione del modulo OpenCV OCL consente
ai progettisti dei sistemi di visione di sfruttare le potenzialità
offerte da OpenCV e OpenCL all’interno di un framework
unificato: essi possono utilizzare OpenCL per accelerare la
funzionalità OpenCV scelta su dispositivi compatibili con
OpenCL – tra cui APU, SOC e GPU discrete – al fine di
sfruttare l’elevato throughput di calcolo di questi processori.
Il modulo OpenCV OCL è progettato in modo da assicurare
la massima semplicità di utilizzo e non richiede una cono-
scenza pregressa di OpenCL per il suo utilizzo, consentendo
ai progettisti di integrare funzionalità in modo semplice
mediante kernel OpenCL personalizzati all’interno del fra-
mework OpenCV.
OpenCV OCL mette a disposizione dei progettisti di sistemi
di visione artificiale un esaustivo database di funzioni pronte
all’uso che rappresentano un valido ausilio per lo sviluppo e
l’applicazione di algoritmi di visione avanzati. Esso include
funzioni di utilità (utility), primitive di basso livello e algorit-
mi di alto livello. Le utility e le primitive di basso livello rap-
presentano la base sulla quale sviluppare algoritmi di visione
in tempo reale che sfruttano le potenzialità di OCL, mentre
le funzionalità di alto livello prevedono algoritmi sofisticati
tramite i quali è possibile conseguire elevate livelli di preci-
sione, come ad esempio quelli richiesti nelle applicazioni di
riconoscimento facciale.
Scalabilità senza precedenti
La combinazione di OpenCV e OpenCL ottenuta attraverso
il modulo OpenCV OCL, offre ai progettisti di sistemi di
visione artificiale una piattaforma di programmazione di tipo
non proprietario che permette di accelerare l’elaborazione
parallela in un’ampia gamma di sistemi di tipo compute-
intensive (ovvero che richiedono grosse risorse di calcolo),
dalle telecamere smart basate su PC ai sistemi di visione
compatti, ai server per visione artificiale. La possibilità di
sviluppare e manutenere un unico codice sorgente portabile
che può essere utilizzato sui SoC e sulle APU presenti all’in-
terno di tali sistemi consente agli sviluppatori di aumentare
l’efficienza in fase di programmazione e di preservando tutte
le potenzialità dei loro codici sorgente (di solito resource
intensive).
Le APU e la nuova generazione di SoC garantiscono i mede-
simi vantaggi in termini di scalabilità, supportando sistemi
con esigenze molto diverse tra loro in termini di prestazioni
e consumi ed eliminando la necessità di “scomporre” le piat-
taforme di elaborazione di base per poter utilizzare sistemi
con requisiti di consumi e prestazioni molto differenti tra di
loro.
Con i SoC della serie G e le APU della serie R AMD è in
grado di soddisfare tutte le esigenze – a livello di prestazioni
e consumi – dei sistemi di visione.
Grazie alla compatibilità con l’architettura x86 e alla possibi-
lità di supportare sistemi sia di fascia alta sia di fascia bassa,
questi SoC e APU permettono di effettuare elaborazioni
dell’immagine ad alta velocità su diverse piattaforme e di
ottenere maggiori livelli di efficienza – in termini operativi
e di progettazione – attraverso l’utilizzo di un’architettura
omogenea coerente.
L’adozione di tool di sviluppo aperti come OpenCV OCL per
sfruttare appieno le potenzialità di elaborazione dei nuovi
sistemi di visione basati sulle APU e/i nuovi SOC consente
ai progettisti di sviluppare sistemi che supportano l’elabo-
razione parallela in grado di operare a velocità nettamente
superiori rispetto a quelle di analoghi sistemi delle prece-
denti generazioni senza per questo penalizzare le dimensioni
complessive delle apparecchiature.
Fig. 3 – Schema a blocchi dei SoC della serie G di
AMD