intel - logotipasHeterogeninių atminties sistemų kūrimas FPGA SDK, skirtas OpenCL tinkintoms platformoms
Instrukcijos

Heterogeninių atminties sistemų kūrimas Intel® FPGA SDK, skirtas OpenCL tinkintoms platformoms

Nevienodos atminties įdiegimas tinkintoje platformoje leidžia pasiekti didesnį išorinės atminties sąsajos (EMIF) pralaidumą, taip pat didesnę ir greitesnę prieigą prie atminties. Heterogeninės prieigos prie atminties derinys su optimizuota
OpenCL™(1) branduolys gali žymiai pagerinti jūsų OpenCL sistemos našumą.
Šioje programos pastaboje pateikiamos gairės, kaip sukurti nevienalytes atminties sistemas tinkintoje platformoje, skirtą naudoti su Intel® FPGA SDK, skirtu OpenCL(2). „Intel“ daro prielaidą, kad esate patyręs FPGA dizaineris, kuris kuria pasirinktines platformas, kuriose yra nevienalyčių atminties sistemų.
Prieš kurdami nevienalytes atminties sistemas, susipažinkite su toliau nurodytais Intel FPGA SDK OpenCL dokumentams.
Susijusi informacija

  • Intel FPGA SDK, skirtas OpenCL programavimo vadovui
  • Intel FPGA SDK, skirtas OpenCL geriausios praktikos vadovas
  • „Intel“ FPGA SDK, skirtas „OpenCL Arria 10 GX FPGA Development Kit“ informacinės platformos perkėlimo vadovas

1.1. FPGA plokštės ir EMIF sąsajų funkcionalumo patikrinimas

Atskirai patikrinkite kiekvieną atminties sąsają ir sukurkite savo tinkintą platformą naudodami visuotinę atmintį.

  1. Patikrinkite kiekvieną atminties sąsają naudodami techninės įrangos konstrukcijas, kurios gali patikrinti kiekvienos sąsajos greitį ir stabilumą.
  2. Sukurkite savo pasirinktinę platformą naudodami visuotinę atmintį.
    1. Pavyzdžiui,ample, jei turite tris DDR sąsajas, viena iš jų turi būti susieta kaip nevienalytė atmintis. Tokiu atveju patikrinkite OpenCL dėklo funkcionalumą naudodami kiekvieną DDR sąsają atskirai.
      OpenCL ir OpenCL logotipas yra Apple Inc. prekių ženklai, naudojami su Khronos Group™ leidimu.
    2.  „Intel“ FPGA SDK, skirtas „OpenCL“, yra pagrįstas paskelbta „Khronos“ specifikacija ir praėjo „Khronos“ atitikties testavimo procesą. Dabartinę atitikties būseną galite rasti adresu www.khronos.org/conformance.

