intel - logoPaghimo og Heterogenous Memory System sa FPGA SDK para sa OpenCL Custom Platforms
Mga instruksyon

Paghimo og Heterogenous Memory System sa Intel® FPGA SDK para sa OpenCL Custom Platforms

Ang pagpatuman sa heterogenous nga panumduman sa usa ka Custom Platform nagtugot alang sa dugang nga external memory interface (EMIF) bandwidth ingon man usab sa mas dako ug mas paspas nga pag-access sa memorya. Ang kombinasyon sa heterogenous memory access sa usa ka optimized
Ang OpenCL ™(1) kernel mahimong moresulta sa mahinungdanong pagpauswag sa performance para sa imong OpenCL system.
Kini nga nota sa aplikasyon naghatag giya sa paghimo og heterogeneous memory system sa usa ka Custom Platform para magamit sa Intel® FPGA SDK para sa OpenCL(2). Ang Intel nagtuo nga ikaw usa ka eksperyensiyado nga tigdesinyo sa FPGA nga nagpalambo sa mga Custom nga Platform nga adunay mga heterogeneous nga sistema sa memorya.
Sa wala pa ang paghimo sa heterogeneous memory system, pamilyar sa Intel FPGA SDK para sa OpenCL nga mga dokumento nga gipiho sa ubos.
May Kalabutan nga Impormasyon

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

1.1. Pagpamatuod sa Kalihokan sa FPGA Board ug sa EMIF Interfaces

I-verify ang matag memory interface nga independente ug dayon i-instantiate ang imong Custom Platform gamit ang global memory.

  1. Tinoa ang matag interface sa memorya gamit ang mga disenyo sa hardware nga makasulay sa katulin ug kalig-on sa matag interface.
  2. I-instantiate ang imong Custom Platform gamit ang global memory.
    1. Kay example, kon ikaw adunay tulo ka DDR interface, ang usa niini kinahanglan nga mapa isip heterogeneous memory. Sa kini nga kaso, pamatud-i ang pagpaandar sa OpenCL stack sa matag interface sa DDR nga independente.
      Ang OpenCL ug ang OpenCL logo kay mga marka sa pamatigayon sa Apple Inc. nga gigamit pinaagi sa pagtugot sa Khronos Group™ .
    2.  Ang Intel FPGA SDK para sa OpenCL gibase sa gipatik nga Khronos Specification, ug nakapasar sa Khronos Conformance Testing Process. Ang kasamtangan nga kahimtang sa pagpahiuyon makita sa www.khronos.org/conformance.

Intel Corporation. Tanang katungod gigahin. Ang Intel, ang logo sa Intel, ug uban pang mga marka sa Intel mao ang mga marka sa pamatigayon sa Intel Corporation o mga subsidiary niini. Gigarantiya sa Intel ang paghimo sa iyang mga produkto nga FPGA ug semiconductor sa kasamtangang mga espesipikasyon subay sa standard warranty sa Intel, apan adunay katungod sa paghimog mga pagbag-o sa bisan unsang produkto ug serbisyo bisan unsang orasa nga wala’y pahibalo. Ang Intel walay responsibilidad o tulubagon nga naggikan sa aplikasyon o paggamit sa bisan unsang impormasyon, produkto, o serbisyo nga gihulagway dinhi gawas sa dayag nga giuyonan sa pagsulat sa Intel. Gitambagan ang mga kostumer sa Intel nga makuha ang pinakabag-o nga bersyon sa mga detalye sa aparato sa dili pa magsalig sa bisan unsang gipatik nga kasayuran ug sa dili pa magbutang mga order alang sa mga produkto o serbisyo. *Ang ubang mga ngalan ug mga tatak mahimong maangkon nga gipanag-iya sa uban.
ISO 9001:2015 Rehistrado
Sa laing bahin, kon ikaw adunay duha ka DDR interface ug usa ka quad data rate (QDR) interface, pamatud-i ang functionality sa OpenCL stack sa duha ka DDR interface ug ang QDR interface nga independente.
Girekomenda sa Intel nga gamiton nimo ang PCI Express® - (PCIe® -) o eksklusibo nga mga disenyo sa EMIF aron sulayan ang imong mga interface sa memorya. Human nimo mapamatud-an nga ang matag interface sa panumduman magamit ug nga ang imong disenyo sa OpenCL naglihok sa usa ka subset sa mga interface sa panumduman, ipadayon
sa paghimo sa usa ka fully functional heterogeneous memory system. 
1.2. Pag-usab sa board_spec.xml File
Usba ang board_spec.xml file aron ipiho ang mga tipo sa heterogeneous memory system nga magamit sa OpenCL kernels.
Atol sa pag-compile sa kernel, ang Intel FPGA SDK para sa OpenCL Offline Compiler nag-assign sa mga argumento sa kernel sa usa ka memorya base sa argumento sa buffer location nga imong gipiho.
1. Pag-browse sa board_spec.xml file sa direktoryo sa hardware sa imong Custom Platform.
2. Ablihi ang board_spec.xml file sa usa ka text editor ug usba ang XML sumala niana.
Kay exampug, kung ang imong hardware system adunay duha ka DDR memory isip default globalmemory ug duha ka QDR banks nga imong gimodelo isip heterogeneous memory, usba ang memory section sa board_spec.xml file aron mahisama sa mosunod:
















