Heterogeensete mälusüsteemide loomine FPGA SDK-s OpenCL-i kohandatud platvormide jaoks
Juhised
Heterogeensete mälusüsteemide loomine Intel® FPGA SDK-s OpenCL-i kohandatud platvormide jaoks
Heterogeense mälu rakendamine kohandatud platvormil võimaldab suuremat välismälu liidese (EMIF) ribalaiust ning suuremat ja kiiremat juurdepääsu mälule. Heterogeense mälujuurdepääsu ja optimeeritud mälu kombinatsioon
OpenCL™(1)tuum võib teie OpenCL-süsteemi jõudlust oluliselt parandada.
See rakenduse märkus annab juhiseid heterogeensete mälusüsteemide loomiseks kohandatud platvormil kasutamiseks koos Intel® FPGA SDK for OpenCL(2). Intel eeldab, et olete kogenud FPGA-disainer, kes töötab välja kohandatud platvorme, mis sisaldavad heterogeenseid mälusüsteeme.
Enne heterogeensete mälusüsteemide loomist tutvuge allpool kirjeldatud OpenCL-dokumentide Intel FPGA SDK-ga.
Seotud teave
- Intel FPGA SDK OpenCL-i programmeerimisjuhendi jaoks
- Inteli FPGA SDK OpenCL-i parimate tavade juhend
- Inteli FPGA SDK OpenCL Arria 10 GX FPGA arenduskomplekti viiteplatvormi teisaldamise juhend
1.1. FPGA juhatuse ja EMIF-i liideste funktsionaalsuse kontrollimine
Kontrollige iga mäluliidest eraldi ja seejärel looge oma kohandatud platvorm globaalse mälu abil.
- Kontrollige iga mäluliidest, kasutades riistvarakonstruktsioone, mis suudavad testida iga liidese kiirust ja stabiilsust.
- Looge oma kohandatud platvorm globaalse mälu abil.
- Näiteksample, kui teil on kolm DDR-liidest, tuleb üks neist kaardistada heterogeense mäluna. Sel juhul kontrollige OpenCL-i virna funktsionaalsust iga DDR-liidese abil eraldi.
OpenCL ja OpenCL logo on ettevõtte Apple Inc. kaubamärgid, mida kasutatakse Khronos Group™ loal. - Inteli FPGA SDK for OpenCL põhineb avaldatud Khronose spetsifikatsioonil ja on läbinud Khronose vastavustestimise protsessi. Praeguse vastavusseisundi leiate aadressilt www.khronos.org/conformance.
- Näiteksample, kui teil on kolm DDR-liidest, tuleb üks neist kaardistada heterogeense mäluna. Sel juhul kontrollige OpenCL-i virna funktsionaalsust iga DDR-liidese abil eraldi.
Intel Corporation. Kõik õigused kaitstud. Intel, Inteli logo ja muud Inteli kaubamärgid on Intel Corporationi või selle tütarettevõtete kaubamärgid. Intel garanteerib oma FPGA ja pooljuhttoodete toimimise praeguste spetsifikatsioonide kohaselt vastavalt Inteli standardgarantiile, kuid jätab endale õiguse teha mis tahes tooteid ja teenuseid igal ajal ilma ette teatamata. Intel ei võta endale mingit vastutust ega kohustusi, mis tulenevad siin kirjeldatud teabe, toote või teenuse rakendusest või kasutamisest, välja arvatud juhul, kui Intel on sellega sõnaselgelt kirjalikult nõustunud. Inteli klientidel soovitatakse hankida seadme spetsifikatsioonide uusim versioon enne avaldatud teabele tuginemist ja enne toodete või teenuste tellimuste esitamist. *Teisi nimesid ja kaubamärke võidakse pidada teiste omandiks.
ISO 9001:2015 registreeritud
Teise võimalusena, kui teil on kaks DDR-liidest ja üks quad data rate (QDR) liides, kontrollige kahe DDR-liidese OpenCL-i virna ja QDR-liidese funktsionaalsust eraldi.
Intel soovitab teil mäluliideste testimiseks kasutada PCI Express® (PCIe® -) või EMIF-i eksklusiivseid kujundusi. Kui olete veendunud, et iga mäluliides on funktsionaalne ja et teie OpenCL-i disain töötab mäluliideste alamhulgaga, jätkake
luua täielikult toimiv heterogeenne mälusüsteem.
1.2. Faili board_spec.xml muutmine File
Muutke faili board_spec.xml file et määrata heterogeensete mälusüsteemide tüübid, mis on OpenCL-i tuumadele saadaval.
Kerneli kompileerimise ajal määrab Intel FPGA SDK for OpenCL Offline Compiler mällu tuumaargumendid teie määratud puhvri asukoha argumendi alusel.
1. Sirvige faili board_spec.xml file kohandatud platvormi riistvarakataloogis.
2. Avage board_spec.xml file tekstiredaktoris ja muutke XML-i vastavalt.
NäiteksampKui teie riistvarasüsteemil on globaalse vaikemäluna kaks DDR-mälu ja kaks QDR-panka, mida modelleerite heterogeense mäluna, muutke faili board_spec.xml mälusektsioone file sarnanema järgmisega:
1.3. Mitme mälujagaja seadistamine Qsysis
Praegu ei toeta Qsysi disainis olev OpenCL-i mälupanga jaotur mälupankade arvu, mis ei ole võimsusega 2, mis ei ole tüüpiliste konfiguratsioonide puhul piiranguks. Siiski on stsenaariume, kus on vaja mitte-2-võimsusega mäluliideseid. Kahe võimsuseta mäluliideste mahutamiseks kasutage mitut OpenCL-i mälupangajaoturit, et luua heterogeenseid mälusüsteeme, millel on kahe võimsuseta mälupankade arv. Kui teil on tõeline heterogeenne mälusüsteem, peate looma mitu OpenCL-i mälupanga jaoturit. Mõelge süsteemile, millel on üks DDR-mälu liides ja üks QDR-mälu liides. Kuna kahel pangal on erinevad mälu topoloogiad, ei saa te neid ühendada ühe globaalse mälu alla.
Joonis 1. Kolmepangalise heterogeense mälusüsteemi plokkskeem
See heterogeenne mälusüsteem sisaldab kahte DDR-mälu liidest ja ühte QDR-mälu liidest.Kui kasutate tarkvara Intel Quartus® Prime versiooni 16.0, 16.0.1 või 16.0.2 ja Altera SDK for OpenCL, käsitleb OpenCL Memory Bank Divider valesti aadressipiire ületavaid mälupakette. Selle teadaoleva probleemi lahendamiseks lisage torujuhtme sild, mille sarivõtte suurus on 1 ja ühendage selle Avalon ®Memory-Mapped (Avalon-MM) ülemseade OpenCL-i mälupanga jagaja alampordiga.
Märkus.
See teadaolev probleem on lahendatud tarkvaras Intel Quartus Prime ja Inteli FPGA SDK-s OpenCL-i versiooni 16.1 jaoks.
Joonis 2. Torusillaga kolmepangalise heterogeense mälusüsteemi plokkskeem 1.4. Boardtest programmi ja hostikoodi muutmine teie heterogeense mälulahenduse jaoks
Kasutage oma kohandatud platvormi funktsionaalsuse ja jõudluse testimiseks kernelit boardtest.cl, mis on kaasas Intel FPGA SDK for OpenCL Custom Platform Toolkit.
Boardtest programm on OpenCL-i kernel, mis võimaldab testida hosti-seadme ribalaiust, mälu ribalaiust ja kohandatud platvormi üldist funktsionaalsust.
- Sirvige /board/ custom_platform_toolkit/tests/boardtest kataloog.
- Ava boardtest.cl file tekstiredaktoris ja määrake igale globaalse mälu argumendile puhvri asukoht.
Näiteksample:
__tuum tühine
mem_stream (__global__attribute__((buffer_location(“DDR”)))) uint *src, __global __attribute__((buffer_location(“QDR”)))) uint *dst, uint arg, uint arg2)
Siin on uint *src määratud DDR-mälule ja uint *dst QDR-mälule. Board_spec.xml file määrab mõlema mälusüsteemi omadused. - Oma heterogeense mälulahenduse oma OpenCL-süsteemis ärakasutamiseks muutke oma hostikoodi, lisades oma clCreateBufferi kõnele lipu CL_MEM_HETEROGENEOUS_INTELFPGA.
Näiteksample:
ddatain = clCreateBuffer(context, CL_MEM_READ_WRITE | memlips
CL_MEM_HETEROGENEOUS_INTELFPGA, suurus(märgita) * vectorSize, NULL, &status);
Intel soovitab tungivalt enne puhvri kirjutamist määrata tuuma argumendiks puhvri asukoht. Kui kasutate ühte globaalset mälu, saate puhvrid kirjutada kas enne või pärast nende määramist kerneli argumendile. Heterogeensetes mälusüsteemides määrab host puhvri asukoha enne puhvri kirjutamist. Teisisõnu kutsub host enne funktsiooni clEnqueueWriteBuffer kutsumist funktsiooni clSetKernelArgument.
Kutsuge oma hostikoodis välja kutsed clCreateBuffer, clSetKernelArg ja clEnqueueWriteBuffer järgmises järjekorras:
ddatain = clCreateBuffer(context, CL_MEM_READ_WRITE | memflags |
CL_MEM_HETEROGENEOUS_INTELFPGA, suurus(märgita) * vectorSize, NULL, &status);
… olek = clSetKernelArg(kernel[k], 0, suurus(cl_mem), (void*)&ddatain);
… olek = clEnqueueWriteBuffer(järjekord, ddatain, CL_FALSE, 0, suurus(allkirjata) * vektorSuurus,hdatain, 0, NULL, NULL);
ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file esitab nende funktsioonikutsete sarnase järjestuse. - Pärast faili boardtest.cl muutmist file ja hosti kood, kompileerige hosti ja tuuma kood ning kontrollige nende funktsionaalsust.
Kerneli koodi kompileerimisel peate keelama kõigi mälusüsteemide sarivõtte, lisades parameetri –no-interleaving suvand käsus aoc.
Seotud teave
Globaalse mälu sarivõtte keelamine (–no-interleaving )
1.5. Heterogeense mälu funktsionaalsuse kontrollimine Süsteem
Heterogeense mälusüsteemi nõuetekohase toimimise tagamiseks tühistage hostikoodi lipp CL_CONTEXT_COMPILER_MODE_INTELFPGA.
Homogeense mäluga OpenCL-süsteemides peate .aocx-i lugemise keelamiseks oma hostikoodis määrama lipu CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 file ja FPGA ümberprogrammeerimine. Lipu CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 määramine on kasulik tahvli instantseerimisel, et kontrollida kohandatud platvormi funktsionaalsust ilma põrandaplaani kujundamata ja LogicLock™-i piirkondi määramata.
Heterogeensete mälusüsteemide puhul peab käituskeskkond lugema iga puhvri puhvri asukohti, mida on kirjeldatud failis .aocx file, et kontrollida mälusüsteemide funktsionaalsust. Siiski võite soovida kontrollida oma kohandatud platvormi funktsionaalsust ilma tahvli disaini lõppfunktsioone rakendamata, nagu näiteks põrandaplaani kujundamine ja LogicLocki piirkondade määramine.
- Veenduge, et CL_CONTEXT_COMPILER_MODE_INTELFPGA lipp on teie hostikoodis määramata.
- Sirvi tahvlile/ Teie kohandatud platvormi kataloog /source/host/mmd.
- Avage acl_pcie_device.cpp mälukaardiga seade (MMD) file tekstiredaktoris.
- Muutke failis acl_pcie_device.cpp ümberprogrammeerimise funktsiooni file lisades tagastuse 0; rida, nagu allpool näidatud:
int ACL_PCIE_DEVICE::reprogram(void *andmed, suurus_t andmesuurus)
{
tagasi 0;
// eeldame ebaõnnestumist
int reprogramm_failed = 1;
// eeldame, et failis fpga.bin pole rbf-i ega räsi
int rbf_or_hash_not_provided = 1;
// eeldame, et baasi ja impordi redaktsiooni räsid ei ühti
int hash_mismatch = 1;
…
} - Kompileerige fail acl_pcie_device.cpp uuesti file.
- Veenduge, et lipp CL_CONTEXT_COMPILER_MODE_INTELFPGA jääb määramata.
Tähelepanu: Pärast tagastamise 0 lisamist; ümberprogrammeerimise funktsioonile ja kompileerige MMD uuesti file, loeb käituskeskkond faili .aocx file ja määrata puhvri asukohad, kuid ei programmeeri FPGA-d ümber. Peate käsitsi sobitama FPGA-kujutise failiga .aocx file. Selle käitumise ümberpööramiseks eemaldage return 0; ümberprogrammeerimise funktsioonist ja kompileerige MMD uuesti file.
1.6. Dokumendi läbivaatamise ajalugu
Kuupäev | Versioon | Muudatused |
detsember-17 | 2017.12.01 | • Brändi CL_MEM_HETEROGENEOUS_ALTERA ümber CL_MEM_HETEROGENEOUS_INTELFPGA-ks. |
detsember-16 | 2016.12.13 | • Brändi CL_CONTEXT_COMPILER_MODE_ALTERA ümber CL_CONTEXT_COMPILER_MODE_INTELFPGA-ks. |
Heterogeensete mälusüsteemide loomine Intel® FPGA SDK-s OpenCL-i jaoks
Kohandatud platvormid
Saada tagasisidet
Online versioon
Saada tagasisidet
ID: 683654
Versioon: 2016.12.13
Dokumendid / Ressursid
![]() |
intel Heterogeensete mälusüsteemide loomine FPGA SDK-s OpenCL-i kohandatud platvormide jaoks [pdfJuhised Heterogeensete mälusüsteemide loomine FPGA SDK-s OpenCL-i kohandatud platvormide jaoks, heterogeensete mälusüsteemide loomine, FPGA SDK OpenCL-i kohandatud platvormide jaoks |