Intel - nemboKuunda Mifumo ya Kumbukumbu Mbalimbali katika FPGA SDK kwa Mifumo Maalum ya OpenCL
Maagizo

Kuunda Mifumo ya Kumbukumbu Mbalimbali katika Intel® FPGA SDK kwa Mifumo Maalum ya OpenCL

Utekelezaji wa kumbukumbu nyingi tofauti katika Jukwaa Maalum huruhusu kiolesura cha nje cha kumbukumbu (EMIF) pamoja na ufikiaji wa kumbukumbu kubwa na wa haraka zaidi. Mchanganyiko wa ufikiaji wa kumbukumbu wa asili na ulioboreshwa
OpenCL ™(1)kernel inaweza kusababisha maboresho makubwa ya utendakazi kwa mfumo wako wa OpenCL.
Dokezo hili la programu hutoa mwongozo wa kuunda mifumo tofauti ya kumbukumbu katika Jukwaa Maalum kwa matumizi na Intel® FPGA SDK ya OpenCL(2). Intel anachukulia kuwa wewe ni mbunifu mwenye uzoefu wa FPGA ambaye anaunda Mifumo Maalum ambayo ina mifumo ya kumbukumbu isiyo ya kawaida.
Kabla ya kuunda mifumo ya kumbukumbu tofauti, jifahamishe na Intel FPGA SDK ya hati za OpenCL zilizobainishwa hapa chini.
Habari Zinazohusiana

  • Intel FPGA SDK ya Mwongozo wa Utayarishaji wa OpenCL
  • Intel FPGA SDK ya Mwongozo wa Mbinu Bora za OpenCL
  • Intel FPGA SDK ya OpenCL Arria 10 GX FPGA Development Kit Reference Porting Guide

1.1. Kuthibitisha Utendakazi wa Bodi ya FPGA na Miingiliano ya EMIF

Thibitisha kila kiolesura cha kumbukumbu kwa kujitegemea na kisha uthibitishe Mfumo Maalum kwa kutumia kumbukumbu ya kimataifa.

  1. Thibitisha kila kiolesura cha kumbukumbu kwa kutumia miundo ya maunzi inayoweza kupima kasi na uthabiti wa kila kiolesura.
  2. Anzisha Mfumo Maalumu wako kwa kutumia kumbukumbu ya kimataifa.
    1. Kwa mfanoampna, ikiwa una violesura vitatu vya DDR, moja wapo lazima ionyeshwe kama kumbukumbu tofauti. Katika hali hii, thibitisha utendakazi wa bunda la OpenCL na kila kiolesura cha DDR kivyake.
      OpenCL na nembo ya OpenCL ni chapa za biashara za Apple Inc. zinazotumiwa kwa idhini ya Khronos Group™ .
    2.  Intel FPGA SDK ya OpenCL inatokana na Uainisho wa Khronos uliochapishwa, na imepitisha Mchakato wa Kujaribu Ulinganifu wa Khronos. Hali ya sasa ya ulinganifu inaweza kupatikana katika www.khronos.org/conformance.