1.3. Pag-set up sa Daghang Memory Divider sa Qsys
Sa pagkakaron, ang OpenCL Memory Bank Divider sa disenyo sa Qsys wala mosuporta sa non-power-of-2 nga gidaghanon sa mga memory bank, nga dili limitasyon sa tipikal nga mga configuration. Bisan pa, adunay mga senaryo kung diin kinahanglan ang dili gahum-sa-2 nga gidaghanon sa mga interface sa memorya. Aron ma-accommodate ang dili-power-of-2 nga gidaghanon sa memory interface, gamita ang daghang OpenCL Memory Bank Dividers aron makamugna og heterogeneous memory system nga adunay non-power-of-2 nga gidaghanon sa mga memory bank. Kinahanglan ka nga maghimo daghang mga OpenCL Memory Bank Divider kung ikaw adunay tinuod nga heterogenous nga sistema sa memorya. Hunahunaa ang usa ka sistema nga adunay usa ka DDR memory interface ug usa ka QDR memory interface. Tungod kay ang duha ka mga bangko adunay lain-laing mga topologies sa panumduman, dili nimo kini makombinar ubos sa usa ka global nga panumduman.
Figure 1. Block Diagram sa usa ka Three-Bank Heterogenous Memory System
Kining heterogeneous memory system adunay duha ka DDR memory interface ug usa ka QDR memory interface.intel Paghimo Heterogenous Memory Systems sa FPGA SDK para sa OpenCL Custom Platforms - fig 1Kung naggamit ka ug bersyon 16.0, 16.0.1, o 16.0.2 sa Intel Quartus® Prime software ug ang Altera SDK para sa OpenCL, ang OpenCL Memory Bank Divider dili husto nga nagdumala sa mga pagbuto sa memorya sa mga utlanan sa address. Aron masulbad kining nahibal-an nga isyu, pagdugang usa ka pipeline bridge nga adunay gidak-on nga pagbuto nga 1 ug ikonekta ang iyang Avalon ®Memory-Mapped (Avalon-MM) master sa slave port sa OpenCL Memory Bank Divider.
Mubo nga sulat:
Kining nahibal-an nga isyu gitakda sa Intel Quartus Prime software ug ang Intel FPGA SDK para sa OpenCL nga bersyon 16.1.
Figure 2. Block Diagram sa Three-Bank Heterogenous Memory System nga adunay Pipeline Bridge intel Paghimo Heterogenous Memory Systems sa FPGA SDK para sa OpenCL Custom Platforms - fig 21.4. Pag-usab sa Boardtest Program ug sa Host Code para sa Imong Heterogenous Memory Solution
Gamita ang boardtest.cl kernel nga kauban sa Intel FPGA SDK para sa OpenCL Custom Platform Toolkit aron sulayan ang gamit ug performance sa imong Custom Platform.
Ang boardtest nga programa usa ka OpenCL kernel nga nagtugot kanimo sa pagsulay sa host-to-device bandwidth, memory bandwidth, ug kinatibuk-ang gamit sa imong Custom Platform.

  1. Pag-browse sa /board/ custom_platform_toolkit/tests/boardtest directory.
  2. Ablihi ang boardtest.cl file sa usa ka text editor ug mag-assign ug buffer location sa matag global memory argument.
    Kay example:
    __kuwang ang kernel
    mem_stream (__global__attribute__((buffer_location("DDR"))) uint *src, __global __attribute__((buffer_location("QDR"))) uint *dst, uint arg, uint arg2)
    Dinhi, ang uint *src gi-assign sa memorya sa DDR, ug ang uint *dst gi-assign sa QDR memory. Ang board_spec.xml file nagtino sa mga kinaiya sa duha ka sistema sa panumduman.
  3. Aron magamit ang imong heterogeneous memory solution sa imong OpenCL system, usba ang imong host code pinaagi sa pagdugang sa CL_MEM_HETEROGENEOUS_INTELFPGA nga bandera sa imong clCreateBuffer nga tawag.
    Kay example:
    ddatain = clCreateBuffer(konteksto, CL_MEM_READ_WRITE | memflags
    CL_MEM_HETEROGENEOUS_INTELFPGA, gidak-on sa(wala pirmahan) * vectorSize, NULL, &status);
    Kusganon nga girekomenda sa Intel nga imong ibutang ang buffer nga lokasyon isip argumento sa kernel sa dili pa isulat ang buffer. Kung mogamit usa ka global nga panumduman, mahimo nimong isulat ang mga buffer sa wala pa o pagkahuman sa pag-assign niini sa usa ka argumento sa kernel. Sa heterogeneous memory system, ang host nagtakda sa buffer location sa dili pa isulat ang buffer. Sa laing pagkasulti, ang host motawag sa clSetKernelArgument function sa dili pa tawgon ang clEnqueueWriteBuffer function.
    Sa imong host code, gamita ang clCreateBuffer, clSetKernelArg, ug clEnqueueWriteBuffer nga mga tawag sa mosunod nga han-ay:
    ddatain = clCreateBuffer(konteksto, CL_MEM_READ_WRITE | memflags |
    CL_MEM_HETEROGENEOUS_INTELFPGA, gidak-on sa(wala pirmahan) * vectorSize, NULL, &status);
    … status = clSetKernelArg(kernel[k], 0, sizeof(cl_mem), (void*)&ddatain);
    … status = clEnqueueWriteBuffer(pila, ddatain, CL_FALSE, 0, sizeof(unsigned) * vectorSize,hdatain, 0, NULL, NULL);
    Ang ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file nagpresentar sa usa ka susama nga han-ay niini nga mga tawag sa function.
  4.  Human nimo usbon ang boardtest.cl file ug ang host code, i-compile ang host ug kernel code ug pamatud-i ang ilang gamit.
    Sa pag-compile sa imong kernel code, kinahanglan nimong i-disable ang burst-interleaving sa tanang memory system pinaagi sa paglakip sa –no-interleaving opsyon sa aoc command.