Intel korporacija. Visos teisės saugomos. „Intel“, „Intel“ logotipas ir kiti „Intel“ ženklai yra „Intel Corporation“ arba jos dukterinių įmonių prekių ženklai. „Intel“ garantuoja savo FPGA ir puslaidininkinių produktų veikimą pagal dabartines specifikacijas pagal standartinę „Intel“ garantiją, tačiau pasilieka teisę bet kuriuo metu be įspėjimo keisti bet kokius gaminius ir paslaugas. „Intel“ neprisiima jokios atsakomybės ar įsipareigojimų, kylančių dėl bet kokios čia aprašytos informacijos, produkto ar paslaugos taikymo ar naudojimo, išskyrus atvejus, kai „Intel“ aiškiai sutiko raštu. „Intel“ klientams patariama įsigyti naujausią įrenginio specifikacijų versiją prieš pasikliaujant bet kokia paskelbta informacija ir prieš užsakant produktus ar paslaugas. *Kiti pavadinimai ir prekės ženklai gali būti laikomi kitų nuosavybe.
Užregistruotas ISO 9001: 2015
Arba, jei turite dvi DDR sąsajas ir vieną keturių duomenų perdavimo spartos (QDR) sąsają, patikrinkite dviejų DDR sąsajų ir QDR sąsajos OpenCL dėklo funkcionalumą.
„Intel“ rekomenduoja naudoti PCI Express® – (PCIe® -) arba išskirtinį EMIF dizainą, kad išbandytumėte atminties sąsajas. Įsitikinę, kad kiekviena atminties sąsaja veikia ir ar jūsų OpenCL dizainas veikia su atminties sąsajų poaibiu, tęskite
sukurti pilnai veikiančią heterogeninę atminties sistemą. 
1.2. Modifikuojamas board_spec.xml File
Pakeiskite board_spec.xml file nurodyti nevienalyčių atminties sistemų, kurios yra prieinamos OpenCL branduoliams, tipus.
Branduolio kompiliavimo metu Intel FPGA SDK, skirtas OpenCL neprisijungus kompiliatoriui, priskiria branduolio argumentus atminčiai pagal jūsų nurodytą buferio vietos argumentą.
1. Naršykite į board_spec.xml file tinkintos platformos aparatinės įrangos kataloge.
2. Atidarykite board_spec.xml file teksto rengyklėje ir atitinkamai pakeiskite XML.
Pavyzdžiui,ampJei jūsų aparatinės įrangos sistemoje yra dvi DDR atmintis kaip numatytoji globali atmintis ir du QDR bankai, kuriuos modeliuojate kaip heterogeninę atmintį, pakeiskite board_spec.xml atminties dalis file kad būtų panašus į šiuos:
















