intel - logoKrijimi i sistemeve heterogjene të memories në FPGA SDK për platformat e personalizuara OpenCL
Udhëzimet

Krijimi i sistemeve heterogjene të memories në Intel® FPGA SDK për platformat e personalizuara OpenCL

Zbatimi i memories heterogjene në një platformë të personalizuar lejon më shumë gjerësi brezi të ndërfaqes së memories së jashtme (EMIF), si dhe aksese më të mëdha dhe më të shpejta në memorie. Kombinimi i aksesit heterogjen të memories me një të optimizuar
Kerneli OpenCL™(1) mund të rezultojë në përmirësime të rëndësishme të performancës për sistemin tuaj OpenCL.
Ky shënim aplikacioni ofron udhëzime për krijimin e sistemeve heterogjene të memories në një platformë të personalizuar për përdorim me Intel® FPGA SDK për OpenCL(2). Intel supozon se ju jeni një projektues me përvojë FPGA që po zhvillon Platforma të personalizuara që përmbajnë sisteme heterogjene memorie.
Përpara se të krijoni sistemet heterogjene të memories, njihuni me Intel FPGA SDK për dokumentet OpenCL të specifikuara më poshtë.
Informacione të Përafërta

  • Intel FPGA SDK për Udhëzuesin e Programimit OpenCL
  • Udhëzuesi i praktikave më të mira të Intel FPGA SDK për OpenCL
  • Intel FPGA SDK për OpenCL Arria 10 GX FPGA Kit i zhvillimit të referencës Udhëzuesi i transferimit të platformës

1.1. Verifikimi i funksionalitetit të Bordit FPGA dhe Ndërfaqeve EMIF

Verifikoni çdo ndërfaqe memorie në mënyrë të pavarur dhe më pas krijoni platformën tuaj të personalizuar duke përdorur memorien globale.

  1. Verifikoni çdo ndërfaqe memorie duke përdorur dizajne harduerike që mund të testojnë shpejtësinë dhe qëndrueshmërinë e secilës ndërfaqe.
  2. Instantoni platformën tuaj të personalizuar duke përdorur memorien globale.
    1. Për shembullample, nëse keni tre ndërfaqe DDR, njëra prej tyre duhet të pasqyrohet si memorie heterogjene. Në këtë rast, verifikoni funksionalitetin e pirgut OpenCL me secilën ndërfaqe DDR në mënyrë të pavarur.
      OpenCL dhe logoja OpenCL janë marka tregtare të Apple Inc. të përdorura me lejen e Khronos Group™.
    2.  Intel FPGA SDK për OpenCL bazohet në një specifikim të publikuar të Khronos dhe ka kaluar procesin e testimit të konformitetit të Khronos. Statusi aktual i konformitetit mund të gjendet në www.khronos.org/conformance.

