intel - lógóAð búa til ólík minniskerfi í FPGA SDK fyrir OpenCL Custom Platforms
Leiðbeiningar

Að búa til ólík minniskerfi í Intel® FPGA SDK fyrir OpenCL Custom Platforms

Útfærsla á ólíku minni í sérsniðnum vettvangi gerir ráð fyrir meiri bandbreidd ytra minnisviðmóts (EMIF) sem og stærri og hraðari minnisaðgangi. Sambland af ólíku minni aðgangi með bjartsýni
OpenCL ™(1) kjarninn getur leitt til umtalsverðra frammistöðubóta fyrir OpenCL kerfið þitt.
Þessi umsóknarskýring veitir leiðbeiningar um að búa til ólík minniskerfi á sérsniðnum vettvangi til notkunar með Intel® FPGA SDK fyrir OpenCL(2). Intel gerir ráð fyrir að þú sért reyndur FPGA hönnuður sem er að þróa sérsniðna palla sem innihalda ólík minniskerfi.
Áður en þú býrð til ólíku minniskerfin skaltu kynna þér Intel FPGA SDK fyrir OpenCL skjöl sem tilgreind eru hér að neðan.
Tengdar upplýsingar

  • Intel FPGA SDK fyrir OpenCL forritunarleiðbeiningar
  • Intel FPGA SDK fyrir OpenCL Best Practices Guide
  • Intel FPGA SDK fyrir OpenCL Arria 10 GX FPGA þróunarsett tilvísun pallaflutningsleiðbeiningar

1.1. Staðfesta virkni FPGA stjórnar og EMIF tengi

Staðfestu hvert minnisviðmót sjálfstætt og sýndu síðan sérsniðna vettvang þinn með því að nota alþjóðlegt minni.

  1. Staðfestu hvert minnisviðmót með því að nota vélbúnaðarhönnun sem getur prófað hraða og stöðugleika hvers viðmóts.
  2. Upphafðu sérsniðna vettvang þinn með því að nota alþjóðlegt minni.
    1. Til dæmisample, ef þú ert með þrjú DDR tengi, verður eitt þeirra að vera kortlagt sem misleitt minni. Í þessu tilviki skaltu staðfesta virkni OpenCL stafla með hverju DDR viðmóti sjálfstætt.
      OpenCL og OpenCL lógóið eru vörumerki Apple Inc. notuð með leyfi Khronos Group™.
    2.  Intel FPGA SDK fyrir OpenCL er byggt á útgefinni Khronos forskrift og hefur staðist Khronos samræmisprófunarferlið. Núverandi samræmisstaða er að finna á www.khronos.org/conformance.

