FPGA SDK per a OpenCL
Guia d'usuari
UG-OCL009
2017.05.08
Última actualització per a Intel® Quartus® Prime Design Suite: 17.0
Subscriu-te
Envia comentaris
SDK Intel® FPGA per a OpenCL™ Guia de portada de plataforma de referència del kit de desenvolupament de SoC Intel® Cyclone®V
V SoC Development Kit Reference Platform Porting Guide descriu el disseny de maquinari i programari de la Intel Cyclone V SoC Development Kit Reference Platform (c5soc) per utilitzar-lo amb l'Intel Software Development Kit (SDK) per a OpenCL L'Intel ® FPGA SDK per a OpenCL ™ Intel Cyclone ® . Abans de començar, Intel recomana encaridament que us familiaritzeu amb el contingut dels documents següents:
- Intel FPGA SDK per a OpenCLIntel Cyclone V SoC Guia d'iniciació
- Guia d'usuari del kit d'eines de plataforma personalitzada d'Intel FPGA SDK per a OpenCL
- Manual de dispositius Cyclone V, volum 3: Manual de referència tècnica del sistema de processador dur A més, consulteu la pàgina del kit de desenvolupament de SoC Cyclone V i de la suite de disseny incrustat de SoC de l'Altera weblloc per a més informació. 1 2
Atenció: Intel assumeix que coneixeu a fons la Guia d'usuari del kit d'eines de plataforma personalitzada d'Intel FPGA SDK per a OpenCL. La Guia de portació de la plataforma de referència del kit de desenvolupament de SoC Cyclone V no descriu l'ús del kit d'eines de plataforma personalitzada de l'SDK per implementar una plataforma personalitzada per al kit de desenvolupament de SoC Cyclone V. Només descriu les diferències entre el suport SDK al kit de desenvolupament de SoC Cyclone V i un SDK genèric Intel FPGA per a la plataforma personalitzada OpenCL.
Enllaços relacionats
- Intel FPGA SDK per a OpenCL Cyclone V SoC Guia d'iniciació
- Guia d'usuari del kit d'eines de plataforma personalitzada d'Intel FPGA SDK per a OpenCL
- Manual del dispositiu Cyclone V, volum 3: Manual de referència tècnica del sistema de processador dur
- Cyclone V SoC Development Kit i pàgina de SoC Embedded Design Suite a l'Altera weblloc
- OpenCL i el logotip d'OpenCL són marques comercials d'Apple Inc. utilitzades amb permís de Khronos Group™.
- L'SDK Intel FPGA per a OpenCL es basa en una especificació de Khronos publicada i ha superat el procés de prova de conformitat de Khronos. L'estat de conformitat actual es pot trobar a www.khronos.org/conformance.
Intel Corporation. Tots els drets reservats. Intel, el logotip d'Intel, Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus i els logotips de Stratix són marques comercials d'Intel Corporation o de les seves filials als EUA i/o altres països. Intel garanteix el rendiment dels seus productes FPGA i semiconductors amb les especificacions actuals d'acord amb la garantia estàndard d'Intel, però es reserva el dret de fer canvis a qualsevol producte i servei en qualsevol moment sense previ avís. Intel no assumeix cap responsabilitat derivada de l'aplicació o l'ús de qualsevol informació, producte o servei descrit aquí, tret que Intel ho acordi expressament per escrit. Es recomana als clients d'Intel que obtinguin la darrera versió de les especificacions del dispositiu abans de confiar en qualsevol informació publicada i abans de fer comandes de productes o serveis.
* Altres noms i marques es poden reclamar com a propietat d'altres.
1.1.1 Variants de la plataforma de referència del kit de desenvolupament de SoC Cyclone V
La plataforma de referència del kit de desenvolupament de SoC Intel FPGA SDK per a OpenCL Cyclone V inclou dues variants de placa.
- tauler c5soc
Aquesta placa predeterminada proporciona accés a dos bancs de memòria DDR. L'HPS DDR és accessible tant per l'FPGA com per la CPU. L'FPGA DDR només és accessible per l'FPGA. - c5soc_sharedonly tauler
Aquesta variant de placa només conté connectivitat HPS DDR. La FPGA DDR no és accessible. Aquesta variant de placa és més eficient a l'àrea perquè es necessita menys maquinari per suportar un banc de memòria DDR. La placa c5soc_sharedonly també és una bona plataforma de prototipatge per a una placa de producció final amb un sol banc de memòria DDR.
Per orientar aquesta variant del tauler quan compileu el vostre nucli OpenCL, incloeu l'opció -board c5soc_sharedonly a la vostra comanda aoc.
Per a més informació a la junta opció de l'ordre aoc, consulteu la Guia de programació Intel FPGA SDK per a OpenCL.
Enllaços relacionats
Compilant un nucli per a una placa FPGA específica (–board )
1.1.2 Contingut de la plataforma de referència del kit de desenvolupament de SoC Cyclone V
La plataforma de referència del kit de desenvolupament de Cyclone V SoC consta del següent files i directoris:
File o Directori | Descripció |
board_env.xml | Llenguatge de marcat extensible (XML) file que descriu c5soc a l'SDK Intel FPGA per a OpenCL. |
linux_sd_card_image.tgz | Imatge de la targeta flash SD comprimida file que conté tot el que necessita un usuari d'SDK per utilitzar el kit de desenvolupament de SoC Cyclone V amb l'SDK. |
braç 32 | Directori que conté el següent: |
1.1.3 Característiques rellevants del kit de desenvolupament de SoC Cyclone V
La llista següent destaca els components i les funcions del kit de desenvolupament de SoC Cyclone V que són rellevants per a l'SDK Intel FPGA per a OpenCL:
- CPU ARM Cortex-A9 de doble nucli amb Linux de 32 bits.
- Bus d'interfície extensible avançada (AXI) entre l'HPS i el teixit central FPGA.
- Dos controladors de memòria DDR endurits, cadascun connectat a una SDRAM DDR1 d'3 gigabyte (GB).
— Un controlador DDR només és accessible per al nucli FPGA (és a dir, FPGA DDR).
— L'altre controlador DDR és accessible tant a l'HPS com a l'FPGA (és a dir, a l'HPS DDR). Aquest controlador compartit permet compartir memòria lliure entre la CPU i el nucli FPGA. - La CPU pot reconfigurar el teixit central FPGA.
1.1.3.1 Plataforma de referència del kit de desenvolupament de SoC Cyclone V Objectius i decisions de disseny Intel basa la implementació de la plataforma de referència del kit de desenvolupament de SoC Cyclone V en diversos objectius i decisions de disseny. Intel recomana que tingueu en compte aquests objectius i decisions quan porteu aquesta plataforma de referència a la vostra placa SoC FPGA.
A continuació es mostren els objectius de disseny de c5soc:
- Proporcioneu l'amplada de banda més gran possible entre els nuclis de l'FPGA i els sistemes de memòria DDR.
- Assegureu-vos que els càlculs a l'FPGA (és a dir, els nuclis OpenCL) no interfereixin amb altres tasques de la CPU que puguin incloure el servei de perifèrics.
- Deixeu tants recursos FPGA com sigui possible per als càlculs del nucli en lloc dels components de la interfície.
A continuació es mostren les decisions de disseny d'alt nivell que són les conseqüències directes dels objectius de disseny d'Intel:
- La plataforma de referència només utilitza controladors de memòria DDR dur amb la configuració més àmplia possible (256 bits).
- L'FPGA es comunica directament amb el controlador de memòria HPS DDR, sense implicar el bus AXI i l'interruptor L3 dins de l'HPS. La comunicació directa proporciona el millor ample de banda possible a DDR i evita que els càlculs FPGA interfereixin amb les comunicacions entre la CPU i la seva perifèria.
- L'accés directe a la memòria dispersa (SG-DMA) no forma part de la lògica de la interfície FPGA. En lloc de transferir grans quantitats de dades entre sistemes de memòria DDR, emmagatzemeu les dades al DDR HPS compartit. L'accés directe a la memòria de la CPU per part de l'FPGA és més eficient que el DMA. Estalvia recursos de maquinari (és a dir, àrea FPGA) i simplifica el controlador del nucli de Linux.
Avís: La transferència de memòria entre el sistema HPS DDR compartit i el sistema DDR que només és accessible per a l'FPGA és molt lenta. Si ho decideixes
transferiu la memòria d'aquesta manera, utilitzeu-la només per a quantitats molt petites de dades. - L'amfitrió i el dispositiu realitzen una transferència de dades no DMA entre si mitjançant el pont HPS a FPGA (H2F), utilitzant només un port de 32 bits. El motiu és que, sense DMA, el nucli de Linux només pot emetre una única sol·licitud de lectura o escriptura de 32 bits, de manera que no és necessari tenir una connexió més àmplia.
- L'amfitrió envia senyals de control al dispositiu mitjançant un pont H2F (LH2F) lleuger.
Com que els senyals de control de l'amfitrió al dispositiu són senyals d'amplada de banda baixa, un pont LH2F és ideal per a la tasca.
1.2 Portar la plataforma de referència a la vostra placa SoC FPGA
Per portar la plataforma de referència del kit de desenvolupament de SoC Cyclone V a la vostra placa FPGA de SoC, realitzeu les tasques següents:
- Seleccioneu una memòria DDR o les dues versions de memòria DDR de la plataforma de referència c5soc com a punt de partida del vostre disseny.
- Actualitzeu les ubicacions dels pins a ALTERAOCLSDKROOT/board/c5soc/ /top.qsf file, on ALTERAOCLSDKROOT és el camí a la ubicació de l'SDK Intel FPGA per a la instal·lació d'OpenCL i és el nom del directori de la variant del tauler. El directori c5soc_sharedonly és per a la variant de la placa amb un sistema de memòria DDR. El directori c5soc és per a la variant de placa amb dos sistemes de memòria DDR.
- Actualitzeu la configuració de DDR per als blocs SDRAM HPS i/o FPGA a ALTERAOCLSDKROOT/board/c5soc/ /system.qsys file.
4. Tots els dissenys de plaques preferits d'Intel FPGA SDK per a OpenCL han d'aconseguir un tancament de temps garantit. Com a tal, la col·locació del disseny ha de ser neta. Per portar la partició de la placa c5soc (acl_iface_partition.qxp) a la vostra placa FPGA SoC, feu les tasques següents:
Per obtenir instruccions detallades sobre la modificació i la conservació de la partició de la placa, consulteu Quartus
Capítol de la compilació incremental de Prime per al disseny jeràrquic i basat en equips del manual Quartus Prime Standard Edition.
a. Traieu el fitxer acl_iface_partition.qxp del directori ALTERAOCLSDKROOT/board/c5soc/c5soc.
b. Habiliteu la regió acl_iface_region LogicLock™ canviant l'ordre Tcl set_global_assignment -name LL_ENABLED OFF -section_id acl_iface_region per set_global_assignment -name LL_ENABLED ON -section_id acl_iface_region
c. Compileu un nucli OpenCL per al vostre tauler.
d. Si cal, ajusteu la mida i la ubicació de la regió de LogicLock.
e. Quan estigueu convençut que la ubicació del vostre disseny és neta, exporteu aquesta partició com a partició exportada acl_iface_partition.qxp Quartus Prime File.
Tal com es descriu a la secció Establiment d'un flux de temps garantit de la Guia d'usuari del kit d'eines de plataforma personalitzada de AIntel FPGA SDK per a OpenCL, important aquest .qxp file al disseny de primer nivell, compliu el requisit de proporcionar un disseny de placa amb un flux de tancament de temps garantit.
Per conèixer els factors que poden afectar la qualitat dels resultats (QoR) de la partició exportada, consulteu la secció Consideracions generals sobre la qualitat dels resultats per a la partició de la placa exportada a la Guia d'usuari del kit d'eines de plataforma personalitzada d'Intel FPGA SDK per a OpenCL.
f. Desactiveu la regió acl_iface_region LogicLock revertint l'ordre del pas 2 a set_global_assignment -name LL_ENABLED OFF section_id acl_iface_region. - Si la vostra placa SoC FPGA utilitza diferents pins i perifèries del bloc HPS, regenera el precarregador i la font de l'arbre del dispositiu (DTS) file. Si canvieu la configuració del controlador de memòria HPS DDR, regenera el precarregador.
- Creeu la imatge de la targeta flash SD.
- Creeu la vostra plataforma personalitzada, que inclou la imatge de la targeta flash SD.
- Penseu en crear una versió de l'entorn d'execució de la vostra plataforma personalitzada per utilitzar-la amb l'entorn d'execució Intel FPGA (RTE) per a OpenCL. La versió RTE de la vostra plataforma personalitzada no inclou directoris de maquinari ni la imatge de la targeta flash SD. Aquesta plataforma personalitzada es carrega al sistema SoC FPGA per permetre que les aplicacions amfitriones s'executin. En canvi, la versió SDK de la plataforma personalitzada és necessària perquè l'SDK compile nuclis OpenCL.
Consell: podeu utilitzar la versió SDK de la vostra plataforma personalitzada per a RTE. Guardar
espai, traieu la imatge de la targeta flash SD de la versió RTE de la vostra plataforma personalitzada. - Prova la teva plataforma personalitzada.
Consulteu la secció Prova del disseny de maquinari de la Guia d'usuari del kit d'eines de plataforma personalitzada d'Intel FPGA SDK per a OpenCL per obtenir més informació.
Enllaços relacionats
- Prova del disseny de maquinari
- Compilació incremental de Quartus Prime per al disseny jeràrquic i basat en equip
- Establiment de flux de temps garantit
- Consideracions generals sobre la qualitat dels resultats per a la partició de la placa exportada
1.2.1 Actualització d'una plataforma de referència portada
A la versió actual de la plataforma de referència del kit de desenvolupament de Cyclone V SoC, el bloc HPS es troba dins de la partició que defineix tota la lògica que no és del nucli. Tanmateix, no podeu exportar l'HPS com a part del .qxp file. Per actualitzar una plataforma personalitzada existent que heu modificat a partir d'una versió anterior de c5soc, implementeu el flux de preservació QXP, actualitzeu la imatge de la targeta flash SD per obtenir l'últim entorn d'execució i actualitzeu board_spec.xml file per permetre l'automigració.
L'SDK d'Altera® per a la versió 14.1 d'OpenCL i posteriors sondeja el board_spec.xml file per obtenir informació del tauler i implementa actualitzacions automàtiques. Perquè modifiqueu el
disseny mitjançant la implementació del flux de preservació QXP, heu d'actualitzar el fitxer board_spec.xml file al seu format en la versió actual. Actualització del file permet que l'SDK distingeix entre les plataformes personalitzades sense conservar i les plataformes personalitzades actuals basades en QXP. Consulteu l'Automigració de la plataforma personalitzada per a la compatibilitat cap endavant a la Guia d'usuari del kit d'eines de plataforma personalitzada d'Intel FPGA SDK per a OpenCL per obtenir més informació.
- Per implementar el flux de preservació QXP en un disseny de maquinari FPGA SoC Cyclone V que es porta des d'una versió anterior de c5soc, seguiu els passos següents per crear una subpartició per excloure l'HPS del .qxp file:
a. Abans de crear una partició al voltant de la lògica no del nucli, creeu una partició al voltant de l'HPS a la configuració .qsf Quartus Prime File.
Per exampLI:
# Particioneu manualment la instància que modela el set_instance_assignment d'E/S dedicada a HPS -name PARTITION_HIERARCHY borde_18261 -a "system:the_system|system_acl_iface:acl_iface|system_acl_iface_hps_0:hps_0|system_acl_iface_ps_hps|___ system_acl_iface_hps_0_hps_io_border:border” -section_id “system_acl_iface_hps_0_hps_io_border:border”
# Estableix la partició perquè sigui un tipus HPS_PARTITION perquè la resta de Quartus la processi correctament
set_global_assignment -name PARTITION_TYPE HPS_PARTITION -section_id "system_acl_iface_hps_0_hps_io_border:border"
quartus_cdb top -c top
–incremental_compilation_export=acl_iface_partition.qxp
–nom_partició_de_exportació_de_compilació_incremental=partició_acl_iface
–incremental_compilation_export_post_synth=activat
–incremental_compilation_export_post_fit=on
–incremental_compilation_export_routing=activat
–incremental_compilation_export_flatten=desactivat
Després d'excloure l'HPS de la partició, podeu importar el .qxp file i compila el teu disseny. - Actualitzeu la imatge de la targeta flash SD amb la versió actual de l'Intel FPGA RTE per a OpenCL realitzant les tasques següents:
a. Muntar el file taula d'assignació (fat32) i ampliada file particions del sistema (ext3) a la imatge existent com a dispositius de bucle enrere. Per obtenir instruccions detallades, consulteu el pas 2 de Creació d'una imatge de targeta flash SD.
b. Al directori /home/root/opencl_arm32_rte, elimineu el fitxer files de la versió anterior del RTE.
c. Baixeu i desempaqueteu la versió actual del RTE al directori /home/root/opencl_arm32_rte.
d. En el /driver/version.h file de la vostra plataforma personalitzada, actualitzeu l'assignació ACL_DRIVER_VERSION a . (per example, 16.1.x, on 16.1 és la versió de l'SDK i x és la versió del controlador que heu definit).
e. Reconstrueix el controlador.
f. Suprimiu les carpetes de maquinari de la vostra plataforma personalitzada. Copieu la plataforma personalitzada, juntament amb el controlador actualitzat, al directori /home/root/opencl_arm_rte/board.
g. Copieu l'Altera.icd file des del directori /home/root/opencl_arm32_rte i afegiu-lo al directori /etc/OpenCL/vendors.
h. Desmunteu i proveu la nova imatge. Per obtenir instruccions detallades, consulteu els passos 8 a 11 de Creació d'una imatge de targeta flash SD.
Enllaços relacionats
- Creació d'una imatge de targeta flash SD a la pàgina 14
També teniu l'opció de crear una imatge de targeta flash SD nova. - Automigració de plataforma personalitzada per a la compatibilitat cap endavant
1.3 Suport de programari per a la memòria compartida
La memòria física compartida entre FPGA i CPU és la memòria preferida per als nuclis OpenCL que s'executen en FPGA SoC. Com que l'FPGA accedeix a la memòria física compartida, a diferència de la memòria virtual compartida, no té accés a les taules de pàgines de la CPU que mapegen les adreces virtuals dels usuaris amb les adreces de les pàgines físiques.
Pel que fa al maquinari, els nuclis OpenCL accedeixen a la memòria física compartida mitjançant la connexió directa al controlador de memòria dura HPS DDR. Pel que fa al programari, el suport per a la memòria física compartida implica les consideracions següents:
- Implementacions de programari típiques per assignar memòria a la CPU (per exemple,ample, la funció malloc()) no pot assignar una regió de memòria que l'FPGA pugui utilitzar.
La memòria que assigna la funció malloc() és contigua a l'espai d'adreces de memòria virtual, però és poc probable que les pàgines físiques subjacents siguin contigües físicament. Com a tal, l'amfitrió ha de ser capaç d'assignar regions de memòria físicament contigües. Tanmateix, aquesta capacitat no existeix a les aplicacions d'espai d'usuari a Linux. Per tant, el controlador del nucli Linux ha de realitzar l'assignació. - El controlador del nucli OpenCL SoC FPGA Linux inclou la funció mmap() per assignar memòria física compartida i assignar-la a l'espai de l'usuari. La funció mmap() utilitza la crida estàndard del nucli de Linux dma_alloc_coherent() per sol·licitar regions de memòria físicament contigües per compartir-les amb un dispositiu.
- Al nucli predeterminat de Linux, dma_alloc_coherent() no assigna memòria físicament contigua de més de 0.5 megabytes (MB) de mida. Per permetre que dma_alloc_coherent() assigni grans quantitats de memòria físicament contigua, activeu la funció d'assignació de memòria contigua (CMA) del nucli de Linux i torneu a compilar el nucli de Linux.
Per a la plataforma de referència del kit de desenvolupament de SoC Cyclone V, CMA gestiona 512 MB d'1 GB de memòria física. Podeu augmentar o disminuir aquest valor, depenent de la quantitat de memòria compartida que requereixi l'aplicació. És possible que la crida dma_alloc_coherent() no pugui assignar els 512 MB complets de memòria físicament contigua; tanmateix, pot obtenir rutinàriament aproximadament 450 MB de memòria. - La CPU pot emmagatzemar la memòria cau que la crida dma_alloc_coherent() assigna. En particular, les operacions d'escriptura des de l'aplicació host no són visibles per als nuclis OpenCL. La funció mmap() del controlador del nucli OpenCL SoC FPGA Linux també conté crides a la funció pgprot_noncached() o remap_pf_range() per desactivar la memòria cau d'aquesta regió de memòria de manera explícita.
- Després que la funció dma_alloc_coherent() assigni la memòria físicament contigua, la funció mmap() retorna l'adreça virtual al principi de l'interval, que és l'abast d'adreces de la memòria que assigneu. L'aplicació amfitrió requereix aquesta adreça virtual per accedir a la memòria. D'altra banda, els nuclis OpenCL requereixen adreces físiques. El controlador del nucli de Linux fa un seguiment de l'assignació d'adreces virtuals a físiques. Podeu assignar les adreces físiques que mmap() retorna a les adreces físiques reals afegint una consulta al controlador.
La crida aocl_mmd_shared_mem_alloc() MMD d'interfície de programació d'aplicacions (API) incorpora les consultes següents:
a. La funció mmap() que assigna memòria i retorna l'adreça virtual.
b. La consulta addicional que assigna l'adreça virtual retornada a l'adreça física.
La crida a l'API MMD aocl_mmd_shared_mem_alloc() retorna dues adreces
—l'adreça de retorn real és l'adreça virtual i l'adreça física va a device_ptr_out.
Nota: El controlador només pot assignar les adreces virtuals que la funció mmap() retorna a les adreces físiques. Si sol·liciteu l'adreça física de qualsevol altre punter virtual, el controlador retorna un valor NULL.
Avís: L'SDK Intel FPGA per a les biblioteques de temps d'execució OpenCL suposa que la memòria compartida és la primera memòria que apareix a board_spec.xml file. En altres paraules, l'adreça física que obté el controlador del nucli Linux es converteix en l'adreça Avalon® que el nucli OpenCL passa a la SDRAM d'HPS.
Pel que fa a la biblioteca en temps d'execució, utilitzeu la crida clCreateBuffer() per assignar la memòria compartida com a memòria intermèdia del dispositiu de la manera següent:
- Per a la variant de dues plaques DDR amb memòria compartida i no compartida, clCreateBuffer() assigna memòria compartida si especifiqueu el senyalador CL_MEM_USE_HOST_PTR. L'ús d'altres senyaladors fa que clCreateBuffer() assigni la memòria intermèdia a la memòria no compartida.
- Per a la variant d'una placa DDR amb només memòria compartida, clCreateBuffer() assigna memòria compartida independentment de la marca que especifiqueu.
Actualment, el suport de Linux de 32 bits a la CPU ARM regula l'extensió del suport de memòria compartida a les biblioteques de temps d'execució SDK. En altres paraules, biblioteques en temps d'execució compilades a altres entorns (per example, x86_64 Linux o Windows de 64 bits) no admeten la memòria compartida.
C5soc no va implementar memòria heterogènia per distingir entre memòria compartida i no compartida pels motius següents:
1. Historial: el suport de memòria heterogènia no estava disponible quan es va crear originalment el suport de memòria compartida.
2. Interfície uniforme: com que OpenCL és un estàndard obert, Intel manté la coherència entre els proveïdors heterogenis de plataformes de computació. Per tant, s'utilitza la mateixa interfície que les arquitectures d'altres venedors de plaques per assignar i utilitzar memòria compartida.
1.4 Reconfiguració FPGA
Per als FPGA SoC, la CPU pot reconfigurar el teixit central de l'FPGA sense interrompre el funcionament de la CPU. El bloc de maquinari FPGA Manager que es troba a cavall entre l'HPS i el nucli FPGA realitza la reconfiguració. El nucli de Linux inclou un controlador que permet un accés fàcil al gestor FPGA.
- A view l'estat del nucli FPGA, invoqueu l'ordre cat /sys/class/fpga/fpga0/ status.
La utilitat de programa Intel FPGA SDK per a OpenCL disponible amb la plataforma de referència del kit de desenvolupament de Cyclone V SoC utilitza aquesta interfície per programar l'FPGA. Quan es reprograma un nucli FPGA amb una CPU en execució, la utilitat del programa realitza totes les tasques següents:
1. Abans de reprogramar, desactiveu tots els ponts de comunicació entre l'FPGA i l'HPS, tant els ponts H2F com els LH2F.
Torneu a activar aquests ponts un cop finalitzada la reprogramació.
Atenció: el sistema OpenCL no utilitza el pont FPGA a HPS (F2H). Consulteu la secció Interfícies HPS-FPGA del Manual del dispositiu Cyclone V, Volum 3: Manual de referència tècnica del sistema de processador dur per obtenir més informació.
2. Assegureu-vos que l'enllaç entre l'FPGA i el controlador HPS DDR estigui desactivat durant la reprogramació.
3. Assegureu-vos que les interrupcions de l'FPGA a l'FPGA estiguin desactivades durant la reprogramació.
A més, aviseu al controlador perquè rebutgi qualsevol interrupció de l'FPGA durant la reprogramació.
Consulteu el codi font de la utilitat del programa per obtenir detalls sobre la implementació real.
Avís: No canvieu la configuració del controlador HPS DDR quan la CPU s'està executant.
Si ho feu, pot provocar un error fatal del sistema perquè podeu canviar la configuració del controlador DDR quan hi hagi transaccions de memòria pendents de la CPU. Això vol dir que quan la CPU s'està executant, no podeu reprogramar el nucli FPGA amb una imatge que utilitzi HPS DDR en una configuració diferent.
Recordeu que el sistema OpenCL i el disseny de referència Golden Hardware disponible amb l'Intel SoC FPGA Embedded Design Suite (EDS), estableix l'HPS DDR en un únic mode de 256 bits.
Les parts del sistema de la CPU, com ara el predictor de branques o el prefetcher de la taula de pàgines, poden emetre ordres DDR fins i tot quan sembli que no s'executa res a la CPU.
Per tant, el temps d'arrencada és l'únic moment segur per configurar la configuració del controlador HPS DDR.
Això també implica que U-boot ha de tenir un binari en brut file (.rbf) imatge per carregar a la memòria. En cas contrari, és possible que habiliteu l'HPS DDR amb ports no utilitzats a l'FPGA i, a continuació, podríeu canviar les configuracions del port després. Per aquest motiu, el controlador del nucli OpenCL Linux ja no inclou la lògica necessària per establir la configuració del controlador HPS DDR.
Els interruptors de paquet en línia dual (DIP) SW3 del kit de desenvolupament de SoC Cylone V controlen la forma esperada de la imatge .rbf (és a dir, si el file està comprimit i/o xifrat). C5soc i el Golden Hardware Reference Design disponible amb el SoC EDS, inclouen imatges .rbf comprimides però sense xifrar. La configuració del commutador DIP SW3 descrita a l'SDK d'Intel FPGA per a la Guia d'inici del SoC OpenCL Cyclone V coincideix amb aquesta configuració d'imatge .rbf.
Enllaços relacionats
- Interfícies HPS-FPGA
- Configuració dels interruptors SW3
1.4.1 Detalls de l'arquitectura del sistema FPGA
El suport per a la plataforma de referència del kit de desenvolupament de SoC Cyclone V es basa en la plataforma de referència Stratix® V (s5_ref), disponible amb l'SDK Intel FPGA per a OpenCL.
L'organització general del sistema c5soc Qsys i el controlador del nucli són molt semblants als de s5_ref.
Els següents components bàsics de l'FPGA són els mateixos tant a c5soc com a s5_ref:
- Bloc VERSION_ID
- Mecanisme de repòs
- Divisor del banc de memòria
- Interfície Snoop de la memòria cau
- Rellotge del nucli
- Blocs de control d'accés al registre (CRA).
1.5 Creació d'una imatge de targeta flash SD
Com que el Cyclone V SoC FPGA és un sistema complet en un xip, sou responsable de proporcionar la definició completa del sistema. Intel recomana que l'entregueu en forma d'imatge de targeta flash SD. L'usuari Intel FPGA SDK per a OpenCL només pot escriure la imatge a la targeta flash micro SD i la placa SoC FPGA està llesta per utilitzar-la.
Modificació d'una imatge de targeta flash SD existent a la pàgina 13
Intel recomana que modifiqueu simplement la imatge disponible amb la plataforma de referència del kit de desenvolupament de SoC Cyclone V. També teniu l'opció de crear una imatge de targeta flash SD nova.
Creació d'una imatge de targeta flash SD a la pàgina 14
També teniu l'opció de crear una imatge de targeta flash SD nova.
1.5.1 Modificació d'una imatge de targeta flash SD existent
Intel recomana que modifiqueu simplement la imatge disponible amb el SoC Cyclone V
Plataforma de referència del kit de desenvolupament. També teniu l'opció de crear una imatge de targeta flash SD nova.
La imatge c5soc linux_sd_card_image.tgz file està disponible al directori ALTERAOCLSDKROOT/board/c5soc, on ALTERAOCLSDKROOT apunta al camí de l'SDK Intel FPGA per al directori d'instal·lació d'OpenCL.
Atenció: Per modificar la imatge de la targeta flash SD, heu de tenir privilegis root o sudo.
- Per descomprimir el $ALTERAOCLSDKROOT/board/c5soc/linux_sd_card_image.tgz file, executeu l'ordre tar xvfzlinux_sd_card_image.tgz.
- Compileu el hello_world OpenCL exampdissenyeu el fitxer mitjançant el suport de la vostra plataforma personalitzada. Canvieu el nom del .rbf file que l'Intel FPGA SDK for OpenCL Offline Compiler genera com a opencl.rbf i col·loqueu-lo a la partició fat32 dins de la imatge de la targeta flash SD.
Podeu descarregar l'ex. hello_worldampel disseny de l'OpenCL Design Examples pàgina de l'Altera weblloc. - Col·loqueu el .rbf file a la partició fat32 de la imatge de la targeta flash.
Atenció: La partició fat32 ha de contenir tant la zImage file i el .rbf file. Sense un .rbf file, es produirà un error fatal en inserir el controlador. - Després de crear la imatge de la targeta SD, escriviu-la a una targeta micro SD invocant l'ordre següent: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
- Per provar la imatge de la targeta flash SD, feu les tasques següents:
a. Inseriu la targeta flash micro SD a la placa SoC FPGA.
b. Enceneu el tauler.
c. Invoqueu l'ordre d'utilitat aocl diagnose.
1.5.2 Creació d'una imatge de targeta flash SD
També teniu l'opció de crear una imatge de targeta flash SD nova. Les instruccions genèriques per crear una nova imatge de targeta flash SD i reconstruir una imatge de targeta flash SD existent estan disponibles a la pàgina GSRD v14.0.2 - Targeta SD de RocketBoards.org weblloc.
Els passos següents descriuen el procediment per crear la imatge linux_sd_card_image.tgz a partir de la imatge de la targeta flash SD Golden System Reference Design (GSRD):
Nota:
Per crear la imatge a partir de la imatge c5soc, realitzeu totes les tasques aplicables descrites en aquest procediment.
- Baixeu i desempaqueteu la versió 14.0 de la imatge de la targeta flash SD GSRD des de Rocketboards.org.
- Muntar el file taula d'assignació (fat32) i ampliada file particions del sistema (ext3) en aquesta imatge com a dispositius de bucle enrere. Per muntar una partició, seguiu els passos següents:
a. Determineu l'inici del byte de la partició dins de la imatge invocant /sbin/fdisk -lu image_file comandament.
Per example, la partició número 1 del tipus W95 FAT té un desplaçament de bloc de 2121728. Amb 512 bytes per bloc, el desplaçament de bytes és de 512 bytes x 2121728 = 1086324736 bytes.
b. Identifiqueu un dispositiu de bucle lliure (per exemple,ample, /dev/loop0) escrivint l'ordre losetup -f.
c. Suposant que /dev/loop0 és el dispositiu de bucle lliure, assigneu la imatge de la vostra targeta flash al dispositiu de bloc de bucle invocant la imatge losetup /dev/loop0_file -0 1086324736 comanda.
d. Munteu el dispositiu de bucle invocant l'ordre mount /dev/loop0 /media/disk1.
Dins la imatge file, /media/disk1 és ara una partició fat32 muntada.
e. Repetiu els passos a a d per a la partició ext3. - Baixeu la versió FPGA del SoC Cyclone V del paquet Intel FPGA Runtime Environment per a OpenCL des del Centre de descàrregues de l'Altera weblloc.
a. Feu clic al botó Baixa al costat de l'edició del programari Quartus Prime.
b. Especifiqueu la versió de llançament, el sistema operatiu i el mètode de descàrrega.
c. Feu clic a la pestanya Programari addicional i seleccioneu per descarregar Intel FPGA
Entorn d'execució per a OpenCL Linux Cyclone V SoC TGZ.
d. Després de descarregar l'aocl-rte- .arm32.tgz file, desempaquetar-lo
un directori que teniu. - Col·loqueu l'aocl-rte- desempaquetat directori .arm32 al directori /home/root/opencl_arm32_rte a la partició ext3 de la imatge file.
- Suprimiu les carpetes de maquinari de la vostra plataforma personalitzada i, a continuació, col·loqueu la plataforma personalitzada al subdirectori del tauler de /home/root/opencl_arm32_rte.
- Creeu el fitxer init_opencl.sh file al directori /home/root amb el contingut següent: export ALTERAOCLSDKROOT=/home/root/opencl_arm32_rte export AOCL_BOARD_PACKAGE_ROOT=$ALTERAOCLSDKROOT/board/ export PATH=$ALTERAOCLSDKROOT/bin:$PATH export LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/host/arm32/lib:$LD_LIBRARY_PATH insmod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.ko
L'usuari de l'SDK executa l'ordre source ./init_opencl.sh per carregar les variables d'entorn i el controlador del nucli OpenCL Linux. - Si necessiteu actualitzar el precarregador, el DTS files, o el nucli de Linux, necessiteu el compilador arm-linux-gnueabihf-gcc del SoC EDS. Seguiu les instruccions descrites a la Guia d'usuari de la suite de disseny incrustat d'Intel SoC FPGA per adquirir el programari, recompilar-lo i actualitzar el programari corresponent. files a la partició fat32 muntada.
Atenció: El més probable és que hàgiu d'actualitzar el precarregador si la vostra plataforma personalitzada té usos de pins diferents dels de c5soc.
Recordeu: si recompileu el nucli de Linux, recompileu el controlador del nucli de Linux amb la mateixa font del nucli de Linux files. Si hi ha una discrepància entre el controlador del nucli de Linux i el nucli de Linux, el controlador no es carregarà. A més, heu d'habilitar el CMA.
Consulteu Recopilació del nucli de Linux per obtenir més informació. - Compileu el hello_world OpenCL exampdissenyeu el fitxer mitjançant el suport de la vostra plataforma personalitzada. Canvieu el nom del .rbf file que l'Intel FPGA SDK for OpenCL Offline Compiler genera com a opencl.rbf i col·loqueu-lo a la partició fat32 dins de la imatge de la targeta flash SD.
Podeu descarregar l'ex. hello_worldampel disseny de l'OpenCL Design Examples pàgina de l'Altera weblloc.
9. Després d'emmagatzemar tot el necessari files a la imatge de la targeta flash, invoqueu les ordres següents:
a. sincronitzar
b. desmuntar /media/disk1
c. desmuntar on és el nom del directori que utilitzeu per muntar la partició ext3 a 3 a la pàgina 3 (per exempleample, /media/disk2).
d. losetup -d /dev/loop0
e. losetup -d /dev/loop1 - Comprimiu la imatge de la targeta flash SD invocant l'ordre següent: tar cvfz .tgz linux_sd_card_image
- Entrega el .tgz file dins del directori arrel de la vostra plataforma personalitzada.
- Per provar la imatge de la targeta flash SD, feu les tasques següents:
a. Escriu la imatge no comprimida resultant en una targeta flash micro SD.
b. Inseriu la targeta flash micro SD a la placa SoC FPGA.
c. Enceneu el tauler.
d. Invoqueu l'ordre d'utilitat aocl diagnose.
Enllaços relacionats
- Guia de l'usuari Intel SoC FPGA Embedded Design Suite
- Disseny OpenCL Examples pàgina de l'Altera weblloc
- Recopilació del nucli de Linux a la pàgina 16
Per habilitar el CMA, primer heu de recompilar el nucli Linux. - Consultar el nom del dispositiu de la vostra placa FPGA (diagnòstic)
1.6 Compilant el nucli de Linux per a Cyclone V SoC FPGA
Abans d'executar aplicacions OpenCL a la placa FPGA del Cyclone V SoC, heu de compilar la font del nucli Linux i compilar i instal·lar el controlador del nucli de Linux OpenCL.
- Recopilació del nucli de Linux a la pàgina 16
Per habilitar el CMA, primer heu de recompilar el nucli Linux. - Compilació i instal·lació del controlador del nucli OpenCL Linux a la pàgina 17 Compileu el controlador del nucli OpenCL Linux amb la font del nucli compilat.
1.6.1 Recopilació del nucli de Linux
Per habilitar el CMA, primer heu de recompilar el nucli Linux.
- Feu clic a l'enllaç GSRD v14.0: compilació de Linux a la pàgina de recursos de RocketBoards.org weblloc per accedir a les instruccions per descarregar i reconstruir el codi font del nucli de Linux.
Per utilitzar-lo amb el ™ Intel FPGA SDK per a OpenCL, especifiqueu socfpga-3.13-rel14.0 com a . - Nota: el procés de creació crea l'arch/arm/configs/socfpga_defconfig file. Això file especifica els paràmetres per a la configuració predeterminada de socfpga.
Afegiu les línies següents a la part inferior de l'arch/arm/configs/socfpga_defconfig file.
CONFIG_MEMORY_ISOLATION=y
CONFIG_CMA=y
CONFIG_DMA_CMA=y
CONFIG_CMA_DEBUG=y
CONFIG_CMA_SIZE_MBYTES=512
CONFIG_CMA_SIZE_SEL_MBYTES=y
CONFIG_CMA_ALIGNMENT=8
CONFIG_CMA_AREAS=7
El valor de configuració CONFIG_CMA_SIZE_MBYTES estableix el límit superior del nombre total de memòria físicament contigua disponible. Podeu augmentar aquest valor si necessiteu més memòria. - Atenció: La quantitat total de memòria física disponible per al processador ARM a la placa SoC FPGA és d'1 GB. Intel no recomana que configureu el gestor CMA a prop d'1 GB.
- Executeu l'ordre make mrproper per netejar la configuració actual.
- Executeu l'ordre make ARCH=arm socfpga_deconfig.
ARCH=arm indica que voleu configurar l'arquitectura ARM.
socfpga_defconfig indica que voleu utilitzar la configuració predeterminada de socfpga. - Executeu l'ordre export CROSS_COMPILE=arm-linux-gnueabihf-.
Aquesta ordre estableix la variable d'entorn CROSS_COMPILE per especificar el prefix de la cadena d'eines desitjada. - Executeu l'ordre make ARCH=arm zImage. La imatge resultant està disponible a arch/arm/boot/zImage file.
- Col·loqueu la zImage file a la partició fat32 de la imatge de la targeta flash. Per obtenir instruccions detallades, consulteu el manual d'usuari de GSRD específic de Cyclone V SoC FPGA a Rocketboards.org.
- Nota: per inserir correctament el controlador del nucli OpenCL Linux, primer carregueu un SDKgenerated.rbf file a la FPGA.
Per crear el .rbf file, compileu un disseny d'SDK example amb la plataforma de referència del kit de desenvolupament de SoC Cyclone V com a plataforma personalitzada de destinació.
9. Col·loqueu el .rbf file a la partició fat32 de la imatge de la targeta flash.
Atenció: la partició fat32 ha de contenir tant la zImage file i el .rbf file. Sense un .rbf file, es produirà un error fatal en inserir el controlador. - Inseriu la targeta micro SD programada, que conté la imatge de la targeta SD que heu modificat o creat anteriorment, al kit de desenvolupament de SoC Cyclone V i, a continuació, engegueu la placa SoC FPGA.
- Verifiqueu la versió del nucli de Linux instal·lat executant l'ordre uname -r.
- Per verificar que activeu correctament el CMA al nucli, amb la placa FPGA del SoC engegada, executeu l'ordre grep init_cma /proc/kallsyms.
El CMA està habilitat si la sortida no és buida. - Per utilitzar el nucli Linux recompilat amb l'SDK, compileu i instal·leu el controlador del nucli Linux.
Enllaços relacionats
- Manuals d'usuari de Golden System Reference Design (GSRD).
- Creació d'una imatge de targeta flash SD a la pàgina 13
Com que el Cyclone V SoC FPGA és un sistema complet en un xip, sou responsable de proporcionar la definició completa del sistema.
1.6.2 Compilació i instal·lació del controlador del nucli OpenCL Linux
Compileu el controlador del nucli OpenCL Linux amb la font del nucli compilat.
La font del controlador està disponible a la versió FPGA Cyclone V SoC de l'entorn d'execució Intel FPGA per a OpenCL. A més, assegureu-vos que heu carregat un SDK Intel FPGA per a .rbf generat per OpenCL file a l'FPGA per evitar una instal·lació incorrecta del mòdul del nucli de Linux.
- Baixeu la versió FPGA del SoC Cyclone V del paquet Intel FPGA Runtime Environment per a OpenCL des del Centre de descàrregues de l'Altera weblloc.
a. Feu clic al botó Baixa al costat de l'edició del programari Quartus Prime.
b. Especifiqueu la versió de llançament, el sistema operatiu i el mètode de descàrrega.
c. Feu clic a la pestanya Programari addicional i seleccioneu per descarregar Intel FPGA
Entorn d'execució per a OpenCL Linux Cyclone V SoC TGZ.
d. Després de descarregar l'aocl-rte- .arm32.tgz file, desempaquetar-lo
un directori que teniu.
La font del controlador es troba a aocl-rte- directori del controlador .arm32/board/c5soc/. - Per recompilar el controlador del nucli OpenCL Linux, establiu el valor KDIR a la marca del controladorfile al directori que conté la font del nucli Linux files.
- Executeu l'ordre export CROSS_COMPILE=arm-linux-gnueabihf- per indicar el prefix de la vostra cadena d'eines.
- Executeu l'ordre make clean.
- Executeu l'ordre make per crear el fitxer aclsoc_drv.ko file.
- Transferiu el directori opencl_arm32_rte a la placa FPGA Cyclone V SoC.
Executant el scp -r root@la teva-adreça-i: L'ordre col·loca l'entorn d'execució al directori/home/root. - Executeu l'script init_opencl.sh que vau crear quan vau crear la imatge de la targeta SD.
- Invoqueu l'ordre d'utilitat aocl diagnose. La utilitat de diagnòstic retornarà un resultat aprovat després d'executar init_opencl.sh amb èxit.
1.7 problemes coneguts
Actualment, hi ha certes limitacions en l'ús de l'SDK Intel FPGA per a OpenCL amb la plataforma de referència del kit de desenvolupament de Cyclone V SoC.
- No podeu anul·lar els noms del proveïdor i del tauler que informen les cadenes CL_DEVICE_VENDOR i CL_DEVICE_NAME de la trucada clGetDeviceInfo().
- Si l'amfitrió assigna memòria constant al sistema DDR compartit (és a dir, HPS DDR) i modifica la memòria constant després de l'execució del nucli, les dades de la memòria poden quedar obsoletes. Aquest problema sorgeix perquè el nucli de l'FPGA no pot esquinçar les transaccions DDR de CPU a HPS.
Per evitar que les execucions posteriors del nucli accedeixin a dades obsoletes, implementeu una de les solucions alternatives següents:
• No modifiqueu la memòria constant després de la seva inicialització.
• Si necessiteu diversos conjunts de dades __constants, creeu diversos buffers de memòria constant.
• Si està disponible, assigneu memòria constant a la FPGA DDR de la vostra placa acceleradora. - La utilitat SDK a ARM només admet el programa i les ordres d'utilitat de diagnòstic.
Les ordres d'utilitat flash, instal·lar i desinstal·lar no són aplicables al kit de desenvolupament de SoC Cyclone V pels motius següents:
a. La utilitat d'instal·lació ha de compilar el controlador del nucli Linux aclsoc_drv i habilitar-lo al SoC FPGA. La màquina de desenvolupament ha de realitzar la compilació; tanmateix, ja conté fonts del nucli de Linux per al SoC FPGA. Les fonts del nucli de Linux per a la màquina de desenvolupament són diferents de les del SoC FPGA. La ubicació de les fonts del nucli de Linux per al SoC FPGA és probablement desconeguda per l'usuari de l'SDK. De la mateixa manera, la utilitat de desinstal·lació tampoc no està disponible per al kit de desenvolupament de SoC Cyclone V.
A més, lliurar aclsoc_drv al tauler de SoC és un repte perquè la distribució predeterminada del kit de desenvolupament de SoC Cyclone V no inclou el nucli de Linux. files o el compilador GNU Compiler Collection (GCC).
b. La utilitat flash requereix col·locar un .rbf file d'un disseny OpenCL a la partició FAT32 de la targeta flash micro SD. Actualment, aquesta partició no es munta quan l'usuari de l'SDK engega el tauler. Per tant, la millor manera d'actualitzar la partició és utilitzar un lector de targetes flash i la màquina de desenvolupament. - Quan canvieu entre l'executable Intel FPGA SDK per OpenCL Offline Compiler files (.aocx) que corresponen a diferents variants de la placa (és a dir, c5soc i c5soc_sharedonly), heu d'utilitzar la utilitat del programa de l'SDK per carregar el .aocx file per a la nova variant del tauler per primera vegada. Si simplement executeu l'aplicació amfitrió amb una nova variant de la placa però l'FPGA conté la imatge d'una altra variant de la placa, es pot produir un error fatal.
- El .qxp file no inclou les assignacions de la partició de la interfície perquè el programari Quartus Prime compleix constantment els requisits de temps d'aquesta partició.
- Quan engegueu la placa, la seva adreça de control d'accés als mitjans (MAC) s'estableix en un nombre aleatori. Si la vostra política de LAN no permet aquest comportament, configureu l'adreça MAC realitzant les tasques següents:
a. Durant l'engegada de l'U-Boot, premeu qualsevol tecla per entrar a l'indicador d'ordres de l'U-Boot.
b. Escriviu setenv ethaddr 00:07:ed:00:00:03 a l'indicador d'ordres.
Podeu triar qualsevol adreça MAC.
c. Escriviu l'ordre saveenv.
d. Reinicieu el tauler.
1.8 Historial de revisions de documents
Taula 1.
Historial de revisions de documents de l'SDK Intel FPGA per al SoC OpenCL Cyclone V
Guia de portació de la plataforma de referència del kit de desenvolupament
Data | Versió | Canvis |
Maig-17 | 2017.05.08 | •Alliberament de manteniment. |
Octubre 2016 | 2016.10.31 | • Rebranding Altera SDK for OpenCL a Intel FPGA SDK for OpenCL. • Rebranding Altera Offline Compiler a Intel FPGA SDK per OpenCL Offline Compiler. |
Maig-16 | 2016.05.02 | • Instruccions modificades per construir i modificar una imatge de targeta flash SD. •Instruccions modificades per recompilar el nucli Linux i el controlador del nucli Linux OpenCL. |
15 de novembre | 2015.11.02 | •Alliberament de manteniment i instàncies canviades de Quartus II a Quartus Prime. |
Maig-15 | 15.0.0 | •A la reconfiguració FPGA, s'han eliminat les instruccions per reprogramar el nucli FPGA amb una . imatge rbf invocant el gat filenom>. rbf > Ordre /dev/ fpga0 perquè aquest mètode no es recomana. |
14 de desembre | 14.1.0 | •S'ha canviat el nom del document com a Altera Cyclone V SoC Development Kit Reference Platform Porting Guide. • S'ha actualitzat la utilitat de reprogramació al programa aoclfilenom> ordre d'utilitat .aocx. • S'ha actualitzat la utilitat de diagnòstic al diagnòstic aocl i al diagnòstic aocl comanda d'utilitat. • S'ha actualitzat el procediment a la secció Portar la plataforma de referència a la vostra placa de SoC per incloure instruccions sobre la portabilitat i la modificació de la partició de la placa c5soc per crear una partició de neteja de temps per al flux de tancament de temps garantit. •S'ha inserit el tema Actualització d'una plataforma de referència portada per descriure els procediments per a les tasques següents: 1.S'exclou el bloc del sistema de processador dur (HPS) a la partició de la placa 2.Actualització de la imatge de la targeta flash SD • S'ha actualitzat la secció Creació d'una imatge de targeta flash SD. Es recomana utilitzar la versió 14.0 de la imatge Golden System Reference Design (GSRD) com a punt de partida en lloc de la imatge disponible amb SoC Embedded Design Suite (EDS). • S'ha actualitzat la secció Recopilació del nucli de Linux i la secció del controlador del nucli de Linux OpenCL: 1.S'ha afegit una instrucció per establir la variable CROSS COMPILE. 2.S'ha canviat l'ordre que executeu per verificar que el CMA estigui habilitat correctament. |
Juliol-14 | 14.0.0 | •Versió inicial. |
Documents/Recursos
![]() |
Intel FPGA SDK per a OpenCL [pdfGuia de l'usuari FPGA SDK per a OpenCL, FPGA SDK, SDK per a OpenCL, SDK |