Korporata Intel. Të gjitha të drejtat e rezervuara. Intel, logoja e Intel dhe markat e tjera Intel janë marka tregtare të Intel Corporation ose filialeve të saj. Intel garanton performancën e produkteve të saj FPGA dhe gjysmëpërçuese sipas specifikimeve aktuale në përputhje me garancinë standarde të Intel, por rezervon të drejtën të bëjë ndryshime në çdo produkt dhe shërbim në çdo kohë pa paralajmërim. Intel nuk merr përsipër asnjë përgjegjësi ose përgjegjësi që rrjedh nga aplikimi ose përdorimi i ndonjë informacioni, produkti ose shërbimi të përshkruar këtu, përveçse kur është rënë dakord shprehimisht me shkrim nga Intel. Klientët e Intel këshillohen të marrin versionin më të fundit të specifikimeve të pajisjes përpara se të mbështeten në çdo informacion të publikuar dhe përpara se të bëjnë porosi për produkte ose shërbime. *Emra dhe marka të tjera mund të pretendohen si pronë e të tjerëve.
ISO 9001:2015 Regjistruar
Përndryshe, nëse keni dy ndërfaqe DDR dhe një ndërfaqe me shpejtësi të katërt të të dhënave (QDR), verifikoni funksionalitetin e grupit OpenCL të dy ndërfaqeve DDR dhe ndërfaqes QDR në mënyrë të pavarur.
Intel rekomandon që të përdorni modele PCI Express® – (PCIe® -) ose EMIF ekskluzive për të testuar ndërfaqet tuaja të memories. Pasi të verifikoni që çdo ndërfaqe memorie është funksionale dhe se dizajni juaj OpenCL funksionon me një nëngrup të ndërfaqeve të memories, vazhdoni
për të krijuar një sistem memorie heterogjen plotësisht funksional. 
1.2. Modifikimi i board_spec.xml File
Modifiko board_spec.xml file për të specifikuar llojet e sistemeve heterogjene të memories që janë në dispozicion të kernelit OpenCL.
Gjatë përpilimit të kernelit, Intel FPGA SDK për OpenCL Offline Compiler cakton argumentet e kernelit në një memorie bazuar në argumentin e vendndodhjes së tamponit që specifikoni.
1. Shfletoni te board_spec.xml file në drejtorinë e harduerit të platformës suaj të personalizuar.
2. Hapni board_spec.xml file në një redaktues teksti dhe modifikoni XML në përputhje me rrethanat.
Për shembullample, nëse sistemi juaj i harduerit ka dy memorie DDR si memorie globale të paracaktuar dhe dy banka QDR që i modeloni si memorie heterogjene, modifikoni seksionet e memories të board_spec.xml file të ngjajë me sa vijon:
