Shirika la Intel. Haki zote zimehifadhiwa. Intel, nembo ya Intel, na alama zingine za Intel ni chapa za biashara za Intel Corporation au kampuni zake tanzu. Intel inathibitisha utendakazi wa FPGA yake na bidhaa za semiconductor kwa vipimo vya sasa kwa mujibu wa udhamini wa kawaida wa Intel, lakini inahifadhi haki ya kufanya mabadiliko kwa bidhaa na huduma zozote wakati wowote bila taarifa. Intel haichukui jukumu au dhima yoyote inayotokana na maombi au matumizi ya taarifa yoyote, bidhaa, au huduma iliyofafanuliwa hapa isipokuwa kama ilivyokubaliwa kwa maandishi na Intel. Wateja wa Intel wanashauriwa kupata toleo jipya zaidi la vipimo vya kifaa kabla ya kutegemea taarifa yoyote iliyochapishwa na kabla ya kuagiza bidhaa au huduma. *Majina na chapa zingine zinaweza kudaiwa kuwa mali ya wengine.
ISO 9001:2015 Imesajiliwa
Vinginevyo, ikiwa una violesura viwili vya DDR na kiolesura kimoja cha kiwango cha data cha robo nne (QDR), thibitisha utendakazi wa mrundikano wa OpenCL wa violesura viwili vya DDRna kiolesura cha QDR bila kujitegemea.
Intel inapendekeza utumie PCI Express® – (PCIe® -) au miundo ya kipekee ya EMIF ili kujaribu violesura vya kumbukumbu yako. Baada ya kuthibitisha kuwa kila kiolesura cha kumbukumbu kinafanya kazi na kwamba muundo wako wa OpenCL hufanya kazi na sehemu ndogo ya violesura vya kumbukumbu, endelea.
kuunda mfumo kamili wa kumbukumbu tofauti. 
1.2. Inabadilisha board_spec.xml File
Rekebisha bodi_spec.xml file ili kubainisha aina za mifumo ya kumbukumbu tofauti ambayo inapatikana kwa kokwa za OpenCL.
Wakati wa utungaji wa kernel, Intel FPGA SDK ya OpenCL Offline Compiler inapeana hoja za kernel kwenye kumbukumbu kulingana na hoja ya eneo ya bafa ambayo unabainisha.
1. Vinjari hadi board_spec.xml file katika saraka ya maunzi ya Jukwaa lako Maalum.
2. Fungua bodi_spec.xml file katika hariri ya maandishi na urekebishe XML ipasavyo.
Kwa mfanoampna, ikiwa mfumo wako wa maunzi una kumbukumbu mbili za DDR kama kumbukumbu chaguomsingi ya kimataifa na benki mbili za QDR unazozifanya kama kumbukumbu tofauti, rekebisha sehemu za kumbukumbu za board_spec.xml file kufanana na zifuatazo:
