Intel Corporation. Allur réttur áskilinn. Intel, Intel lógóið og önnur Intel merki eru vörumerki Intel Corporation eða dótturfélaga þess. Intel ábyrgist frammistöðu FPGA- og hálfleiðaravara sinna samkvæmt gildandi forskriftum í samræmi við staðlaða ábyrgð Intel, en áskilur sér rétt til að gera breytingar á hvaða vörum og þjónustu sem er hvenær sem er án fyrirvara. Intel tekur enga ábyrgð eða skaðabótaábyrgð sem stafar af notkun eða notkun á neinum upplýsingum, vöru eða þjónustu sem lýst er hér nema sérstaklega hafi verið samið skriflega af Intel. Viðskiptavinum Intel er bent á að fá nýjustu útgáfuna af tækjaforskriftum áður en þeir treysta á birtar upplýsingar og áður en pantað er fyrir vörur eða þjónustu. *Önnur nöfn og vörumerki geta verið eign annarra.
ISO 9001:2015 Skráð
Að öðrum kosti, ef þú ert með tvö DDR viðmót og eitt quad data rate (QDR) viðmót skaltu staðfesta virkni OpenCL stafla tveggja DDR viðmóta og QDR viðmótsins sjálfstætt.
Intel mælir með því að þú notir PCI Express® – (PCIe® -) eða EMIF-einkahönnuð hönnun til að prófa minnisviðmótin þín. Eftir að þú hefur staðfest að hvert minnisviðmót sé virkt og að OpenCL hönnunin þín virki með undirmengi minnisviðmótanna skaltu halda áfram
að búa til fullkomlega starfhæft ólíkt minniskerfi. 
1.2. Breyting á board_spec.xml File
Breyttu board_spec.xml file til að tilgreina tegundir misleitra minniskerfa sem eru í boði fyrir OpenCL kjarna.
Meðan á kjarnasöfnun stendur, úthlutar Intel FPGA SDK fyrir OpenCL Offline þýðanda kjarnabreytum til minnis sem byggir á stuðpúðastaðsetningarviðmiðunum sem þú tilgreinir.
1. Flettu að board_spec.xml file í vélbúnaðarskránni á sérsniðna pallinum þínum.
2. Opnaðu board_spec.xml file í textaritli og breyttu XML í samræmi við það.
Til dæmisampef vélbúnaðarkerfið þitt er með tvö DDR-minni sem sjálfgefið alþjóðlegt minni og tvo QDR-banka sem þú líkir sem misleitt minni, breyttu minnishlutunum á board_spec.xml file að líkjast eftirfarandi:
