1.3. Kelių atminties daliklių nustatymas Qsys
Šiuo metu Qsys dizaino OpenCL atminties banko skirstytuvas nepalaiko 2 atminties bankų skaičiaus, o tai nėra apribojimas tipinėms konfigūracijoms. Tačiau yra scenarijų, kai reikia ne 2 galios atminties sąsajų. Norėdami pritaikyti ne-2 galios atminties sąsajų skaičių, naudokite kelis OpenCL atminties banko skirstytuvus, kad sukurtumėte nevienalytes atminties sistemas su ne-2 galios atminties bankų skaičiumi. Jei turite tikrą nevienalytę atminties sistemą, turite sukurti kelis OpenCL atminties banko daliklius. Apsvarstykite sistemą su viena DDR atminties sąsaja ir viena QDR atminties sąsaja. Kadangi du bankai turi skirtingas atminties topologijas, negalite jų sujungti į vieną visuotinę atmintį.
1 pav. Trijų bankų heterogeninės atminties sistemos blokinė diagrama
Ši nevienalytė atminties sistema turi dvi DDR atminties sąsajas ir vieną QDR atminties sąsają.intel: Heterogeninių atminties sistemų kūrimas FPGA SDK, skirta OpenCL tinkintoms platformoms – 1 pav.Jei naudojate „Intel Quartus® Prime“ programinės įrangos 16.0, 16.0.1 arba 16.0.2 versiją ir „Altera SDK“, skirtą OpenCL, „OpenCL Memory Bank Divider“ neteisingai apdoroja atminties serijas per adresų ribas. Norėdami išspręsti šią žinomą problemą, pridėkite dujotiekio tiltelį, kurio serijos dydis yra 1, ir prijunkite jo pagrindinį „Avalon®Memory-Mapped“ (Avalon-MM) prie „OpenCL Memory Bank Divider“ pagalbinio prievado.
Pastaba:
Ši žinoma problema išspręsta „Intel Quartus Prime“ programinėje įrangoje ir „Intel FPGA SDK“, skirta 16.1 versijos OpenCL.
2 pav. Trijų bankų heterogeninės atminties sistemos su vamzdyno tiltu blokinė schema intel: Heterogeninių atminties sistemų kūrimas FPGA SDK, skirta OpenCL tinkintoms platformoms – 2 pav.1.4. „Boardtest“ programos ir pagrindinio kodo modifikavimas jūsų heterogeninės atminties sprendimui
Naudokite boardtest.cl branduolį, pateiktą kartu su Intel FPGA SDK, skirtu OpenCL tinkintos platformos įrankių rinkiniui, kad patikrintumėte savo tinkintos platformos funkcionalumą ir našumą.
„Boardtest“ programa yra „OpenCL“ branduolys, leidžiantis patikrinti pagrindinio kompiuterio ir įrenginio pralaidumą, atminties pralaidumą ir bendrąsias tinkintos platformos funkcijas.

  1. Naršykite į /board/ custom_platform_toolkit/tests/boardtest katalogas.
  2. Atidarykite boardtest.cl file teksto rengyklėje ir kiekvienam globalios atminties argumentui priskirkite buferio vietą.
    Pavyzdžiui,ampLe:
    __branduo negalioja
    mem_stream (__globalus__attribute__((buferio_vieta("DDR"))) uint *src, __globalus __attribute__((buferio_vieta("QDR"))) uint *dst, uint arg, uint arg2)
    Čia uint *src priskiriamas DDR atminčiai, o uint *dst - QDR atminčiai. Board_spec.xml file nurodo abiejų atminties sistemų charakteristikas.
  3. Norėdami panaudoti nevienalytės atminties sprendimą savo OpenCL sistemoje, pakeiskite pagrindinio kompiuterio kodą pridėdami CL_MEM_HETEROGENEOUS_INTELFPGA vėliavėlę prie savo clCreateBuffer skambučio.
    Pavyzdžiui,ampLe:
    ddatain = clCreateBuffer(context, CL_MEM_READ_WRITE | memflags
    CL_MEM_HETEROGENEOUS_INTELFPGA, dydis(nepasirašytas) * vektoriaus dydis, NULL, &būsena);
    „Intel“ primygtinai rekomenduoja prieš rašant buferį nustatyti buferio vietą kaip branduolio argumentą. Kai naudojate vieną visuotinę atmintį, galite įrašyti buferius prieš arba po jų priskyrimo branduolio argumentui. Heterogeninėse atminties sistemose pagrindinis kompiuteris nustato buferio vietą prieš įrašydamas buferį. Kitaip tariant, pagrindinis kompiuteris iškvies funkciją clSetKernelArgument prieš iškviesdamas funkciją clEnqueueWriteBuffer.
    Pagrindinio kompiuterio kode iškvieskite clCreateBuffer, clSetKernelArg ir clEnqueueWriteBuffer iškvietimus tokia tvarka:
    ddatain = clCreateBuffer(context, CL_MEM_READ_WRITE | memflags |
    CL_MEM_HETEROGENEOUS_INTELFPGA, dydis(nepasirašytas) * vektoriaus dydis, NULL, &būsena);
    … status = clSetKernelArg(branduolys[k], 0, dydis(cl_mem), (void*)&ddatain);
    … status = clEnqueueWriteBuffer(eilė, dduomenys, CL_FALSE, 0, dydis(nepasirašytas) * vektorinis dydis,hdatain, 0, NULL, NULL);
    ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file pateikia panašią šių funkcijų iškvietimų tvarką.
  4.  Pakeitę boardtest.cl file ir pagrindinio kompiuterio kodą, sukompiliuokite pagrindinio kompiuterio ir branduolio kodą ir patikrinkite jų funkcionalumą.
    Kompiliuodami branduolio kodą, turite išjungti visų atminties sistemų serijų perpylimą įtraukdami –no-interleaving parinktis komandoje aoc.

Susijusi informacija
Visuotinės atminties serijos perpylimo išjungimas (–no-interleaving )