May Kalabutan nga Impormasyon
Pag-disable sa Burst-Interleaving sa Global Memory (–walay interleaving )

1.5. Pagpamatuod sa Kalihokan sa Imong Heterogenous Memory Sistema
Aron masiguro nga ang heterogeneous memory system moandar sa husto, unset ang CL_CONTEXT_COMPILER_MODE_INTELFPGA flag sa imong host code.
Sa mga sistema sa OpenCL nga adunay homogenous nga memorya, kinahanglan nimong itakda ang CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 nga bandera sa imong host code aron ma-disable ang pagbasa sa .aocx file ug ang reprogramming sa FPGA. Ang pagpahimutang sa CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 nga bandera mapuslanon kung i-instantiate ang imong board aron mapamatud-an ang pagpaandar sa imong Custom Platform nga wala magdisenyo sa floorplan ug nagpiho sa LogicLock™ nga mga rehiyon.
Uban sa heterogeneous memory system, ang runtime environment kinahanglang mobasa sa buffer locations sa matag buffer, nga gihulagway sa .aocx file, aron masusi ang pagpaandar sa mga sistema sa memorya. Bisan pa, mahimo nimong pamatud-an ang pagpaandar sa imong Custom Platform nga wala ipatuman ang katapusang mga bahin sa disenyo sa board, sama sa pagdesinyo sa floorplan ug pagtino sa mga rehiyon sa LogicLock.

  1. Tinoa nga ang CL_CONTEXT_COMPILER_MODE_INTELFPGA nga bandila wala mabutang sa imong host code.
  2. Pag-browse sa pisara/ /source/host/mmd directory sa imong Custom Platform.
  3. Ablihi ang acl_pcie_device.cpp memory-mapped device (MMD) file sa usa ka text editor.
  4.  Usba ang reprogram function sa acl_pcie_device.cpp file pinaagi sa pagdugang sa pagbalik 0; linya, sama sa gipakita sa ubos:
    int ACL_PCIE_DEVICE::reprogram(walay *data, size_t data_size)
    {
    balik 0;
    // hunahunaa ang kapakyasan
    int reprogram_failed = 1;
    // isipa nga walay rbf o hash sa fpga.bin
    int rbf_or_hash_not_provided = 1;
    // hunahunaa ang base ug import nga rebisyon nga mga hash dili magkatugma
    int hash_mismatch = 1;

    }
  5. I-compile pag-usab ang acl_pcie_device.cpp file.
  6. Tinoa nga ang CL_CONTEXT_COMPILER_MODE_INTELFPGA nga bandera nagpabilin nga wala mabutang.
    Atensyon: Human nimo idugang ang pagbalik 0; sa reprogram function ug recompile sa MMD file, ang runtime environment mobasa sa .aocx file ug i-assign ang buffer nga mga lokasyon apan dili i-reprogram ang FPGA. Kinahanglan nimo nga mano-mano ang pagpares sa FPGA nga imahe sa .aocx file. Aron balihon kini nga kinaiya, kuhaa ang pagbalik 0; gikan sa reprogram function ug recompile sa MMD file.

