intel - logoIterogene ûnthâldsystemen oanmeitsje yn FPGA SDK foar OpenCL Custom Platforms
Ynstruksjes

Iterogene ûnthâldsystemen oanmeitsje yn Intel® FPGA SDK foar OpenCL Custom Platforms

De ymplemintaasje fan heterogene ûnthâld yn in oanpast platfoarm makket it mooglik foar mear eksterne ûnthâld ynterface (EMIF) bânbreedte likegoed as gruttere en flugger ûnthâld tagong. De kombinaasje fan heterogene ûnthâld tagong mei in optimalisearre
OpenCL ™(1) kernel kin resultearje yn signifikante prestaasjesferbetteringen foar jo OpenCL-systeem.
Dizze applikaasjenota jout begelieding oer it meitsjen fan heterogene ûnthâldsystemen yn in oanpast platfoarm foar gebrûk mei de Intel® FPGA SDK foar OpenCL (2). Intel giet derfan út dat jo in betûfte FPGA-ûntwerper binne dy't oanpaste platfoarms ûntwikkelje dy't heterogene ûnthâldsystemen befetsje.
Foardat jo de heterogene ûnthâldsystemen meitsje, meitsje josels bekend mei de Intel FPGA SDK foar OpenCL-dokuminten dy't hjirûnder spesifisearre binne.
Related Information

  • Intel FPGA SDK foar OpenCL Programming Guide
  • Intel FPGA SDK foar OpenCL Best Practices Guide
  • Intel FPGA SDK foar OpenCL Arria 10 GX FPGA Development Kit Reference Platform Porting Guide

1.1. Ferifiearje de funksjonaliteit fan it FPGA-bestjoer en de EMIF-ynterfaces

Ferifiearje elk ûnthâld ynterface ûnôfhinklik en dan instantiate jo Custom Platform mei help fan globale ûnthâld.

  1. Ferifiearje elk ûnthâld ynterface mei help fan hardware-ûntwerpen dy't de snelheid en stabiliteit fan elke ynterface kinne testen.
  2. Instantiearje jo Custom Platform mei globaal ûnthâld.
    1. Bygelyksample, as jo trije DDR Schnittstellen, ien fan harren moat wurde yn kaart brocht as heterogene ûnthâld. Kontrolearje yn dit gefal de funksjonaliteit fan 'e OpenCL-stapel mei elke DDR-ynterface ûnôfhinklik.
      OpenCL en it OpenCL-logo binne hannelsmerken fan Apple Inc. brûkt mei tastimming fan de Khronos Group™.
    2.  De Intel FPGA SDK foar OpenCL is basearre op in publisearre Khronos-spesifikaasje, en hat it Khronos Conformance Testing-proses trochjûn. Aktuele konformiteitstatus is te finen op www.khronos.org/conformance.

