Ukudala iiNkqubo zeMemori eziNxibelelayo kwi-FPGA SDK ye-OpenCL Custom Platforms
Imiyalelo
Ukudala iiNkqubo zeMemori eziNxibelelayo kwi-Intel® FPGA SDK ye-OpenCL Custom Platform
Ukuphunyezwa kwememori engaqhelekanga kwiPlatform yesiNtu ivumela ujongano lwememori yangaphandle (EMIF) bandwidth kunye nokufikelela kwimemori enkulu kunye nokukhawuleza. Indibaniselwano yofikelelo lwenkumbulo engafaniyo nelolongisiweyo
I-OpenCL ™ (1) kernel inokubangela uphuculo olubalulekileyo lwenkqubo yakho ye-OpenCL.
Eli nqaku lesicelo libonelela ngesikhokelo ekudaleni iisistim zememori ezingafaniyo kwiPlatform yesiko ukuze isetyenziswe ne-Intel® FPGA SDK ye-OpenCL (2). I-Intel ithatha ukuba ungumyili weFPGA onamava ophuhlisa iiPlatform zesiko eliqulathe iinkqubo zememori ezingafaniyo.
Phambi kokudala iinkqubo zememori ezingafaniyo, ziqhelanise ne-Intel FPGA SDK yamaxwebhu e-OpenCL achazwe ngezantsi.
Ulwazi olunxulumeneyo
- I-Intel FPGA SDK ye-OpenCL Programming Guide
- I-Intel FPGA SDK ye-OpenCL yeSikhokelo seZiqhelo ezilungileyo
- I-Intel FPGA SDK ye-OpenCL Arria 10 GX FPGA yoPhuhliso lweKhiti yeSikhokelo sokuBhala sePlatifomu
1.1. Ukuqinisekisa uMsebenzi weBhodi yeFPGA kunye ne-EMIF Interfaces
Qinisekisa ujongano lwenkumbulo nganye ngokuzimeleyo kwaye emva koko umisele iQonga lakho leSiko usebenzisa inkumbulo yehlabathi.
- Qinisekisa ujongano lwenkumbulo nganye usebenzisa uyilo lwehardware enokuvavanya isantya kunye nokuzinza kojongano ngalunye.
- Qinisekisa iQonga lakho leSiko usebenzisa inkumbulo yehlabathi.
- UmzekeloampLe, ukuba unojongano lweDDR ezintathu, enye yazo mayizotywe njengenkumbulo engaqhelekanga. Kule meko, qinisekisa ukusebenza kwesitaki se-OpenCL kunye nojongano ngalunye lwe-DDR ngokuzimeleyo.
I-OpenCL kunye nelogo ye-OpenCL ziimpawu zentengiso ze-Apple Inc. ezisetyenziswa ngemvume yeKhronos Group™ . - I-Intel FPGA SDK ye-OpenCL isekelwe kwiNkcazo ye-Khronos epapashwe, kwaye iphumelele iNkqubo yoVavanyo lwe-Khronos. Imeko yangoku yokuthotyelwa inokufumaneka apha www.khronos.org/conformance.
- UmzekeloampLe, ukuba unojongano lweDDR ezintathu, enye yazo mayizotywe njengenkumbulo engaqhelekanga. Kule meko, qinisekisa ukusebenza kwesitaki se-OpenCL kunye nojongano ngalunye lwe-DDR ngokuzimeleyo.
Intel Corporation. Onke Amalungelo Agciniwe. I-Intel, ilogo ye-Intel, kunye nezinye iimpawu ze-Intel ziimpawu zorhwebo ze-Intel Corporation okanye iinkampani eziphantsi kwayo. I-Intel iqinisekisa ukusebenza kweFPGA yayo kunye neemveliso zesemiconductor kwiinkcukacha zangoku ngokuhambelana newaranti esemgangathweni ye-Intel, kodwa inelungelo lokwenza utshintsho kuzo naziphi na iimveliso kunye neenkonzo nangaliphi na ixesha ngaphandle kwesaziso. I-Intel ayithathi xanduva okanye ityala elivela kwisicelo okanye ukusetyenziswa kwalo naluphi na ulwazi, imveliso, okanye inkonzo echazwe apha ngaphandle kokuba kuvunyelwene ngokubhaliweyo yi-Intel. Abathengi be-Intel bayacetyiswa ukuba bafumane inguqulelo yamva nje yeenkcazo zesixhobo ngaphambi kokuba baxhomekeke kulo naluphi na ulwazi olupapashiweyo naphambi kokubeka iiodolo zeemveliso okanye iinkonzo. *Amanye amagama kunye neempawu zingabangwa njengempahla yabanye.
ISO 9001:2015 ibhalisiwe
Kungenjalo, ukuba uneedibano ezimbini zeDDR kunye nojongano lwedatha enequad (QDR) ujongano, qinisekisa ukusebenza kwesitaki se-OpenCL se-interface ezimbini zeDDR kunye ne-QDR interface ngokuzimeleyo.
I-Intel icebisa ukuba usebenzise i-PCI Express® – (PCIe® -) okanye uyilo olulodwa lwe-EMIF ukuvavanya ujongano lwenkumbulo yakho. Emva kokuba uqinisekise ukuba ujongano lwenkumbulo nganye luyasebenza kwaye uyilo lwakho lweOpenCL lusebenza neseti yojongano lwenkumbulo, qhubeka.
ukwenza inkqubo yememori eyahluka-hlukeneyo esebenza ngokupheleleyo.
1.2. Ukulungiswa kwebhodi_spec.xml File
Guqula ibhodi_spec.xml file ukukhankanya iindidi zenkqubo yenkumbulo engavisisaniyo ekhoyo kwiikernel ze OpenCL.
Ngexesha loqulunqo lwe-kernel, i-Intel FPGA SDK ye-OpenCL Offline Compiler inika iingxoxo ze-kernel kwimemori esekwe kwimpikiswano yendawo ye-buffer oyibalulayo.
1. Khangela kwi board_spec.xml file kuluhlu lwezixhobo zePlatform yakho yesiKho.
2. Vula ibhodi_spec.xml file kumhleli wokubhaliweyo kwaye ulungise iXML ngokufanelekileyo.
UmzekeloampLe, ukuba inkqubo yakho yehardware ineenkumbulo ezimbini ze-DDR njengeenkumbulo zelizwe jikelele ezingagqibekanga kunye neebhanki ezimbini ze-QDR ozifanisayo njengememori eyahluka-hlukeneyo, guqula kancinane amacandelo enkumbulo yebhodi_spec.xml file ukufana noku kulandelayo:
1.3. Ukuseta abahluli beeMemo ezininzi kwiiQsys
Okwangoku, i-OpenCL Memory Bank Divider kwi-design ye-Qsys ayixhasi i-non-power-of-2 inani leebhanki zememori, ezingengomda wolungelelwaniso oluqhelekileyo. Nangona kunjalo, kukho iimeko apho i-non-power-of-2 inani le-memory interfaces iyimfuneko. Ukwamkela non-amandla-of-2 inani ujongano memory, sebenzisa OpenCL Memory Bank Dividers ezininzi ukudala heterogeneous memory iinkqubo kunye non-amandla-of-2 inani memory bank. Kuya kufuneka udale abahluli abaninzi be-OpenCL Memory Bank xa unenkqubo yenkumbulo engafaniyo. Qwalasela inkqubo enojongano lwenkumbulo enye ye-DDR kunye nojongano lwenkumbulo enye ye-QDR. Ngenxa yokuba ezi bhanki zimbini zineenkumbulo ezahlukeneyo, awukwazi ukuzidibanisa phantsi kwenkumbulo enye yehlabathi.
Umzobo 1. I-Block Diagram ye-Three-Bank Heterogeneous Memory System
Le nkqubo yememori engaqhelekanga iqulethe ujongano lwememori ye-DDR kunye nojongano lwenkumbulo enye ye-QDR.Ukuba usebenzisa inguqulo 16.0, 16.0.1, okanye 16.0.2 ye-Intel Quartus® Prime software kunye ne-Altera SDK ye-OpenCL, i-OpenCL Memory Bank Divider iphatha ngokungalunganga ukugqabhuka kwememori kwimida yedilesi. Ukusebenzela malunga nalo mba waziwayo, yongeza ibhulorho yombhobho enobukhulu obugqabhukileyo be-1 kwaye uqhagamshele i-Avalon ®Memory-Mapped master (Avalon-MM) kwizibuko lekhoboka le-OpenCL Memory Bank Divider.
Phawula:
Lo mbandela owaziwayo ulungiswe kwi-Intel Quartus Prime software kunye ne-Intel FPGA SDK ye-OpenCL version 16.1.
Umzobo 2. Umzobo weBloko yeNkqubo yeMemori yeeBhanki eziNtathu enePipeline Bridge 1.4. Ukuguqula iNkqubo yeBhoditest kunye neKhowudi yokusingatha kwiSisombululo sakho seMemori esiHeterogeneous
Sebenzisa i-boardtest.cl kernel eza ne-Intel FPGA SDK ye-OpenCL Custom Platform Toolkit ukuvavanya ukusebenza kunye nokusebenza kweQonga lakho leSiko.
Inkqubo ye-boardtest yi-OpenCL kernel ekuvumela ukuba uvavanye i-host-to-device bandwidth, i-memory bandwidth, kunye nokusebenza ngokubanzi kwePlatform yakho yesiko.
- Khangela kwi /ibhodi/ custom_platform_toolkit/itets/boardtest directory.
- Vula i-boardtest.cl file kumhleli wokubhaliweyo kwaye unike indawo yesithinteli kwingxoxo nganye yenkumbulo yehlabathi.
Umzekeloample:
__i-kernel ayikho
mem_stream (__global__attribute__((buffer_location(“DDR”))) uint *src, __global __attribute__((buffer_location(“QDR”)))) uint *dst, uint arg, uint arg2)
Apha, i-uint *src yabelwe kwimemori ye-DDR, kwaye i-uint *dst yabelwe kwimemori ye-QDR. Ibhodi_spec.xml file ixela iimpawu zazo zombini iinkqubo zememori. - Ukwandisa isisombululo sakho sememori engaqhelekanga kwinkqubo yakho ye-OpenCL, lungisa ikhowudi yenginginya yakho ngokongeza i-CL_MEM_HETEROGENEOUS_INTELFPGA iflegi kumnxeba wakho we-clCreateBuffer.
Umzekeloample:
ddatain = clCreateBuffer(context, CL_MEM_READ_WRITE | memflags
CL_MEM_HETEROGENEOUS_INTELFPGA, ubungakanani(engatyikitywanga) * Ubungakanani bevektha, NULL, & nemo);
I-Intel icebisa ngamandla ukuba usete indawo ye-buffer njengengxabano ye-kernel ngaphambi kokubhala isithinteli. Xa usebenzisa inkumbulo enye yehlabathi, ungabhala iibuffers nokuba phambi okanye emva kokuzabela ingxabano yekernel. Kwiinkqubo zememori ezixananazileyo, umamkeli useta indawo yebuffer phambi kokubhala isithinteli. Ngamanye amazwi, umamkeli uzakufowunela i clSetKernelArgument umsebenzi phambi kokufowunela umsebenzi we clEnqueueWriteBuffer.
Kwikhowudi yenginginya yakho, biza i-clCreateBuffer, clSetKernelArg, kunye ne-clEnqueueWriteBuffer iminxeba ngolu hlobo lulandelayo:
ddatain = clCreateBuffer(context, CL_MEM_READ_WRITE | memflags |
CL_MEM_HETEROGENEOUS_INTELFPGA, ubungakanani(engatyikitywanga) * Ubungakanani bevektha, NULL, & nemo);
… isimo = clSetKernelArg(kernel[k], 0, sizeof(cl_mem), (ingekho*)&ddatain);
… isimo = clEnqueueWriteBuffer(umgca, ddatain, CL_FALSE, 0, ubungakanani(abungabhalwanga) * vectorSize,hdatain, 0, NULL, NULL);
I ALTERAOCLSDKROOT/ibhodi/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file ibonisa ulandelelwano olufanayo lwemisebenzi yefowuni. - Emva kokuba ulungise i-boardtest.cl file kunye nekhowudi yenginginya, qokelela inginginya kunye nekhowudi yekernel kwaye uqinisekise ukusebenza kwayo.
Xa uqulunqa ikhowudi yakho yekernel, kufuneka ucime ukugqabhuka-interleaving kuzo zonke iinkqubo zememori ngokubandakanya i -no-interleaving. ukhetho kumyalelo we-aoc.
Ulwazi olunxulumeneyo
Ukukhubaza i-Burst-Interleaving ye-Global Memory (-akukho-interleaving )
1.5. Ukuqinisekisa ukuSebenza kweMemori yakho eNxananazileyo Inkqubo
Ukuqinisekisa ukuba isixokelelwano senkumbulo esixananazileyo sisebenza kakuhle, sumisa i-CL_CONTEXT_COMPILER_MODE_INTELFPGA iflegi kwikhowudi yenginginya yakho.
Kwiinkqubo ze-OpenCL ezinenkumbulo elinganayo, kufuneka ukhethe ukuseta i- CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 iflegi kwikhowudi yenginginya yakho ukuvala ufundo lwe .aocx file kunye nokuhlelwa ngokutsha kweFPGA. Ukuseta i-CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 iflegi iluncedo xa uqinisekisa ibhodi yakho ukuqinisekisa ukusebenza kweQonga lakho eliSiko ngaphandle kokuyilwa komgangatho kunye nokuchaza imimandla yeLogicLock™.
Ngeenkqubo zememori ezixananazileyo, imeko-bume yexesha lokubaleka kufuneka ifunde indawo yebuffer yebuffer nganye, echazwe kwi.aocx file, ukuqinisekisa usebenziso lwenkqubo yenkumbulo. Nangona kunjalo, unokufuna ukuqinisekisa ukusebenza kweQonga lakho leSiko ngaphandle kokuphumeza iimpawu zokugqibela zoyilo lwebhodi, njengokuyila iplani yomgangatho kunye nokuchaza imimandla yeLogicLock.
- Qinisekisa ukuba i-CL_CONTEXT_COMPILER_MODE_INTELFPGA iflegi ayibekwanga kwikhowudi yenginginya yakho.
- Jonga ebhodini/ /umthombo/umamkeli/ulawulo lwe-mmd lwePlatifomu yakho yesiNtu.
- Vula i-acl_pcie_device.cpp isixhobo esifakwe kwimaphu yememori (MMD) file kumhleli wokubhaliweyo.
- Guqula umsebenzi weprogram kwakhona kwi-acl_pcie_device.cpp file ngokongeza imbuyekezo 0; umgca, njengoko kubonisiwe ngezantsi:
int ACL_PCIE_DEVICE::reprogram(akukho *data, size_t data_size)
{
buyisela i-0;
// thatha ukusilela
int reprogram_failed = 1;
// ungacingi i-rbf okanye i-hash kwi-fpga.bin
int rbf_or_hash_not_provided = 1;
// thatha isiseko kunye ne-hashes yokuhlaziya yokungenisa ayihambelani
int hash_mismatch = 1;
…
} - Yenza kwakhona i-acl_pcie_device.cpp file.
- Qinisekisa ukuba i- CL_CONTEXT_COMPILER_MODE_INTELFPGA iflegi ayilungiswanga.
Ingqalelo: Emva kokuba ungeze ukubuyisela u-0; kumsebenzi wodweliso lwenkqubo kwaye uphinde uqokelele iMMD file, imeko-bume yexesha lokuqhuba iyakufunda i .aocx file kwaye yabela indawo yesithinteli kodwa ayisayi kuphinda icwangciselwe iFPGA. Kufuneka udibanise umfanekiso weFPGA kunye ne.aocx file. Ukubuyisela umva le ndlela yokuziphatha, susa ukubuyisela u-0; ukusuka kumsebenzi wodweliso lwenkqubo kwaye uphinde uqokelele iMMD file.
1.6. Imbali yoHlaziyo loXwebhu
Umhla | Inguqulelo | Iinguqu |
Dec-17 | 2017.12.01 | • Ifakwe ngokutsha i-CL_MEM_HETEROGENEOUS_ALTERA ukuze ibe yi-CL_MEM_HETEROGENEOUS_INTELFPGA. |
Dec-16 | 2016.12.13 | • Rebrandwe ngokutsha CL_CONTEXT_COMPILER_MODE_ALTERA ukuze CL_CONTEXT_COMPILER_MODE_INTELFPGA. |
Ukudala iiNkqubo zeMemori eziNzululwazi kwi-Intel® FPGA SDK ye-OpenCL
Iiplatforms zesiko
Ukuzisa impendulo
Version Online
Ukuzisa impendulo
I-ID: 683654
Inguqulelo: 2016.12.13
Amaxwebhu / Izibonelelo
![]() |
I-intel Ukwenza iiNkqubo zeMemori eziNxibelelayo kwi-FPGA SDK yeePlatifomu zeSiko le-OpenCL [pdf] Imiyalelo Ukudala iiNkqubo zeMemori eziNxibelelayo kwi-FPGA SDK ye-OpenCL Custom Platforms, Ukudala iiNkqubo zeMemori eziHluphekileyo, iFPGA SDK ye-OpenCL Custom Platforms |