2015-06-30 37 views
5

È possibile eseguire OpenCL su un sistema progettato da un utente su una scheda di prototipazione SoC? Per essere più specifici, ho uno ZedBoard (Xilinx Zynq) che ha due core ARM e un'area Logica programmabile (PL). Se progetto un mio semplice sistema che ha un acceleratore di elaborazione video implementato nell'area logica, un core ARM e un'interconnessione AXI, cosa devo fare per fornire supporto OpenCL per questo semplice sistema? (In questo semplice sistema, il core ARM potrebbe essere l'host e l'acceleratore di elaborazione video potrebbe essere il "dispositivo").OpenCL per i sistemi personalizzati sulla scheda di prototipazione SoC

Sono uno studente e ho solo alcune nozioni di base su OpenCL. Ho fatto delle ricerche sulla mia domanda e ho finito per confondermi. Quali sono le cose che devono essere fatte per fornire supporto OpenCL per un SoC? Capisco che questo possa essere un grande progetto, ma ho bisogno di una linea guida da cui partire e come procedere.

+0

Non sono sicuro che sia d'aiuto, ma almeno ci * sono * processori basati su ARM per cui esistono implementazioni OpenCL: http://www.ziilabs.com/products/software/opencl.php – Marco13

risposta

1

cosa devo fare per fornire supporto OpenCL per questo semplice sistema?

Implementare una piattaforma OpenCL che utilizzi la CPU ARM o l'FPGA (o entrambi). Direi che è praticamente impossibile per te; ARM sarebbe sicuramente offrire uno per la CPU se fosse facile (e sicuramente hanno i mezzi finanziari per impiegare ingegneri capaci/scienziati informatici), e implementare acceleratori su un FPGA richiede una conoscenza approfondita dello sviluppo FPGA, così come la teoria del compilatore e esperienza nella progettazione di sistemi. Non voglio sembrare cattivo, ma sembra che tu non abbia nessuno di questi tre.

Hai chiesto dove iniziare; Raccomando solo di scrivere un primo acceleratore che, ad es. somma un vettore di numeri; non appena lo avrai, avrai un'idea più chiara del tuo compito.

Se si desidera dare un'occhiata a un riferimento: Ettus USRP E310 è un dispositivo SDR basato su zynq. Ettus ha una tecnologia chiamata RFNoC, che è allows users to write their own blocks to push data through. Si noti che questo ha richiesto un bel po 'di ingegneri e un bel po' di tempo per iniziare. Si noti inoltre che è molto più semplice dell'implementazione di qualcosa che converta le implementazioni OpenCL in FPGA.

+0

Grazie per la risposta. Hai ragione, ho poca conoscenza, sono uno studente non laureato e voglio solo iniziare. Hai detto "Implementa una piattaforma OpenCL"; sarebbe qualcosa di simile a pocl (www.portablecl.org) aiuto? – Haq100

+0

Questo è meno un problema di conoscenza che di manodopera - avere un'implementazione openCL funzionante richiede molti sviluppatori. Ovviamente è possibile utilizzare piattaforme OpenCL per CPU di uso generico come pocl, ma questo non ti darà un'accelerazione significativa a meno che gli algoritmi OpenCL non si adattino perfettamente alle proprietà di queste piattaforme. In generale, credetemi quando dico che ARM non è quello su cui si vuole lavorare: è più lento di quello che si ottiene negli smartphone con un fattore solido. –

+0

Vorrei aggiungere che Xilinx ha anche un'implementazione OpenCL per Zynq. –

0

Prova l'OpenCL SDK ARM. Lo Zedboard ha una CPU ARM A9, questo dovrebbe avere un'unità vettoriale NEON SIMD http://www.arm.com/products/processors/technologies/neon.php che può eseguire OpenCL. Vedi http://www.arm.com/products/multimedia/mali-technologies/opencl-for-neon.php.

Zedboard non è elencato come una piattaforma conforme a OpenCL https://www.khronos.org/conformance/adopters/conformant-products#opencl. Quindi c'è una possibilità che il driver ARM non funzioni.

Buona fortuna!

+1

Non sapevo che l'A9 era coperto! simpatico. Tuttavia, se hai uno zynq e fai il tuo numero scricchiolio sul braccio, stai facendo qualcosa di sbagliato ... –

+2

Xilinx fornisce un'implementazione OpenCL per Zynq. –

+0

@buttifulbuttefly è fantastico, ma cosa fa? Implementare uno specifico vector proc sull'FPGA? –

1

Sono anche uno studente e il mio progetto attuale è anche in corso una direzione simile, ho installato con successo una versione di opencl chiamata POCL sullo zedboard, rileva con successo la CPU arm della zedboard. Per installare pocl, hai bisogno di llvm e di un'orda di altre cose.esempio

http://www.hosseinabady.com/install-pocl-opencl

  1. esecuzione::

    1. PoCL Installazione http://www.hosseinabady.com/embedded-system-by-examples/opencl_embedded_system/opencl-vector-addition -: ma passi fondamentali per arrivare PoCL sul ZedBoard sono riportati di seguito

    2. Un sacco di dipendenza: può essere risolto facilmente

    ma LLVM assicuratevi di installare versione 3.4 per PoCL 0.9

    1. procedura per installare LLVM

    https://github.com/pacs-course/pacs/wiki/Instructions-to-install-clang-3.1-on-ubuntu-12.04.1-and-12.10

    POCL 0.9 sta lavorando con successo per io, mentre esegui l'installazione, dovrai affrontare molte altre dipendenze mancanti come hwloc, le librerie di mesa, le intestazioni open gl/cl, i caricatori icd, spero che tu possa risolverli poiché è un elenco molto grande da includere nello stack overflow.

    Al fine di rilevare l'FPGA come dispositivo cl aperta, thats non sarà una cosa banale da fare, è possibile fare riferimento a questa domanda link che ho postato su github

    https://github.com/pocl/pocl/issues/285

    e anche un documento di ricerca pubblicato da hosseinbady trovato sulle pubblicazioni collegamento sul sito web PoCL

    http://pocl.sourceforge.net/publications.html

    speranza che questo ti aiuta