Intel Corporation. Alle rjochten foarbehâlden. Intel, it Intel-logo en oare Intel-merken binne hannelsmerken fan Intel Corporation of har dochterûndernimmingen. Intel garandearret prestaasjes fan har FPGA- en semiconductor-produkten oan hjoeddeistige spesifikaasjes yn oerienstimming mei Intel's standert garânsje, mar behâldt it rjocht foar om op elk momint feroarings te meitsjen oan produkten en tsjinsten sûnder notice. Intel nimt gjin ferantwurdlikens of oanspraaklikens oan dy't fuortkomme út 'e applikaasje of gebrûk fan ynformaasje, produkt of tsjinst beskreaun hjiryn, útsein as útdruklik skriftlik ôfpraat troch Intel. Intel-klanten wurde advisearre om de lêste ferzje fan apparaatspesifikaasjes te krijen foardat se fertrouwe op alle publisearre ynformaasje en foardat se oarders pleatse foar produkten of tsjinsten. * Oare nammen en merken kinne wurde opeaske as eigendom fan oaren.
ISO 9001:2015 Registrearre
As alternatyf, as jo twa DDR-ynterfaces en ien quad data rate (QDR) ynterface hawwe, ferifiearje de funksjonaliteit fan 'e OpenCL-stapel fan' e twa DDR-ynterfaces en de QDR-ynterface ûnôfhinklik.
Intel advisearret dat jo PCI Express® - (PCIe® -) of EMIF-eksklusive ûntwerpen brûke om jo ûnthâldinterfaces te testen. Neidat jo hawwe ferifiearre dat elke ûnthâld ynterface is funksjoneel en dat jo OpenCL ûntwerp wurket mei in subset fan de ûnthâld ynterfaces, gean fierder
om in folslein funksjoneel heterogene ûnthâldsysteem te meitsjen. 
1.2. It wizigjen fan de board_spec.xml File
Feroarje de board_spec.xml file om de soarten heterogene ûnthâldsystemen oan te jaan dy't beskikber binne foar de OpenCL-kernels.
Tidens kernel kompilaasje, de Intel FPGA SDK foar OpenCL Offline Compiler jout kernel arguminten oan in ûnthâld basearre op it buffer lokaasje argumint dat jo oantsjutte.
1. Blêdzje nei it board_spec.xml file yn 'e hardwaremap fan jo oanpaste platfoarm.
2. Iepenje de board_spec.xml file yn in tekstbewurker en wizigje de XML neffens.
Bygelyksample, as jo hardware systeem hat twa DDR oantinkens as standert globalmemory en twa QDR banken dy't jo model as heterogene ûnthâld, feroarje it ûnthâld seksjes fan de board_spec.xml file om it folgjende te lykjen:
