1.3. Kuweka Vigawanyiko vingi vya Kumbukumbu katika Qsys
Kwa sasa, Kigawanyaji cha Benki ya Kumbukumbu ya OpenCL katika muundo wa Qsys hakitumii benki za kumbukumbu zisizo na nguvu-ya-2, ambayo si kizuizi kwa usanidi wa kawaida. Walakini, kuna hali ambapo idadi isiyo ya nguvu-ya-2 ya violesura vya kumbukumbu ni muhimu. Ili kushughulikia idadi isiyo ya nguvu-ya-2 ya violesura vya kumbukumbu, tumia Vigawanyiko vingi vya OpenCL Memory Bank ili kuunda mifumo tofauti ya kumbukumbu yenye idadi isiyo ya nguvu-ya-2 ya benki za kumbukumbu. Ni lazima uunde Vigawanyiko vingi vya OpenCL Memory Bank wakati una mfumo wa kumbukumbu usio tofauti. Fikiria mfumo ulio na kiolesura kimoja cha kumbukumbu cha DDR na kiolesura kimoja cha kumbukumbu cha QDR. Kwa sababu benki hizi mbili zina topolojia tofauti za kumbukumbu, huwezi kuzichanganya chini ya kumbukumbu moja ya kimataifa.
Kielelezo 1. Mchoro wa Kuzuia wa Mfumo wa Kumbukumbu wa Benki Tatu
Mfumo huu wa kumbukumbu tofauti una miingiliano miwili ya kumbukumbu ya DDR na kiolesura kimoja cha kumbukumbu cha QDR.intel Kuunda Mifumo ya Kumbukumbu ya Tofauti katika FPGA SDK kwa Majukwaa Maalum ya OpenCL - tini 1Iwapo unatumia toleo la 16.0, 16.0.1, au 16.0.2 la programu ya Intel Quartus® Prime na Altera SDK ya OpenCL, Kigawanyiko cha Benki ya Kumbukumbu ya OpenCL hushughulikia kwa njia kimakosa kukatika kwa kumbukumbu kwenye mipaka ya anwani. Ili kusuluhisha suala hili linalojulikana, ongeza daraja la bomba lenye ukubwa wa 1 na uunganishe bwana wake wa Avalon ®Memory-Mapped (Avalon-MM) kwenye bandari ya utumwa ya OpenCL Memory Bank Divider.
Kumbuka:
Suala hili linalojulikana limerekebishwa katika programu ya Intel Quartus Prime na Intel FPGA SDK ya OpenCL toleo la 16.1.
Mchoro wa 2. Mchoro wa Kizuizi cha Mfumo wa Kumbukumbu wa Benki Tatu na Daraja la Bomba. intel Kuunda Mifumo ya Kumbukumbu ya Tofauti katika FPGA SDK kwa Majukwaa Maalum ya OpenCL - tini 21.4. Kurekebisha Mpango wa Boardtest na Msimbo wa Mwenyeji kwa Suluhisho Lako la Kumbukumbu la Tofauti
Tumia bodi ya boardtest.cl kernel inayokuja na Intel FPGA SDK ya Zana ya Mfumo Maalum ya OpenCL ili kupima utendakazi na utendakazi wa Mfumo Maalum.
Programu ya boardtest ni kiini cha OpenCL kinachokuruhusu kujaribu kipimo data cha mwenyeji-kwa-kifaa, kipimo data cha kumbukumbu, na utendakazi wa jumla wa Mfumo Maalumu wako.

  1. Vinjari kwa /board/ custom_platform_toolkit/tests/boardtest directory.
  2. Fungua boardtest.cl file katika kihariri cha maandishi na upe eneo la bafa kwa kila hoja ya kumbukumbu ya kimataifa.
    Kwa mfanoample:
    __kernel utupu
    mem_stream (__global__attribute__((buffer_location(“DDR”))) uint *src, __global __attribute__((buffer_location(“QDR”)))) uint *dst, uint arg, uint arg2)
    Hapa, uint *src imepewa kumbukumbu ya DDR, na uint *dst imepewa kumbukumbu ya QDR. Ubao_spec.xml file inabainisha sifa za mifumo yote miwili ya kumbukumbu.
  3. Ili kuboresha suluhisho lako la kumbukumbu tofauti katika mfumo wako wa OpenCL, rekebisha msimbo wako wa mwenyeji kwa kuongeza alama ya CL_MEM_HETEROGENEOUS_INTELFPGA kwenye simu yako ya clCreateBuffer.
    Kwa mfanoample:
    ddatain = clCreateBuffer(muktadha, CL_MEM_READ_WRITE | memflags
    CL_MEM_HETEROGENEOUS_INTELFPGA, saizi(haijatiwa saini) * Ukubwa wa vekta, NULL, &hadhi);
    Intel inapendekeza sana uweke eneo la bafa kama hoja ya kernel kabla ya kuandika bafa. Unapotumia kumbukumbu moja ya kimataifa, unaweza kuandika bafa kabla au baada ya kuzikabidhi kwa hoja ya kernel. Katika mifumo tofauti ya kumbukumbu, seva pangishi huweka eneo la bafa kabla ya kuandika bafa. Kwa maneno mengine, seva pangishi itaita kitendakazi cha clSetKernelArgument kabla ya kupiga kitendakazi cha clEnqueueWriteBuffer.
    Katika msimbo wako wa mwenyeji, omba simu za clCreateBuffer, clSetKernelArg, na clEnqueueWriteBuffer kwa mpangilio ufuatao:
    ddatain = clCreateBuffer(muktadha, CL_MEM_READ_WRITE | memflags |
    CL_MEM_HETEROGENEOUS_INTELFPGA, saizi(haijatiwa saini) * Ukubwa wa vekta, NULL, &hadhi);
    … status = clSetKernelArg(kernel[k], 0, sizeof(cl_mem), (batili*)&ddatain);
    … hali = clEnqueueWriteBuffer(foleni, ddatain, CL_FALSE, 0, sizeof(haijatiwa saini) * vectorSize,hdatain, 0, NULL, NULL);
    ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file inatoa mpangilio sawa wa simu hizi za kukokotoa.
  4.  Baada ya kurekebisha boardtest.cl file na msimbo wa mwenyeji, kusanya msimbo wa mwenyeji na kernel na uthibitishe utendakazi wao.
    Wakati wa kuunda msimbo wako wa kernel, lazima uzima uingiliaji wa kumbukumbu wa mifumo yote ya kumbukumbu kwa kujumuisha -no-interleaving. chaguo katika amri ya aoc.

Habari Zinazohusiana
Inalemaza Kuingiliana kwa Kupasuka kwa Kumbukumbu ya Ulimwengu (-hakuna-kuingiliana )