1.3. Vendosja e ndarësve të shumëfishtë të memories në Qsys
Aktualisht, OpenCL Memory Bank Divider në modelin Qsys nuk mbështet një numër jo-fuqi prej 2 bankash memorie, gjë që nuk është një kufizim për konfigurimet tipike. Megjithatë, ka skenarë ku nevojiten një numër jo-fuqi prej 2 ndërfaqesh memorie. Për të akomoduar një numër jo-fuqi-nga-2 të ndërfaqeve të memories, përdorni ndarës të shumtë OpenCL Memory Bank për të krijuar sisteme heterogjene memorie me një numër jo-fuqi prej 2 bankash memorie. Ju duhet të krijoni shumë ndarës OpenCL Memory Bank kur keni një sistem të vërtetë heterogjen memorie. Konsideroni një sistem me një ndërfaqe memorie DDR dhe një ndërfaqe memorie QDR. Për shkak se të dy bankat kanë topologji të ndryshme memorie, ju nuk mund t'i kombinoni ato në një memorie të vetme globale.
Figura 1. Diagrami bllok i një sistemi memorie heterogjene me tre banka
Ky sistem heterogjen i memories përmban dy ndërfaqe memorie DDR dhe një ndërfaqe memorie QDR.intel Krijimi i sistemeve heterogjene të memories në FPGA SDK për platformat e personalizuara OpenCL - fig 1Nëse jeni duke përdorur versionet 16.0, 16.0.1 ose 16.0.2 të softuerit Intel Quartus® Prime dhe Altera SDK për OpenCL, ndarësi i bankës së memories OpenCL i trajton gabimisht shpërthimet e memories përtej kufijve të adresave. Për të zgjidhur këtë problem të njohur, shtoni një urë tubacioni me një madhësi shpërthimi prej 1 dhe lidhni masterin e saj Avalon ®Memory-Mapped (Avalon-MM) me portin skllavë të OpenCL Memory Bank Divider.
Shënim:
Ky problem i njohur është rregulluar në softuerin Intel Quartus Prime dhe Intel FPGA SDK për versionin OpenCL 16.1.
Figura 2. Diagrami bllok i një sistemi memorie heterogjene me tre banka me një urë tubacioni intel Krijimi i sistemeve heterogjene të memories në FPGA SDK për platformat e personalizuara OpenCL - fig 21.4. Modifikimi i Programit të Testit të Bordit dhe Kodit të Pritësit për Zgjidhjen Tuaj Heterogene të Memories
Përdorni kernelin boardtest.cl që vjen me Intel FPGA SDK për OpenCL Custom Platform Toolkit për të testuar funksionalitetin dhe performancën e Platformës suaj të personalizuar.
Programi i testit të tabelës është një kernel OpenCL që ju lejon të testoni gjerësinë e brezit nga hosti në pajisje, gjerësinë e brezit të kujtesës dhe funksionalitetin e përgjithshëm të Platformës suaj të personalizuar.

  1. Shfletoni në Drejtoria /board/ custom_platform_toolkit/tests/boardtest.
  2. Hapni testin e tabelës.cl file në një redaktues teksti dhe caktoni një vend buferi për çdo argument global të memories.
    Për shembullampe:
    __kernel bosh
    mem_stream (__global__attribute__((buffer_location("DDR"))) uint *src, __global __attribute__((buffer_location("QDR"))) uint *dst, uint arg, uint arg2)
    Këtu, uint *src i caktohet memorjes DDR dhe uint *dst i caktohet memorjes QDR. Bordi_spec.xml file specifikon karakteristikat e të dy sistemeve të memories.
  3. Për të përdorur zgjidhjen tuaj heterogjene të memories në sistemin tuaj OpenCL, modifikoni kodin tuaj të hostit duke shtuar flamurin CL_MEM_HETEROGENEOUS_INTELFPGA në thirrjen tuaj clCreateBuffer.
    Për shembullampe:
    ddatain = clCreateBuffer(kontekst, CL_MEM_READ_WRITE | memflags
    CL_MEM_HETEROGENEOUS_INTELFPGA, madhësia (e panënshkruar) * vectorSize, NULL, &status);
    Intel rekomandon fuqimisht që të vendosni vendndodhjen e tamponit si një argument kernel përpara se të shkruani bufferin. Kur përdorni një memorie të vetme globale, mund t'i shkruani buferët ose para ose pas caktimit të tyre në një argument kernel. Në sistemet heterogjene të memories, hosti vendos vendndodhjen e tamponit përpara se të shkruajë buferin. Me fjalë të tjera, hosti do të thërrasë funksionin clSetKernelArgument përpara se të thërrasë funksionin clEnqueueWriteBuffer.
    Në kodin tuaj pritës, thirrni thirrjet clCreateBuffer, clSetKernelArg dhe clEnqueueWriteBuffer në rendin e mëposhtëm:
    ddatain = clCreateBuffer(kontekst, CL_MEM_READ_WRITE | memflag |
    CL_MEM_HETEROGENEOUS_INTELFPGA, madhësia (e panënshkruar) * vectorSize, NULL, &status);
    … status = clSetKernelArg(kernel[k], 0, sizeof(cl_mem), (void*)&ddatain);
    … status = clEnqueueWriteBuffer(radha, ddatain, CL_FALSE, 0, sizeof(i panënshkruar) * vectorSize,hdatain, 0, NULL, NULL);
    ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file paraqet një renditje të ngjashme të këtyre thirrjeve të funksionit.
  4.  Pasi të modifikoni boardtest.cl file dhe kodin pritës, përpiloni kodin e hostit dhe kernelit dhe verifikoni funksionalitetin e tyre.
    Kur përpiloni kodin tuaj të kernelit, duhet të çaktivizoni ndërthurjen e të gjitha sistemeve të kujtesës duke përfshirë –no-interleaving opsion në komandën aoc.

Informacione të Përafërta
Çaktivizimi i ndërthurjes së shpërthimit të kujtesës globale (-pa ndërthurje )

