intel - лагатыпСтварэнне гетэрагенных сістэм памяці ў FPGA SDK для карыстальніцкіх платформаў OpenCL
Інструкцыя

Стварэнне гетэрагенных сістэм памяці ў Intel® FPGA SDK для карыстальніцкіх платформаў OpenCL

Рэалізацыя гетэрагеннай памяці ў карыстальніцкай платформе дазваляе павялічыць прапускную здольнасць інтэрфейсу знешняй памяці (EMIF), а таксама большы і больш хуткі доступ да памяці. Спалучэнне гетэрагеннага доступу да памяці з аптымізаваным
Ядро OpenCL™(1) можа прывесці да значнага павышэння прадукцыйнасці вашай сістэмы OpenCL.
У гэтай нататцы па прылажэнні даюцца інструкцыі па стварэнні гетэрагенных сістэм памяці на спецыяльнай платформе для выкарыстання з Intel® FPGA SDK для OpenCL(2). Intel мяркуе, што вы дасведчаны дызайнер FPGA, які распрацоўвае карыстальніцкія платформы, якія змяшчаюць гетэрагенныя сістэмы памяці.
Перш чым ствараць гетэрагенныя сістэмы памяці, азнаёмцеся з дакументамі Intel FPGA SDK для OpenCL, указанымі ніжэй.
Звязаная інфармацыя

  • Кіраўніцтва па праграмаванні Intel FPGA SDK для OpenCL
  • Кіраўніцтва па найлепшай практыцы Intel FPGA SDK для OpenCL
  • Intel FPGA SDK для OpenCL Arria 10 GX FPGA Development Kit Reference Platform Porting Guide

1.1. Праверка функцыянальнасці платы FPGA і інтэрфейсаў EMIF

Праверце кожны інтэрфейс памяці незалежна, а затым стварыце асобнік вашай карыстальніцкай платформы з выкарыстаннем глабальнай памяці.

  1. Праверце кожны інтэрфейс памяці з дапамогай апаратных канструкцый, якія могуць праверыць хуткасць і стабільнасць кожнага інтэрфейсу.
  2. Стварыце асобнік вашай карыстацкай платформы з выкарыстаннем глабальнай памяці.
    1. Напрыкладample, калі ў вас ёсць тры інтэрфейсы DDR, адзін з іх павінен быць адлюстраваны як гетэрагенная памяць. У гэтым выпадку праверце функцыянальнасць стэка OpenCL з кожным інтэрфейсам DDR незалежна.
      OpenCL і лагатып OpenCL з'яўляюцца гандлёвымі маркамі Apple Inc., якія выкарыстоўваюцца з дазволу Khronos Group™.
    2.  Intel FPGA SDK для OpenCL заснаваны на апублікаванай спецыфікацыі Khronos і прайшоў працэс тэсціравання на адпаведнасць Khronos. Бягучы статус адпаведнасці можна знайсці на www.khronos.org/conformance.