1.5. Jūsų heterogeninės atminties funkcionalumo patikrinimas Sistema
Norėdami užtikrinti, kad nevienalytės atminties sistema veiktų tinkamai, atjunkite CL_CONTEXT_COMPILER_MODE_INTELFPGA vėliavėlę pagrindinio kompiuterio kode.
OpenCL sistemose su vienalyte atmintimi turite pasirinkti pagrindinio kompiuterio kode nustatyti CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 vėliavėlę, kad išjungtumėte .aocx skaitymą file ir FPGA perprogramavimas. CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 vėliavėlės nustatymas yra naudingas, kai sukuriate plokštę, kad patikrintumėte pasirinktinės platformos funkcionalumą nekuriant grindų plano ir nenurodant LogicLock™ regionų.
Naudojant nevienalytes atminties sistemas, vykdymo aplinka turi nuskaityti kiekvieno buferio buferio vietas, aprašytas .aocx. file, patikrinti atminties sistemų funkcionalumą. Tačiau galbūt norėsite patikrinti savo tinkintos platformos funkcionalumą neįdiegę galutinių lentos dizaino ypatybių, pvz., nekurdami grindų plano ir nenurodydami LogicLock regionų.

  1. Patikrinkite, ar prieglobos kode nenustatyta CL_CONTEXT_COMPILER_MODE_INTELFPGA vėliavėlė.
  2. Naršyti į lentą/ /source/host/mmd savo tinkintos platformos kataloge.
  3. Atidarykite acl_pcie_device.cpp atminties susiejimo įrenginį (MMD) file teksto rengyklėje.
  4.  Pakeiskite perprogramavimo funkciją acl_pcie_device.cpp file pridedant grąžą 0; eilutė, kaip parodyta žemiau:
    int ACL_PCIE_DEVICE::perprogramuoti(negalioja *duomenys, dydis_t duomenų_dydis)
    {
    grąžinti 0;
    // manyti, kad nepavyko
    int reprogram_failed = 1;
    // Tarkime, kad fpga.bin nėra rbf arba maišos
    int rbf_or_hash_not_provided = 1;
    // Tarkime, kad bazinės ir importo versijos maišos nesutampa
    int maišos_nesumatymas = 1;

    }
  5. Iš naujo sukompiliuokite acl_pcie_device.cpp file.
  6. Patikrinkite, ar CL_CONTEXT_COMPILER_MODE_INTELFPGA vėliavėlė lieka nenustatyta.
    Dėmesio: Pridėjus grąžinti 0; į perprogramavimo funkciją ir iš naujo sukompiliuokite MMD file, vykdymo aplinka skaitys .aocx file ir priskirti buferio vietas, bet neperprogramuos FPGA. Turite rankiniu būdu suderinti FPGA vaizdą su .aocx file. Norėdami pakeisti šį elgesį, pašalinkite return 0; iš perprogramavimo funkcijos ir iš naujo sukompiliuokite MMD file.

1.6. Dokumento taisymo istorija

Data Versija Pakeitimai
Gruodžio-17 2017.12.01 • Pakeistas prekės ženklas CL_MEM_HETEROGENEOUS_ALTERA į CL_MEM_HETEROGENEOUS_INTELFPGA.
Gruodžio-16 2016.12.13 • CL_CONTEXT_COMPILER_MODE_ALTERA prekės ženklas pakeistas į CL_CONTEXT_COMPILER_MODE_INTELFPGA.

intel - logotipasHeterogeninių atminties sistemų kūrimas Intel® FPGA SDK, skirtas OpenCL
Individualizuotos platformos
intel Nevienalyčių atminties sistemų kūrimas FPGA SDK, skirta OpenCL tinkintoms platformoms – 1 piktograma Siųsti Atsiliepimus
intel Nevienalyčių atminties sistemų kūrimas FPGA SDK, skirta OpenCL tinkintoms platformoms - piktograma Internetinė versija
intel Nevienalyčių atminties sistemų kūrimas FPGA SDK, skirta OpenCL tinkintoms platformoms – 1 piktograma Siųsti Atsiliepimus
ID: 683654
Versija: 2016.12.13

Dokumentai / Ištekliai

intel Sukurti heterogenines atminties sistemas FPGA SDK, skirtą OpenCL tinkintoms platformoms [pdfInstrukcijos
Heterogeninių atminties sistemų kūrimas FPGA SDK, skirtas OpenCL tinkintoms platformoms, heterogeninių atminties sistemų kūrimas, FPGA SDK, skirtas OpenCL tinkintoms platformoms

Nuorodos

Palikite komentarą

Jūsų el. pašto adresas nebus skelbiamas. Privalomi laukai pažymėti *