1.5. Kuthibitisha Utendakazi wa Kumbukumbu Yako Tofauti Mfumo
Ili kuhakikisha kuwa mfumo wa kumbukumbu usio tofauti unafanya kazi ipasavyo, ondoa alamisho ya CL_CONTEXT_COMPILER_MODE_INTELFPGA katika msimbo wako wa seva pangishi.
Katika mifumo ya OpenCL yenye kumbukumbu sawa, inabidi uchague kuweka CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 bendera katika msimbo wako wa mwenyeji ili kuzima usomaji wa .aocx. file na upangaji upya wa FPGA. Kuweka alama ya CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 ni muhimu unapoanzisha ubao wako ili kuthibitisha utendakazi wa Mfumo Maalum bila kubuni mpangilio wa sakafu na kubainisha maeneo ya LogicLock™.
Kwa mifumo tofauti ya kumbukumbu, mazingira ya wakati wa utekelezaji lazima yasome maeneo ya bafa ya kila bafa, yaliyofafanuliwa katika .aocx file, ili kuthibitisha utendakazi wa mifumo ya kumbukumbu. Hata hivyo, unaweza kutaka kuthibitisha utendakazi wa Mfumo Maalum bila kutekeleza vipengele vya mwisho vya muundo wa bodi, kama vile kubuni mpangilio wa sakafu na kubainisha maeneo ya LogicLock.

  1. Thibitisha kuwa alama ya CL_CONTEXT_COMPILER_MODE_INTELFPGA haijawekwa katika msimbo wa mwenyeji wako.
  2. Vinjari kwenye ubao/ /source/host/mmd saraka ya Jukwaa lako Maalum.
  3. Fungua kifaa cha kumbukumbu cha acl_pcie_device.cpp (MMD) file katika mhariri wa maandishi.
  4.  Rekebisha kitendakazi cha kupanga upya katika acl_pcie_device.cpp file kwa kuongeza kurudi 0; mstari, kama inavyoonyeshwa hapa chini:
    int ACL_PCIE_DEVICE::panga upya(batili *data, size_t data_size)
    {
    kurudi 0;
    // kudhani kushindwa
    int reprogram_failed = 1;
    // usichukue rbf au hashi katika fpga.bin
    int rbf_or_hash_not_provided = 1;
    // chukulia kuwa msingi na heshi za marekebisho ya uingizaji hazilingani
    int hash_mismatch = 1;

    }
  5. Rudisha acl_pcie_device.cpp file.
  6. Thibitisha kuwa alama ya CL_CONTEXT_COMPILER_MODE_INTELFPGA bado haijawekwa.
    Tahadhari: Baada ya kuongeza kurudi 0; kwa kazi ya kupanga upya na kukusanya tena MMD file, mazingira ya wakati wa utekelezaji yatasoma .aocx file na kugawa maeneo ya bafa lakini haitapanga upya FPGA. Lazima ulinganishe mwenyewe picha ya FPGA na .aocx file. Ili kubadilisha tabia hii, ondoa kurudi 0; kutoka kwa kazi ya kupanga upya na kukusanya tena MMD file.

1.6. Historia ya Marekebisho ya Hati

Tarehe Toleo Mabadiliko
Des-17 2017.12.01 • Ilibadilisha jina la CL_MEM_HETEROGENEOUS_ALTERA kuwa CL_MEM_HETEROGENEOUS_INTELFPGA.
Des-16 2016.12.13 • Ilibadilisha jina la CL_CONTEXT_COMPILER_MODE_ALTERA kuwa CL_CONTEXT_COMPILER_MODE_INTELFPGA.

Intel - nemboKuunda Mifumo Tofauti ya Kumbukumbu katika Intel® FPGA SDK ya OpenCL
Majukwaa Maalum
intel Kuunda Mifumo ya Kumbukumbu ya Tofauti katika FPGA SDK kwa Majukwaa Maalum ya OpenCL - ikoni 1 Tuma Maoni
intel Kuunda Mifumo ya Kumbukumbu ya Tofauti katika FPGA SDK kwa Majukwaa Maalum ya OpenCL - ikoni Toleo la mtandaoni
intel Kuunda Mifumo ya Kumbukumbu ya Tofauti katika FPGA SDK kwa Majukwaa Maalum ya OpenCL - ikoni 1 Tuma Maoni
Kitambulisho: 683654
Toleo: 2016.12.13

Nyaraka / Rasilimali

intel Kuunda Mifumo ya Kumbukumbu ya Tofauti katika FPGA SDK kwa Majukwaa Maalum ya OpenCL [pdf] Maagizo
Kuunda Mifumo ya Kumbukumbu Mbalimbali katika FPGA SDK kwa Majukwaa Maalum ya OpenCL, Kuunda Mifumo ya Kumbukumbu Tofauti, FPGA SDK kwa Majukwaa Maalum ya OpenCL

Marejeleo

Acha maoni

Barua pepe yako haitachapishwa. Sehemu zinazohitajika zimetiwa alama *