Карпарацыя Intel. Усе правы ахоўваюцца. Intel, лагатып Intel і іншыя знакі Intel з'яўляюцца гандлёвымі маркамі карпарацыі Intel або яе даччыных кампаній. Intel гарантуе прадукцыйнасць сваёй FPGA і паўправадніковай прадукцыі ў адпаведнасці з бягучымі спецыфікацыямі ў адпаведнасці са стандартнай гарантыяй Intel, але пакідае за сабой права ўносіць змены ў любыя прадукты і паслугі ў любы час без папярэдняга паведамлення. Intel не нясе ніякай адказнасці або абавязацельстваў, якія вынікаюць з прымянення або выкарыстання любой інфармацыі, прадукту або паслугі, апісаных тут, за выключэннем выпадкаў, прама ўзгодненых Intel у пісьмовай форме. Кліентам Intel рэкамендуецца атрымаць апошнюю версію спецыфікацый прылады, перш чым спадзявацца на любую апублікаваную інфармацыю і перад размяшчэннем заказаў на прадукты ці паслугі. *Іншыя назвы і брэнды могуць быць заяўлены як уласнасць іншых.
ISO 9001:2015 зарэгістраваны
У якасці альтэрнатывы, калі ў вас ёсць два інтэрфейсы DDR і адзін інтэрфейс з чатырохразовай хуткасцю перадачы дадзеных (QDR), праверце функцыянальнасць стэка OpenCL двух інтэрфейсаў DDR і інтэрфейсу QDR незалежна.
Intel рэкамендуе вам выкарыстоўваць PCI Express® – (PCIe® -) або эксклюзіўныя канструкцыі EMIF для тэставання вашых інтэрфейсаў памяці. Пасля таго, як вы пераканаецеся, што кожны інтэрфейс памяці функцыянальны і што ваш дызайн OpenCL працуе з падмноствам інтэрфейсаў памяці, працягвайце
стварыць цалкам функцыянальную гетэрагенную сістэму памяці. 
1.2. Змяненне board_spec.xml File
Змяніце board_spec.xml file каб вызначыць тыпы гетэрагенных сістэм памяці, даступных для ядраў OpenCL.
Падчас кампіляцыі ядра Intel FPGA SDK для аўтаномнага кампілятара OpenCL прызначае аргументы ядра памяці на аснове аргумента размяшчэння буфера, які вы ўказваеце.
1. Перайдзіце да board_spec.xml file у каталогу абсталявання вашай карыстальніцкай платформы.
2. Адкрыйце board_spec.xml file у тэкставым рэдактары і адпаведным чынам змяніце XML.
Напрыкладample, калі ваша апаратная сістэма мае дзве памяці DDR у якасці глабальнай памяці па змаўчанні і два банкі QDR, якія вы мадэлюеце як гетэрагенную памяць, змяніце раздзелы памяці ў board_spec.xml file нагадваць наступнае:
