1.6. Kasaysayan sa Pagbag-o sa Dokumento

Petsa Bersyon Mga kausaban
Dis-17 2017.12.01 • Gi-rebrand ang CL_MEM_HETEROGENEOUS_ALTERA ngadto sa CL_MEM_HETEROGENEOUS_INTELFPGA.
Dis-16 2016.12.13 • Gi-rebrand ang CL_CONTEXT_COMPILER_MODE_ALTERA ngadto sa CL_CONTEXT_COMPILER_MODE_INTELFPGA.

intel - logoPaghimo og Heterogenous Memory System sa Intel® FPGA SDK para sa OpenCL
Custom nga mga Platform
intel Paghimo Heterogenous Memory System sa FPGA SDK para sa OpenCL Custom Platforms - icon 1 Ipadala ang Feedback
intel Paghimo Heterogenous Memory System sa FPGA SDK para sa OpenCL Custom Platforms - icon Online nga Bersyon
intel Paghimo Heterogenous Memory System sa FPGA SDK para sa OpenCL Custom Platforms - icon 1 Ipadala ang Feedback
ID: 683654
Bersyon: 2016.12.13

Mga Dokumento / Mga Kapanguhaan

intel Paghimo Heterogenous Memory System sa FPGA SDK para sa OpenCL Custom Platforms [pdf] Mga instruksiyon
Paghimo og Heterogenous Memory System sa FPGA SDK para sa OpenCL Custom Platforms, Paghimo Heterogenous Memory System, FPGA SDK para sa OpenCL Custom Platforms

Mga pakisayran

Pagbilin ug komento

Ang imong email address dili mamantala. Ang gikinahanglan nga mga natad gimarkahan *