1.3. Setja upp margar minnisskiptingar í Qsys
Eins og er, styður OpenCL Memory Bank Divider í Qsys hönnuninni ekki fjölda minnisbanka sem ekki eru afl-af-2, sem er ekki takmörkun fyrir dæmigerðar stillingar. Hins vegar eru aðstæður þar sem ekki er afl-af-2 fjölda minnisviðmóta nauðsynleg. Til að koma til móts við fjölda minnisviðmóta sem ekki eru afl-af-2, notaðu margar OpenCL Memory Bank Dividers til að búa til ólík minniskerfi með fjölda minnisbanka sem ekki eru afl-af-2. Þú verður að búa til margar OpenCL Memory Bank Dividers þegar þú ert með raunverulegt misleitt minniskerfi. Íhugaðu kerfi með einu DDR minnisviðmóti og einu QDR minnisviðmóti. Vegna þess að bankarnir tveir hafa mismunandi staðfræði minni geturðu ekki sameinað þá undir einu alþjóðlegu minni.
Mynd 1. Bálkamynd af þriggja banka ólíku minniskerfi
Þetta ólíka minniskerfi inniheldur tvö DDR minnisviðmót og eitt QDR minnisviðmót.intel að búa til ólík minniskerfi í FPGA SDK fyrir OpenCL sérsniðna palla - mynd 1Ef þú ert að nota útgáfu 16.0, 16.0.1 eða 16.0.2 af Intel Quartus® Prime hugbúnaðinum og Altera SDK fyrir OpenCL, þá meðhöndlar OpenCL Memory Bank Divider á rangan hátt minnissprengjur yfir vistfangamörk. Til að vinna í kringum þetta þekkta vandamál skaltu bæta við leiðslubrú með sprengistærð 1 og tengja Avalon ®Memory-Mapped (Avalon-MM) master við þrælgátt OpenCL Memory Bank Divider.
Athugið:
Þetta þekkta vandamál er lagað í Intel Quartus Prime hugbúnaðinum og Intel FPGA SDK fyrir OpenCL útgáfu 16.1.
Mynd 2. Bálkamynd af þriggja banka ólíku minniskerfi með leiðslubrú intel að búa til ólík minniskerfi í FPGA SDK fyrir OpenCL sérsniðna palla - mynd 21.4. Að breyta Boardtest forritinu og gestgjafakóðanum fyrir ólíku minnislausnina þína
Notaðu boardtest.cl kjarnann sem fylgir Intel FPGA SDK fyrir OpenCL Custom Platform Toolkit til að prófa virkni og frammistöðu sérsniðna pallsins þíns.
Boardtest forritið er OpenCL kjarni sem gerir þér kleift að prófa bandbreidd frá hýsingartæki til tækis, minnisbandbreidd og almenna virkni sérsniðna vettvangsins þíns.

  1. Skoðaðu /board/ custom_platform_toolkit/tests/boardtest skrá.
  2. Opnaðu borðprófið.kl file í textaritli og úthlutaðu biðminni staðsetningu fyrir hverja alþjóðlega minnisrök.
    Til dæmisample:
    __kjarna ógild
    mem_stream (__global__attribute__((buffer_location(“DDR”))) uint *src, __global __attribute__((buffer_location(“QDR”))) uint *dst, uint arg, uint arg2)
    Hér er uint *src úthlutað á DDR minni og uint *dst er úthlutað á QDR minni. The board_spec.xml file tilgreinir eiginleika beggja minniskerfanna.
  3. Til að nýta ólíka minnislausnina þína í OpenCL kerfinu þínu skaltu breyta gestgjafakóðanum þínum með því að bæta CL_MEM_HETEROGENEOUS_INTELFPGA fánanum við clCreateBuffer símtalið þitt.
    Til dæmisample:
    ddatain = clCreateBuffer(samhengi, CL_MEM_READ_WRITE | memflags
    CL_MEM_HETEROGENEOUS_INTELFPGA, stærð (óundirrituð) * vektorStærð, NULL, &staða);
    Intel mælir eindregið með því að þú stillir biðminnisstaðsetninguna sem kjarnarök áður en þú skrifar biðminni. Þegar þú notar eitt alþjóðlegt minni geturðu skrifað biðminni annaðhvort fyrir eða eftir að þú hefur úthlutað þeim til kjarnaviðfangs. Í ólíkum minniskerfum setur hýsillinn biðminnisstaðsetningu áður en hann skrifar biðminni. Með öðrum orðum, gestgjafinn mun kalla á clSetKernelArgument fallið áður en hann kallar á clEnqueueWriteBuffer fallið.
    Í gestgjafakóðanum þínum skaltu kalla fram clCreateBuffer, clSetKernelArg og clEnqueueWriteBuffer símtölin í eftirfarandi röð:
    ddatain = clCreateBuffer(samhengi, CL_MEM_READ_WRITE | memflags |
    CL_MEM_HETEROGENEOUS_INTELFPGA, stærð (óundirrituð) * vektorStærð, NULL, &staða);
    … staða = clSetKernelArg(kjarna[k], 0, stærð(cl_mem), (ógilt*)&ddatain);
    … staða = clEnqueueWriteBuffer(biðröð, ddatain, CL_FALSE, 0, sizeof(unsigned) * vectorSize,hdatain, 0, NULL, NULL);
    ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file sýnir svipaða röð þessara fallkalla.
  4.  Eftir að þú hefur breytt boardtest.cl file og hýsilkóðann, settu saman hýsil- og kjarnakóðann og staðfestu virkni þeirra.
    Þegar þú setur saman kjarnakóðann þinn verður þú að slökkva á burst-fléttun allra minniskerfa með því að taka með –no-fléttingu valmöguleika í aoc skipuninni.

Tengdar upplýsingar
Slökkva á Burst-Interleaving á alþjóðlegu minni (-engin-fléttun )