1.3. Настройка некалькіх падзельнікаў памяці ў Qsys
У цяперашні час OpenCL Memory Bank Divider у канструкцыі Qsys не падтрымлівае колькасць банкаў памяці без ступені 2, што не з'яўляецца абмежаваннем для тыповых канфігурацый. Тым не менш, ёсць сцэнарыі, калі неабходная колькасць інтэрфейсаў памяці не ў ступені 2. Каб прыстасаваць колькасць інтэрфейсаў памяці без ступені 2, выкарыстоўвайце некалькі раздзяляльнікаў банка памяці OpenCL для стварэння гетэрагенных сістэм памяці з колькасцю банкаў памяці без ступені 2. Вы павінны стварыць некалькі дзельнікаў банка памяці OpenCL, калі ў вас ёсць сапраўдная гетэрагенная сістэма памяці. Разгледзім сістэму з адным інтэрфейсам памяці DDR і адным інтэрфейсам памяці QDR. Паколькі два банкі маюць розныя тапалогіі памяці, вы не можаце аб'яднаць іх у адну глабальную памяць.
Малюнак 1. Блок-схема трохбанкавай гетэрагеннай сістэмы памяці
Гэтая гетэрагенная сістэма памяці змяшчае два інтэрфейсы памяці DDR і адзін інтэрфейс памяці QDR.Intel Стварэнне гетэрагенных сістэм памяці ў FPGA SDK для карыстальніцкіх платформаў OpenCL - мал. 1Калі вы выкарыстоўваеце версію 16.0, 16.0.1 або 16.0.2 праграмнага забеспячэння Intel Quartus® Prime і Altera SDK для OpenCL, OpenCL Memory Bank Divider няправільна апрацоўвае парывы ​​памяці праз межы адрасоў. Каб абыйсці гэтую вядомую праблему, дадайце канвеерны мост з памерам пакета 1 і падключыце яго галоўны Avalon ®Memory-Mapped (Avalon-MM) да падпарадкаванага порта OpenCL Memory Bank Divider.
Заўвага:
Гэта вядомая праблема выпраўлена ў праграмным забеспячэнні Intel Quartus Prime і Intel FPGA SDK для OpenCL версіі 16.1.
Малюнак 2. Блок-схема трохбанкавай гетэрагеннай сістэмы памяці з канвеерным мостам Intel Стварэнне гетэрагенных сістэм памяці ў FPGA SDK для карыстальніцкіх платформаў OpenCL - мал. 21.4. Змяненне праграмы Boardtest і кода хоста для вашага рашэння гетэрагеннай памяці
Выкарыстоўвайце ядро ​​boardtest.cl, якое пастаўляецца з Intel FPGA SDK for OpenCL Custom Platform Toolkit, каб праверыць функцыянальнасць і прадукцыйнасць вашай карыстацкай платформы.
Праграма boardtest - гэта ядро ​​OpenCL, якое дазваляе вам праверыць прапускную здольнасць хост-прылада, прапускную здольнасць памяці і агульную функцыянальнасць вашай карыстацкай платформы.

  1. Перайдзіце да каталог /board/ custom_platform_toolkit/tests/boardtest.
  2. Адкрыйце boardtest.cl file у тэкставым рэдактары і прызначыць размяшчэнне буфера кожнаму аргументу глабальнай памяці.
    Напрыкладampль:
    __ядро несапраўднае
    mem_stream (__global__attribute__((buffer_location(“DDR”))) uint *src, __global __attribute__((buffer_location(“QDR”))) uint *dst, uint arg, uint arg2)
    Тут uint *src прызначаецца памяці DDR, а uint *dst — памяці QDR. board_spec.xml file вызначае характарыстыкі абедзвюх сістэм памяці.
  3. Каб выкарыстоўваць рашэнне гетэрагеннай памяці ў вашай сістэме OpenCL, змяніце код хоста, дадаўшы сцяг CL_MEM_HETEROGENEOUS_INTELFPGA да выкліку clCreateBuffer.
    Напрыкладampль:
    ddatain = clCreateBuffer(кантэкст, CL_MEM_READ_WRITE | сцягі памяці
    CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(без знака) * vectorSize, NULL, &status);
    Intel настойліва рэкамендуе вам усталяваць размяшчэнне буфера ў якасці аргумента ядра перад запісам буфера. Пры выкарыстанні адной глабальнай памяці вы можаце запісваць буферы да або пасля прызначэння іх аргументу ядра. У гетэрагенных сістэмах памяці хост усталёўвае размяшчэнне буфера перад запісам у буфер. Іншымі словамі, хост выкліча функцыю clSetKernelArgument перад выклікам функцыі clEnqueueWriteBuffer.
    У вашым кодзе хоста выклічце выклікі clCreateBuffer, clSetKernelArg і clEnqueueWriteBuffer у наступным парадку:
    ddatain = clCreateBuffer(кантэкст, CL_MEM_READ_WRITE | memflags |
    CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(без знака) * vectorSize, NULL, &status);
    … status = clSetKernelArg(kernel[k], 0, sizeof(cl_mem), (void*)&ddatain);
    … status = clEnqueueWriteBuffer(чарга, ddatain, CL_FALSE, 0, sizeof(без знака) * vectorSize,hdatain, 0, NULL, NULL);
    ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file прадстаўляе аналагічны парадак гэтых выклікаў функцый.
  4.  Пасля змены файла boardtest.cl file і код хоста, скампіляваць код хоста і ядра і праверыць іх функцыянальнасць.
    Пры кампіляцыі кода ядра вы павінны адключыць пакетнае перамежаванне ўсіх сістэм памяці, уключыўшы -no-interleaving опцыя ў камандзе aoc.

Звязаная інфармацыя
Адключэнне пакетнага перамежавання глабальнай памяці (–без перамежавання )