1.3. It ynstellen fan meardere ûnthâld dividers yn Qsys
Op it stuit stipet de OpenCL Memory Bank Divider yn it Qsys-ûntwerp gjin net-power-of-2 oantal ûnthâldbanken, wat gjin beheining is foar typyske konfiguraasjes. D'r binne lykwols senario's wêr't net-power-of-2 oantal ûnthâld-ynterfaces nedich binne. Foar in plak net-power-of-2 oantal ûnthâld ynterfaces, brûk meardere OpenCL Memory Bank Dividers foar in meitsje heterogene ûnthâld systemen mei net-power-of-2 oantal ûnthâld banken. Jo moatte meitsje meardere OpenCL Memory Bank Dividers as jo in wier heterogene ûnthâld systeem. Betink in systeem mei ien DDR ûnthâld ynterface en ien QDR ûnthâld ynterface. Omdat de twa banken hawwe ferskillende ûnthâld topologyen, kinne jo net kombinearje se ûnder ien globale ûnthâld.
figuer 1. Block Diagram fan in trije-Bank heterogene ûnthâld System
Dit heterogene ûnthâld systeem befettet twa DDR ûnthâld ynterfaces en ien QDR ûnthâld ynterface.intel Heterogene ûnthâldsystemen oanmeitsje yn FPGA SDK foar OpenCL Custom Platforms - fig 1As jo ​​​​ferzje 16.0, 16.0.1, of 16.0.2 brûke fan 'e Intel Quartus® Prime-software en de Altera SDK foar OpenCL, behannelet de OpenCL Memory Bank Divider ferkeard ûnthâldbursts oer adresgrinzen. Om dit bekende probleem om te wurkjen, foegje in pipelinebrêge ta mei in burstgrutte fan 1 en ferbine har Avalon ®Memory-Mapped (Avalon-MM) master oan de slavehaven fan OpenCL Memory Bank Divider.
Noat:
Dit bekende probleem is fêst yn 'e Intel Quartus Prime-software en de Intel FPGA SDK foar OpenCL ferzje 16.1.
figuer 2. Block Diagram fan in trije-Bank heterogene ûnthâld systeem mei in pipeline brêge intel Heterogene ûnthâldsystemen oanmeitsje yn FPGA SDK foar OpenCL Custom Platforms - fig 21.4. It Boardtest-programma en de hostkoade wizigje foar jo heterogene ûnthâldoplossing
Brûk de boardtest.cl kernel dy't komt mei de Intel FPGA SDK foar OpenCL Custom Platform Toolkit om de funksjonaliteit en prestaasjes fan jo Custom Platform te testen.
It boardtest-programma is in OpenCL-kernel wêrmei jo host-oan-apparaat bânbreedte, ûnthâldbânbreedte en algemiene funksjonaliteit fan jo oanpast platfoarm kinne testen.

  1. Blêdzje nei de /board/ custom_platform_toolkit/tests/boardtest directory.
  2. Iepenje de boardtest.cl file yn in tekst bewurker en tawize in buffer lokaasje oan elk globale ûnthâld argumint.
    Bygelyksample:
    __kernel leech
    mem_stream (__global__attribute__((buffer_location(“DDR”))) uint *src, __global __attribute__((buffer_location(“QDR”))) uint *dst, uint arg, uint arg2)
    Hjir wurdt uint * src tawiisd oan DDR-ûnthâld, en uint * dst wurdt tawiisd oan QDR-ûnthâld. De board_spec.xml file spesifisearret de skaaimerken fan beide ûnthâld systemen.
  3. Om jo heterogene ûnthâldoplossing yn jo OpenCL-systeem te benutten, wizigje jo hostkoade troch de CL_MEM_HETEROGENEOUS_INTELFPGA-flagge ta te foegjen oan jo clCreateBuffer-oprop.
    Bygelyksample:
    ddatain = clCreateBuffer(context, CL_MEM_READ_WRITE | memflags
    CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof (net ûndertekene) * vectorSize, NULL, &status);
    Intel riedt sterk oan dat jo de bufferlokaasje ynstelle as in kearnargumint foardat jo de buffer skriuwe. By it brûken fan ien globaal ûnthâld, kinne jo de buffers skriuwe foar of nei it tawizen fan se oan in kearnargumint. Yn heterogene ûnthâld systemen stelt de host de buffer lokaasje foar it skriuwen fan de buffer. Mei oare wurden, de host sil de funksje clSetKernelArgument neame foardat de funksje clEnqueueWriteBuffer oanroppen wurdt.
    Roep yn jo hostkoade de clCreateBuffer, clSetKernelArg, en clEnqueueWriteBuffer op yn 'e folgjende folchoarder:
    ddatain = clCreateBuffer(context, CL_MEM_READ_WRITE | memflags |
    CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof (net ûndertekene) * vectorSize, NULL, &status);
    … status = clSetKernelArg(kernel[k], 0, sizeof(cl_mem), (void*)&ddatain);
    … status = clEnqueueWriteBuffer(queue, ddatain, CL_FALSE, 0, sizeof(unsigned) * vectorSize,hdatain, 0, NULL, NULL);
    De ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file presintearret in ferlykbere folchoarder fan dizze funksje-oanroppen.
  4.  Neidat jo wizigje de boardtest.cl file en de hostkoade, kompilearje de host- en kernelkoade en ferifiearje har funksjonaliteit.
    By it kompilearjen fan jo kernelkoade moatte jo burst-ynterleaving fan alle ûnthâldsystemen útskeakelje troch de -no-interleaving op te nimmen opsje yn it aoc kommando.

Related Information
Burst-ynterleaving fan Global Memory útskeakelje (-gjin-ynterleaving )