1.5. Að sannreyna virkni misleita minnis þíns Kerfi
Til að tryggja að ólíka minniskerfið virki rétt skaltu aftengja CL_CONTEXT_COMPILER_MODE_INTELFPGA fánann í hýsilkóðanum þínum.
Í OpenCL kerfum með einsleitu minni þarftu að velja um að stilla CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 fánann í hýsilkóðann þínum til að slökkva á lestri .aocx file og endurforritun FPGA. Það er gagnlegt að stilla CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 fánann þegar þú sýnir borðið þitt til að sannreyna virkni sérsniðna pallsins þíns án þess að hanna gólfplanið og tilgreina LogicLock™ svæðin.
Með ólíkum minniskerfum verður keyrsluumhverfið að lesa biðminnisstaðsetningar hvers biðminni, sem lýst er í .aocx file, til að sannreyna virkni minniskerfanna. Hins vegar gætirðu viljað sannreyna virkni sérsniðna pallsins þíns án þess að innleiða lokaeiginleika borðhönnunarinnar, svo sem að hanna gólfplanið og tilgreina LogicLock svæðin.

  1. Staðfestu að CL_CONTEXT_COMPILER_MODE_INTELFPGA fáninn sé óstilltur í hýsilkóðanum þínum.
  2. Skoðaðu töfluna/ /source/host/mmd möppu á sérsniðna vettvanginum þínum.
  3. Opnaðu acl_pcie_device.cpp minniskortaða tækið (MMD) file í textaritli.
  4.  Breyttu endurforritunaraðgerðinni í acl_pcie_device.cpp file með því að bæta við ávöxtun 0; línu, eins og sýnt er hér að neðan:
    int ACL_PCIE_DEVICE::endurforrita (ógild *gögn, stærð_t gagnastærð)
    {
    skila 0;
    // gera ráð fyrir bilun
    int reprogram_failed = 1;
    // gerðu ráð fyrir að ekkert rbf eða hass sé í fpga.bin
    int rbf_or_hash_not_provided = 1;
    // gerum ráð fyrir að grunn- og innflutningsendurskoðunarkjallar passa ekki saman
    int hash_mismatch = 1;

    }
  5. Settu aftur saman acl_pcie_device.cpp file.
  6. Staðfestu að CL_CONTEXT_COMPILER_MODE_INTELFPGA fáninn sé óstilltur.
    Athygli: Eftir að þú bætir við skila 0; að endurforrita aðgerðina og setja saman MMD aftur file, keyrsluumhverfið mun lesa .aocx file og úthluta biðminni staðsetningum en mun ekki endurforrita FPGA. Þú verður að passa handvirkt FPGA myndina við .aocx file. Til að snúa þessari hegðun við skaltu fjarlægja return 0; úr endurforrita aðgerðinni og settu saman MMD aftur file.

1.6. Endurskoðunarsaga skjala

Dagsetning Útgáfa Breytingar
des-17 2017.12.01 • Endurmerkt CL_MEM_HETEROGENEOUS_ALTERA í CL_MEM_HETEROGENEOUS_INTELFPGA.
des-16 2016.12.13 • Endurmerkt CL_CONTEXT_COMPILER_MODE_ALTERA í CL_CONTEXT_COMPILER_MODE_INTELFPGA.

intel - lógóAð búa til ólík minniskerfi í Intel® FPGA SDK fyrir OpenCL
Sérsniðnir pallar
intel að búa til ólík minniskerfi í FPGA SDK fyrir OpenCL sérsniðna palla - tákn 1 Sendu athugasemdir
intel að búa til ólík minniskerfi í FPGA SDK fyrir OpenCL sérsniðna palla - táknmynd Netútgáfa
intel að búa til ólík minniskerfi í FPGA SDK fyrir OpenCL sérsniðna palla - tákn 1 Sendu athugasemdir
ID: 683654
Útgáfa: 2016.12.13

Skjöl / auðlindir

intel að búa til ólík minniskerfi í FPGA SDK fyrir OpenCL sérsniðna palla [pdfLeiðbeiningar
Að búa til ólík minniskerfi í FPGA SDK fyrir OpenCL sérsniðna palla, búa til ólíkum minniskerfum, FPGA SDK fyrir OpenCL sérsniðna vettvang

Heimildir

Skildu eftir athugasemd

Netfangið þitt verður ekki birt. Nauðsynlegir reitir eru merktir *