Ħolqien ta' Sistemi Eteroġenji ta' Memorja f'FPGA SDK għal Pjattaformi Custom OpenCL
Istruzzjonijiet
Ħolqien ta' Sistemi Eteroġenji ta' Memorja f'Intel® FPGA SDK għal Pjattaformi Custom OpenCL
L-implimentazzjoni ta 'memorja eteroġenja fi Pjattaforma Custom tippermetti aktar bandwidth ta' interface tal-memorja esterna (EMIF) kif ukoll aċċessi għall-memorja akbar u aktar veloċi. Il-kombinazzjoni ta 'aċċess għall-memorja eteroġenu ma' ottimizzat
OpenCL ™(1)kernel jista' jirriżulta f'titjib sinifikanti fil-prestazzjoni għas-sistema OpenCL tiegħek.
Din in-nota tal-applikazzjoni tipprovdi gwida dwar il-ħolqien ta' sistemi ta' memorja eteroġeni f'Pjattaforma Custom għall-użu mal-SDK Intel® FPGA għal OpenCL(2). Intel tassumi li inti disinjatur FPGA b'esperjenza li qed tiżviluppa Pjattaformi Custom li fihom sistemi ta 'memorja eteroġenji.
Qabel ma toħloq is-sistemi tal-memorja eteroġeni, iffamiljarizza ruħek mal-SDK Intel FPGA għad-dokumenti OpenCL speċifikati hawn taħt.
Informazzjoni Relatata
- Intel FPGA SDK għall-Gwida tal-Programmazzjoni OpenCL
- Intel FPGA SDK għall-Gwida tal-Aħjar Prattiċi OpenCL
- Intel FPGA SDK għal OpenCL Arria 10 GX FPGA Development Kit Reference Platform Porting Guide
1.1. Il-verifika tal-Funzjonalità tal-Bord FPGA u l-Interfaces EMIF
Ivverifika kull interface tal-memorja b'mod indipendenti u mbagħad istanzija l-Pjattaforma Custom tiegħek billi tuża memorja globali.
- Ivverifika kull interface tal-memorja billi tuża disinji ta 'ħardwer li jistgħu jittestjaw il-veloċità u l-istabbiltà ta' kull interface.
- Istanzja l-Pjattaforma Custom tiegħek billi tuża memorja globali.
- Per example, jekk għandek tliet interfaces DDR, wieħed minnhom irid jiġi mmappjat bħala memorja eteroġenja. F'dan il-każ, ivverifika l-funzjonalità tal-munzell OpenCL ma 'kull interface DDR b'mod indipendenti.
OpenCL u l-logo OpenCL huma trademarks ta' Apple Inc. użati bil-permess tal-Khronos Group™. - L-Intel FPGA SDK għal OpenCL huwa bbażat fuq Speċifikazzjoni Khronos ippubblikata, u għadda mill-Proċess tal-Ittestjar tal-Konformità Khronos. L-istatus ta' konformità attwali jista' jinstab fuq www.khronos.org/conformance.
- Per example, jekk għandek tliet interfaces DDR, wieħed minnhom irid jiġi mmappjat bħala memorja eteroġenja. F'dan il-każ, ivverifika l-funzjonalità tal-munzell OpenCL ma 'kull interface DDR b'mod indipendenti.
Korporazzjoni Intel. Id-drittijiet kollha riżervati. Intel, il-logo Intel, u marki oħra Intel huma trademarks ta' Intel Corporation jew is-sussidjarji tagħha. Intel tiggarantixxi l-prestazzjoni tal-prodotti FPGA u semikondutturi tagħha skont l-ispeċifikazzjonijiet attwali skont il-garanzija standard ta 'Intel, iżda tirriżerva d-dritt li tagħmel bidliet fi kwalunkwe prodott u servizz fi kwalunkwe ħin mingħajr avviż. Intel ma tassumi l-ebda responsabbiltà jew responsabbiltà li tirriżulta mill-applikazzjoni jew l-użu ta' kwalunkwe informazzjoni, prodott jew servizz deskritt hawnhekk ħlief kif miftiehem espressament bil-miktub minn Intel. Il-klijenti Intel huma avżati biex jiksbu l-aħħar verżjoni tal-ispeċifikazzjonijiet tal-apparat qabel ma jiddependu fuq kwalunkwe informazzjoni ppubblikata u qabel ma jagħmlu ordnijiet għal prodotti jew servizzi. *Ismijiet u marki oħra jistgħu jiġu mitluba bħala proprjetà ta’ ħaddieħor.
ISO 9001: 2015 Reġistrat
Alternattivament, jekk għandek żewġ interfaces DDR u interface quad data rate (QDR), ivverifika l-funzjonalità tal-munzell OpenCL taż-żewġ interfaces DDR u l-interface QDR b'mod indipendenti.
Intel tirrakkomanda li tuża PCI Express® – (PCIe® -) jew disinji esklussivi għall-EMIF biex tittestja l-interfaces tal-memorja tiegħek. Wara li tivverifika li kull interface tal-memorja hija funzjonali u li d-disinn OpenCL tiegħek jaħdem ma' subsett tal-interfaces tal-memorja, ipproċedi
biex tinħoloq sistema ta 'memorja eteroġenja kompletament funzjonali.
1.2. Li timmodifika l-board_spec.xml File
Immodifika l-board_spec.xml file biex tispeċifika t-tipi ta 'sistemi ta' memorja eteroġeni li huma disponibbli għall-kernels OpenCL.
Waqt il-kumpilazzjoni tal-kernel, l-Intel FPGA SDK għal OpenCL Offline Compiler jassenja argumenti tal-kernel lil memorja bbażata fuq l-argument tal-lok tal-buffer li tispeċifika.
1. Fittex għall-board_spec.xml file fid-direttorju tal-ħardwer tal-Pjattaforma Custom tiegħek.
2. Iftaħ il-board_spec.xml file f'editur tat-test u timmodifika l-XML kif xieraq.
Per example, jekk is-sistema tal-ħardwer tiegħek għandha żewġ memorji DDR bħala memorja globali default u żewġ banek QDR li timmudella bħala memorja eteroġenja, immodifika s-sezzjonijiet tal-memorja tal-board_spec.xml file biex tixbah lil dan li ġej:
1.3. Twaqqif ta 'Dividers tal-Memorja Multipli f'Qsys
Bħalissa, id-Divider tal-Bank tal-Memorja OpenCL fid-disinn tal-Qsys ma jappoġġjax numru ta 'banek tal-memorja li mhumiex qawwa ta' 2, li mhix limitazzjoni għal konfigurazzjonijiet tipiċi. Madankollu, hemm xenarji fejn huma meħtieġa numru mhux ta 'enerġija ta' 2 ta 'interfaces tal-memorja. Biex takkomoda numru ta 'interfaces tal-memorja mhux ta' qawwa ta '2, uża multipli OpenCL Memory Bank Dividers biex toħloq sistemi ta' memorja eteroġenji b'numru ta 'banek ta' memorja mhux ta 'qawwa ta' 2. Int trid toħloq OpenCL Memory Bank Dividers multipli meta jkollok sistema ta 'memorja eteroġenja vera. Ikkunsidra sistema b'interface waħda tal-memorja DDR u interface waħda tal-memorja QDR. Minħabba li ż-żewġ banek għandhom topoloġiji ta 'memorja differenti, ma tistax tgħaqqadhom taħt memorja globali waħda.
Figura 1. Dijagramma ta 'Blokk ta' Sistema ta 'Memorja Eteroġenja ta' Tliet Bank
Din is-sistema tal-memorja eteroġenja fiha żewġ interfaces tal-memorja DDR u interface wieħed tal-memorja QDR.Jekk qed tuża l-verżjoni 16.0, 16.0.1, jew 16.0.2 tas-softwer Intel Quartus® Prime u l-Altera SDK għal OpenCL, l-OpenCL Memory Bank Divider jimmaniġġja b'mod żbaljat il-fqigħ tal-memorja bejn il-konfini tal-indirizzi. Biex taħdem madwar din il-kwistjoni magħrufa, żid pont tal-pipeline b'daqs tal-fqigħ ta '1 u qabbad il-kaptan Avalon ®Memory-Mapped (Avalon-MM) tiegħu mal-port slave tal-OpenCL Memory Bank Divider.
Nota:
Din il-kwistjoni magħrufa hija ffissata fis-softwer Intel Quartus Prime u l-SDK Intel FPGA għall-verżjoni OpenCL 16.1.
Figura 2. Dijagramma tal-Blokk ta 'Sistema ta' Memorja Eteroġenja bi Tliet Bank b'Pipeline Bridge 1.4. Timmodifika l-Programm Boardtest u l-Kodiċi Ospitanti għas-Soluzzjoni tal-Memorja Eteroġenja Tiegħek
Uża l-kernel boardtest.cl li jiġi mal-Intel FPGA SDK għal OpenCL Custom Platform Toolkit biex tittestja l-funzjonalità u l-prestazzjoni tal-Pjattaforma Custom tiegħek.
Il-programm boardtest huwa kernel OpenCL li jippermettilek tittestja bandwidth minn host-to-device, bandwidth tal-memorja, u funzjonalità ġenerali tal-Pjattaforma Custom tiegħek.
- Fittex għall- /board/ custom_platform_toolkit/tests/boardtest direttorju.
- Iftaħ il-boardtest.cl file f'editur tat-test u jassenja post buffer għal kull argument tal-memorja globali.
Per example:
__kernel null
mem_stream (__global__attribute__((buffer_location(“DDR”))) uint *src, __global __attribute__((buffer_location(“QDR”))) uint *dst, uint arg, uint arg2)
Hawnhekk, uint *src huwa assenjat għall-memorja DDR, u uint *dst huwa assenjat għall-memorja QDR. Il-board_spec.xml file jispeċifika l-karatteristiċi taż-żewġ sistemi tal-memorja. - Biex tisfrutta s-soluzzjoni tal-memorja eteroġenja tiegħek fis-sistema OpenCL tiegħek, immodifika l-kodiċi ospitanti tiegħek billi żżid il-bandiera CL_MEM_HETEROGENEOUS_INTELFPGA mas-sejħa clCreateBuffer tiegħek.
Per example:
ddatain = clCreateBuffer (kuntest, CL_MEM_READ_WRITE | memflags
CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(mhux iffirmat) * vectorSize, NULL, &status);
Intel jirrakkomanda bil-qawwa li tissettja l-post tal-buffer bħala argument tal-kernel qabel ma tikteb il-buffer. Meta tuża memorja globali waħda, tista 'tikteb il-buffers jew qabel jew wara li tassenjahom għal argument tal-kernel. F'sistemi ta 'memorja eteroġeni, l-ospitant jistabbilixxi l-post tal-buffer qabel ma jikteb il-buffer. Fi kliem ieħor, il-host se jsejjaħ il-funzjoni clSetKernelArgument qabel ma jsejjaħ il-funzjoni clEnqueueWriteBuffer.
Fil-kodiċi ospitanti tiegħek, invoka s-sejħiet clCreateBuffer, clSetKernelArg, u clEnqueueWriteBuffer fl-ordni li ġejja:
ddatain = clCreateBuffer(kuntest, CL_MEM_READ_WRITE | memflags |
CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(mhux iffirmat) * vectorSize, NULL, &status);
… status = clSetKernelArg(kernel[k], 0, sizeof(cl_mem), (void*)&ddatain);
… status = clEnqueueWriteBuffer (kju, ddatain, CL_FALSE, 0, sizeof(mhux iffirmat) * vectorSize,hdatain, 0, NULL, NULL);
L-ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file jippreżenta ordni simili ta 'dawn is-sejħiet ta' funzjoni. - Wara li timmodifika l-boardtest.cl file u l-kodiċi tal-host, ikkumpila l-kodiċi tal-host u tal-qalba u tivverifika l-funzjonalità tagħhom.
Meta tikkompila l-kodiċi tal-kernel tiegħek, trid tiddiżattiva l-interleaving tal-fqigħ tas-sistemi kollha tal-memorja billi tinkludi l--no-interleaving għażla fil-kmand aoc.
Informazzjoni Relatata
Id-diżattivazzjoni tal-Interleaving tal-Fqigħ tal-Memorja Globali (–no-interleaving )
1.5. Verifika tal-Funzjonalità tal-Memorja Eteroġenja Tiegħek Sistema
Biex tiżgura li s-sistema tal-memorja eteroġenja taħdem sew, neħħi l-marka CL_CONTEXT_COMPILER_MODE_INTELFPGA fil-kodiċi ospitanti tiegħek.
F'sistemi OpenCL b'memorja omoġenja, għandek l-għażla li tissettja l-bandiera CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 fil-kodiċi ospitanti tiegħek biex tiddiżattiva l-qari tal-.aocx file u l-ipprogrammar mill-ġdid tal-FPGA. L-issettjar tal-bandiera CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 huwa utli meta tistjanzja l-bord tiegħek biex tivverifika l-funzjonalità tal-Pjattaforma Custom tiegħek mingħajr ma tfassal il-pjan tal-art u tispeċifika r-reġjuni LogicLock™.
B'sistemi ta' memorja eteroġeni, l-ambjent tar-runtime għandu jaqra l-postijiet tal-buffer ta' kull buffer, deskritti fil-.aocx file, biex tivverifika l-funzjonalità tas-sistemi tal-memorja. Madankollu, tista 'tkun trid tivverifika l-funzjonalità tal-Pjattaforma Custom tiegħek mingħajr ma timplimenta l-karatteristiċi finali tad-disinn tal-bord, bħat-tfassil tal-pjan ta' l-art u tispeċifika r-reġjuni LogicLock.
- Ivverifika li l-bandiera CL_CONTEXT_COMPILER_MODE_INTELFPGA mhix issettjata fil-kodiċi ospitanti tiegħek.
- Fittex għall-bord/ /source/host/mmd direttorju tal-Pjattaforma Custom tiegħek.
- Iftaħ it-tagħmir acl_pcie_device.cpp immappjat bil-memorja (MMD) file f'editur tat-test.
- Immodifika l-funzjoni tal-programm mill-ġdid fil-acl_pcie_device.cpp file billi żżid ritorn 0; linja, kif muri hawn taħt:
int ACL_PCIE_DEVICE::reprogramm(void *data, size_t data_size)
{
ritorn 0;
// jassumu falliment
int reprogramm_failed = 1;
// jassumu l-ebda rbf jew hash f'fpga.bin
int rbf_or_hash_not_provided = 1;
// nassumu li l-hashes tar-reviżjoni tal-bażi u tal-importazzjoni ma jaqblux
int hash_mismatch = 1;
…
} - Ikkompila mill-ġdid l-acl_pcie_device.cpp file.
- Ivverifika li l-bandiera CL_CONTEXT_COMPILER_MODE_INTELFPGA tibqa' mhux issettjata.
Attenzjoni: Wara li żżid ritorn 0; għall-funzjoni tal-programm mill-ġdid u kkompila mill-ġdid l-MMD file, l-ambjent runtime se jaqra l-.aocx file u jassenja l-postijiet tal-buffer iżda mhux se jerġa 'jipprogramma l-FPGA. Trid tqabbel manwalment l-immaġni FPGA mal-.aocx file. Biex ireġġa' lura din l-imġieba, neħħi r-ritorn 0; mill-funzjoni tal-programm mill-ġdid u kkompila mill-ġdid l-MMD file.
1.6. Storja tar-Reviżjoni tad-Dokument
Data | Verżjoni | Bidliet |
Diċ-17 | 2017.12.01 | • Rebranded CL_MEM_HETEROGENEOUS_ALTERA għal CL_MEM_HETEROGENEOUS_INTELFPGA. |
Diċ-16 | 2016.12.13 | • Rebranded CL_CONTEXT_COMPILER_MODE_ALTERA għal CL_CONTEXT_COMPILER_MODE_INTELFPGA. |
Ħolqien ta' Sistemi Eteroġenji ta' Memorja f'Intel® FPGA SDK għal OpenCL
Pjattaformi tad-dwana
Ibgħat Feedback
Verżjoni Online
Ibgħat Feedback
ID: 683654
Verżjoni: 2016.12.13
Dokumenti / Riżorsi
![]() |
intel Ħolqien ta' Sistemi ta' Memorja Eteroġenja f'FPGA SDK għal Pjattaformi Custom OpenCL [pdf] Istruzzjonijiet Ħolqien ta' Sistemi Eteroġenji ta' Memorja f'FPGA SDK għal Pjattaformi Custom OpenCL, Ħolqien ta' Sistemi Eteroġenji ta' Memorja, FPGA SDK għal Pjattaformi Custom OpenCL |