1.5. Ferifiearje de funksjonaliteit fan jo heterogene ûnthâld Systeem
Om derfoar te soargjen dat it heterogene ûnthâldsysteem goed funksjonearret, ûntsette de flagge CL_CONTEXT_COMPILER_MODE_INTELFPGA yn jo hostkoade.
Yn OpenCL-systemen mei homogeen ûnthâld moatte jo de CL_CONTEXT_COMPILER_MODE_INTELFPGA=3-flagge yn jo hostkoade ynstelle om it lêzen fan 'e .aocx út te skeakeljen file en de werprogrammearring fan 'e FPGA. It ynstellen fan de CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 flagge is nuttich by it ynstantiearjen fan jo boerd om de funksjonaliteit fan jo oanpast platfoarm te ferifiearjen sûnder it flierplan te ûntwerpen en de LogicLock™-regio's op te jaan.
Mei heterogene ûnthâld systemen, de runtime omjouwing moat lêze de buffer lokaasjes fan eltse buffer, beskreaun yn de .aocx file, om de funksjonaliteit fan 'e ûnthâldsystemen te kontrolearjen. Jo kinne lykwols de funksjonaliteit fan jo Custom Platform ferifiearje sûnder de lêste funksjes fan it boerdûntwerp te ymplementearjen, lykas it ûntwerpen fan it flierplan en it opjaan fan de LogicLock-regio's.

  1. Ferifiearje dat de flagge CL_CONTEXT_COMPILER_MODE_INTELFPGA net ynsteld is yn jo hostkoade.
  2. Blêdzje nei it boerd/ /source/host/mmd map fan jo oanpast platfoarm.
  3. Iepenje it acl_pcie_device.cpp ûnthâld-mapped apparaat (MMD) file yn in tekstbewurker.
  4.  Feroarje de werprogrammearring funksje yn de acl_pcie_device.cpp file troch it tafoegjen fan in weromkear 0; line, lykas hjirûnder werjûn:
    int ACL_PCIE_DEVICE :: reprogram (void *data, size_t data_size)
    {
    werom 0;
    // oannimme mislearring
    int reprogram_failed = 1;
    // oannimme gjin rbf of hash yn fpga.bin
    int rbf_or_hash_not_provided = 1;
    // oannimme dat basis- en ymport-revyzje-hashes net oerienkomme
    int hash_mismatch = 1;

    }
  5. Op 'e nij kompilearje de acl_pcie_device.cpp file.
  6. Ferifiearje dat de flagge CL_CONTEXT_COMPILER_MODE_INTELFPGA net ynsteld is.
    Oandacht: Neidat jo tafoegje return 0; nei de funksje opnij programmearje en de MMD opnij kompilearje file, sil de runtime-omjouwing de .aocx lêze file en tawize de buffer lokaasjes, mar sil net reprogrammearje de FPGA. Jo moatte de FPGA-ôfbylding manuell oerienkomme mei de .aocx file. Om dit gedrach te kearen, ferwiderje return 0; fan 'e funksje opnij programmearje en de MMD opnij kompilearje file.

1.6. Document Revision Skiednis

Datum Ferzje Feroarings
Dec-17 2017.12.01 • Rebranded CL_MEM_HETEROGENEOUS_ALTERA to CL_MEM_HETEROGENEOUS_INTELFPGA.
Dec-16 2016.12.13 • Rebranded CL_CONTEXT_COMPILER_MODE_ALTERA nei CL_CONTEXT_COMPILER_MODE_INTELFPGA.

intel - logoIterogene ûnthâldsystemen oanmeitsje yn Intel® FPGA SDK foar OpenCL
Oanpaste platfoarms
intel Heterogene ûnthâldsystemen oanmeitsje yn FPGA SDK foar OpenCL Custom Platforms - ikoan 1 Stjoer Feedback
intel It oanmeitsjen fan heterogene ûnthâldsystemen yn FPGA SDK foar OpenCL Custom Platforms - ikoan Online Ferzje
intel Heterogene ûnthâldsystemen oanmeitsje yn FPGA SDK foar OpenCL Custom Platforms - ikoan 1 Stjoer Feedback
ID: 683654
Ferzje: 2016.12.13

Dokuminten / Resources

intel It meitsjen fan heterogene ûnthâldsystemen yn FPGA SDK foar OpenCL Custom Platforms [pdfYnstruksjes
Heterogene ûnthâldsystemen oanmeitsje yn FPGA SDK foar OpenCL Custom Platforms, Heterogeneous Memory Systems oanmeitsje, FPGA SDK foar OpenCL Custom Platforms

Referinsjes

Lit in reaksje efter

Jo e-mailadres sil net publisearre wurde. Ferplichte fjilden binne markearre *