1.5. Verifikimi i funksionalitetit të kujtesës suaj heterogjene Sistemi
Për të siguruar që sistemi heterogjen i memories funksionon siç duhet, çaktivizoni flamurin CL_CONTEXT_COMPILER_MODE_INTELFPGA në kodin tuaj pritës.
Në sistemet OpenCL me memorie homogjene, ju duhet të vendosni opsionin për të vendosur flamurin CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 në kodin tuaj pritës për të çaktivizuar leximin e .aocx file dhe riprogramimin e FPGA. Caktimi i flamurit CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 është i dobishëm kur instaloni tabelën tuaj për të verifikuar funksionalitetin e platformës suaj të personalizuar pa dizajnuar planimetrinë dhe pa specifikuar rajonet LogicLock™.
Me sistemet heterogjene të memories, mjedisi i kohës së funksionimit duhet të lexojë vendndodhjet e tamponit të secilit buffer, të përshkruar në .aocx file, për të verifikuar funksionalitetin e sistemeve të kujtesës. Sidoqoftë, mund të dëshironi të verifikoni funksionalitetin e Platformës suaj të personalizuar pa zbatuar veçoritë përfundimtare të dizajnit të tabelës, të tilla si dizajnimi i planit të dyshemesë dhe specifikimi i rajoneve LogicLock.

  1. Verifikoni që flamuri CL_CONTEXT_COMPILER_MODE_INTELFPGA nuk është vendosur në kodin tuaj pritës.
  2. Shfletoni në tabelë/ Drejtoria /source/host/mmd e Platformës suaj të personalizuar.
  3. Hapni pajisjen e hartuar me memorie acl_pcie_device.cpp (MMD) file në një redaktues teksti.
  4.  Ndryshoni funksionin e riprogramit në acl_pcie_device.cpp file duke shtuar një kthim 0; linjë, siç tregohet më poshtë:
    int ACL_PCIE_DEVICE::riprogram (i pavlefshëm *të dhënat, madhësia_t_madhësia e të dhënave)
    {
    kthimi 0;
    // supozojmë dështim
    int riprogrami_dështoi = 1;
    // supozoni asnjë rbf ose hash në fpga.bin
    int rbf_ose_hash_not_provided = 1;
    // supozojmë se hash-et e rishikimit të bazës dhe importit nuk përputhen
    int hash_mospërputhje = 1;

    }
  5. Rikompiloni acl_pcie_device.cpp file.
  6. Verifikoni që flamuri CL_CONTEXT_COMPILER_MODE_INTELFPGA të mbetet i pacaktuar.
    Kujdes: Pasi të shtoni kthimin 0; në funksionin e riprogramimit dhe rikompiloni MMD-në file, mjedisi i ekzekutimit do të lexojë .aocx file dhe caktoni vendndodhjet e buferit, por nuk do të riprogramojë FPGA. Ju duhet të përputhni manualisht imazhin FPGA me .aocx file. Për të ndryshuar këtë sjellje, hiqni kthimin 0; nga funksioni i riprogramimit dhe rikompiloni MMD-në file.

1.6. Historia e rishikimit të dokumentit

Data Versioni Ndryshimet
Dhjetor-17 2017.12.01 • Riemërtuar CL_MEM_HETEROGENEOUS_ALTERA në CL_MEM_HETEROGENEOUS_INTELFPGA.
Dhjetor-16 2016.12.13 • CL_CONTEXT_COMPILER_MODE_ALTERA u riemërua në CL_CONTEXT_COMPILER_MODE_INTELFPGA.

intel - logoKrijimi i sistemeve heterogjene të memories në Intel® FPGA SDK për OpenCL
Platformat e personalizuara
intel Krijon sisteme heterogjene memorie në FPGA SDK për platformat e personalizuara OpenCL - ikona 1 Dërgo koment
intel Krijimi i sistemeve heterogjene të memories në FPGA SDK për platformat e personalizuara OpenCL - ikona Versioni Online
intel Krijon sisteme heterogjene memorie në FPGA SDK për platformat e personalizuara OpenCL - ikona 1 Dërgo koment
ID: 683654
Versioni: 2016.12.13

Dokumentet / Burimet

intel Krijimi i sistemeve heterogjene të memories në FPGA SDK për platformat e personalizuara OpenCL [pdfUdhëzime
Krijimi i sistemeve heterogjene të memories në FPGA SDK për platformat e personalizuara OpenCL, Krijimi i sistemeve heterogjene të memories, FPGA SDK për platformat e personalizuara OpenCL

Referencat

Lini një koment

Adresa juaj e emailit nuk do të publikohet. Fushat e kërkuara janë shënuar *