1.5. Праверка функцыянальнасці вашай гетэрагеннай памяці сістэма
Каб пераканацца, што гетэрагенная сістэма памяці функцыянуе належным чынам, адмяніце сцяг CL_CONTEXT_COMPILER_MODE_INTELFPGA у кодзе хоста.
У сістэмах OpenCL з гамагеннай памяццю вы павінны ўсталяваць сцяг CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 у кодзе хоста, каб адключыць чытанне .aocx file і перапраграмаванне FPGA. Устаноўка сцяга CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 карысная пры стварэнні асобніка платы для праверкі функцыянальнасці вашай карыстальніцкай платформы без распрацоўкі плана паверха і ўказання рэгіёнаў LogicLock™.
У гетэрагенных сістэмах памяці асяроддзе выканання павінна счытваць размяшчэнне кожнага буфера, апісанае ў .aocx file, каб праверыць функцыянальнасць сістэм памяці. Тым не менш, вы можаце праверыць функцыянальнасць вашай карыстальніцкай платформы без укаранення канчатковых функцый дызайну платы, такіх як распрацоўка плана паверха і ўказанне рэгіёнаў LogicLock.

  1. Пераканайцеся, што сцяг CL_CONTEXT_COMPILER_MODE_INTELFPGA не ўстаноўлены ў вашым кодзе хоста.
  2. Перайсці да дошкі/ /source/host/mmd каталог вашай карыстацкай платформы.
  3. Адкрыйце прыладу з адлюстраваннем памяці acl_pcie_device.cpp (MMD) file у тэкставым рэдактары.
  4.  Змяніце функцыю перапраграмавання ў acl_pcie_device.cpp file шляхам дадання вяртання 0; радок, як паказана ніжэй:
    int ACL_PCIE_DEVICE::reprogram(void *data, size_t data_size)
    {
    вяртанне 0;
    // меркаваць няўдачу
    int reprogram_failed = 1;
    // мяркуецца, што ў fpga.bin няма rbf або хэша
    int rbf_or_hash_not_provided = 1;
    // выкажам здагадку, што базавы і імпартны хэшы версіі не супадаюць
    int hash_mismatch = 1;

    }
  5. Перакампілюйце acl_pcie_device.cpp file.
  6. Пераканайцеся, што сцяг CL_CONTEXT_COMPILER_MODE_INTELFPGA застаецца неўсталяваным.
    Увага: Пасля дадання вяртання 0; перапраграмаваць функцыю і перакампіляваць MMD file, асяроддзе выканання будзе чытаць .aocx file і прызначыць размяшчэнне буфера, але не будзе перапраграмаваць FPGA. Вы павінны ўручную супаставіць выяву FPGA з .aocx file. Каб змяніць гэтыя паводзіны, выдаліце ​​return 0; з функцыі перапраграмавання і перакампіляваць MMD file.

1.6. Гісторыя пераглядаў дакумента

Дата Версія Змены
17 снежня 2017.12.01 • Рэбрэндынг CL_MEM_HETEROGENEOUS_ALTERA перайменаваны ў CL_MEM_HETEROGENEOUS_INTELFPGA.
16 снежня 2016.12.13 • Рэбрэндынг CL_CONTEXT_COMPILER_MODE_ALTERA перайменаваны ў CL_CONTEXT_COMPILER_MODE_INTELFPGA.

intel - лагатыпСтварэнне гетэрагенных сістэм памяці ў Intel® FPGA SDK для OpenCL
Карыстальніцкія платформы
intel Стварэнне гетэрагенных сістэм памяці ў FPGA SDK для карыстацкіх платформ OpenCL - значок 1 Адправіць водгук
intel Стварэнне гетэрагенных сістэм памяці ў FPGA SDK для карыстацкіх платформ OpenCL - значок электронная версія
intel Стварэнне гетэрагенных сістэм памяці ў FPGA SDK для карыстацкіх платформ OpenCL - значок 1 Адправіць водгук
ID: 683654
Версія: 2016.12.13

Дакументы / Рэсурсы

Intel Стварэнне гетэрагенных сістэм памяці ў FPGA SDK для карыстальніцкіх платформаў OpenCL [pdfІнструкцыі
Стварэнне гетэрагенных сістэм памяці ў FPGA SDK для карыстацкіх платформ OpenCL, стварэнне гетэрагенных сістэм памяці, FPGA SDK для карыстацкіх платформ OpenCL

Спасылкі

Пакінуць каментар

Ваш электронны адрас не будзе апублікаваны. Абавязковыя для запаўнення палі пазначаны *