intel - логотипіOpenCL теңшелетін платформалары үшін FPGA SDK жүйесінде гетерогенді жад жүйелерін жасау
Нұсқаулар

OpenCL пайдаланушы платформаларына арналған Intel® FPGA SDK жүйесінде гетерогенді жад жүйелерін жасау

Пайдаланушы платформасында гетерогенді жадты енгізу сыртқы жад интерфейсінің (EMIF) өткізу жолағын кеңейтуге, сондай-ақ жадқа үлкенірек және жылдамырақ кіруге мүмкіндік береді. Оңтайландырылған жадқа гетерогенді қол жеткізу комбинациясы
OpenCL ™(1) ядросы OpenCL жүйеңіздің өнімділігін айтарлықтай жақсартуға әкелуі мүмкін.
Бұл қолданба ескертпесі OpenCL(2) үшін Intel® FPGA SDK-мен бірге пайдалану үшін теңшелетін платформада гетерогенді жад жүйелерін жасау бойынша нұсқаулықты береді. Intel сізді гетерогенді жад жүйелерін қамтитын пайдаланушы платформаларын жасаумен айналысатын тәжірибелі FPGA дизайнерісіз деп есептейді.
Гетерогенді жад жүйелерін жасамас бұрын, төменде көрсетілген OpenCL құжаттарына арналған Intel FPGA SDK-мен танысыңыз.
Қатысты ақпарат

  • OpenCL бағдарламалау нұсқаулығына арналған Intel FPGA SDK
  • OpenCL ең жақсы тәжірибе нұсқаулығына арналған Intel FPGA SDK
  • OpenCL Arria 10 GX FPGA әзірлеу жинағы үшін Intel FPGA SDK Анықтамалық платформаны тасымалдау нұсқаулығы

1.1. FPGA тақтасының және EMIF интерфейстерінің функционалдығын тексеру

Әрбір жад интерфейсін дербес растаңыз, содан кейін жаһандық жадты пайдаланып пайдаланушы платформасын жасаңыз.

  1. Әрбір интерфейстің жылдамдығы мен тұрақтылығын тексере алатын аппараттық жасақтаманы пайдаланып әрбір жад интерфейсін тексеріңіз.
  2. Жаһандық жадты пайдаланып пайдаланушы платформасын жасаңыз.
    1. МысалыampЕгер сізде үш DDR интерфейсі болса, олардың біреуі гетерогенді жад ретінде көрсетілуі керек. Бұл жағдайда әрбір DDR интерфейсімен OpenCL стекінің функционалдығын дербес тексеріңіз.
      OpenCL және OpenCL логотипі Khronos Group™ рұқсатымен пайдаланылатын Apple Inc. компаниясының сауда белгілері болып табылады.
    2.  OpenCL үшін Intel FPGA SDK жарияланған Khronos спецификациясына негізделген және Khronos сәйкестігін тексеру процесінен өтті. Ағымдағы сәйкестік күйін мына жерден табуға болады www.khronos.org/conformance.

Intel корпорациясы. Барлық құқықтар сақталған. Intel, Intel логотипі және басқа Intel белгілері Intel корпорациясының немесе оның еншілес компанияларының сауда белгілері болып табылады. Intel өзінің FPGA және жартылай өткізгіш өнімдерінің Intel стандартты кепілдігіне сәйкес ағымдағы техникалық сипаттамаларға сәйкес орындалуына кепілдік береді, бірақ кез келген өнімдер мен қызметтерге кез келген уақытта ескертусіз өзгертулер енгізу құқығын өзіне қалдырады. Intel жазбаша түрде тікелей келіскен жағдайларды қоспағанда, Intel компаниясы осы құжатта сипатталған кез келген ақпаратты, өнімді немесе қызметті қолданудан немесе пайдаланудан туындайтын жауапкершілікті немесе жауапкершілікті өз мойнына алмайды. Intel тұтынушыларына жарияланған ақпаратқа сенбес бұрын және өнімдерге немесе қызметтерге тапсырыс бермес бұрын құрылғы сипаттамаларының соңғы нұсқасын алу ұсынылады. *Басқа атаулар мен брендтер басқалардың меншігі ретінде талап етілуі мүмкін.
ISO 9001:2015 тіркелген
Сонымен қатар, екі DDR интерфейсі және бір төрттік деректер жылдамдығы (QDR) интерфейсі болса, екі DDR интерфейсінің және QDR интерфейсінің OpenCL стекінің функционалдығын тәуелсіз түрде тексеріңіз.
Intel жад интерфейстерін тексеру үшін PCI Express® – (PCIe® -) немесе EMIF эксклюзивті конструкцияларын пайдалануды ұсынады. Әрбір жад интерфейсінің жұмыс істейтінін және OpenCL дизайны жад интерфейстерінің ішкі жиынымен жұмыс істейтінін тексергеннен кейін жалғастырыңыз.
толық жұмыс істейтін гетерогенді жады жүйесін құру. 
1.2. board_spec.xml файлын өзгерту File
board_spec.xml файлын өзгертіңіз file OpenCL ядролары үшін қолжетімді гетерогенді жад жүйелерінің түрлерін көрсету үшін.
Ядроны құрастыру кезінде OpenCL дербес компиляторына арналған Intel FPGA SDK сіз көрсеткен буфер орны аргументіне негізделген жадқа ядро ​​аргументтерін тағайындайды.
1. board_spec.xml файлына өтіңіз file Пайдаланушы платформасының аппараттық каталогында.
2. board_spec.xml файлын ашыңыз file мәтіндік редакторда және сәйкесінше XML өзгертіңіз.
МысалыampЕгер сіздің аппараттық жүйеңізде әдепкі жаһандық жад ретінде екі DDR жады және гетерогенді жад ретінде модельдейтін екі QDR банкі болса, board_spec.xml жад бөлімдерін өзгертіңіз. file келесіге ұқсайды:
















1.3. Qsys жүйесінде бірнеше жад бөлгіштерін орнату
Қазіргі уақытта Qsys дизайнындағы OpenCL жад банкінің бөлгіші жад банктерінің қуаты 2-ден аспайтын санын қолдамайды, бұл әдеттегі конфигурациялар үшін шектеу емес. Дегенмен, жад интерфейстерінің саны 2-ден қуатсыз қажет болатын сценарийлер бар. Жад интерфейстерінің 2-ден қуатсыз санын орналастыру үшін, жад банктерінің қуаты 2-ге жетпейтін саны бар гетерогенді жад жүйелерін жасау үшін бірнеше OpenCL жад банкінің бөлгіштерін пайдаланыңыз. Нағыз гетерогенді жад жүйесі болған кезде бірнеше OpenCL жад банкінің бөлгіштерін жасау керек. Бір DDR жады интерфейсі және бір QDR жады интерфейсі бар жүйені қарастырайық. Екі банкте әртүрлі жад топологиялары болғандықтан, оларды бір ғаламдық жад астында біріктіру мүмкін емес.
Сурет 1. Үш банктік гетерогенді жады жүйесінің құрылымдық схемасы
Бұл гетерогенді жад жүйесінде екі DDR жады интерфейсі және бір QDR жады интерфейсі бар.intel OpenCL теңшелетін платформалары үшін FPGA SDK ішінде гетерогенді жад жүйелерін жасау - 1-суретIntel Quartus® Prime бағдарламалық құралының 16.0, 16.0.1 немесе 16.0.2 нұсқасын және OpenCL үшін Altera SDK нұсқасын пайдаланып жатсаңыз, OpenCL жад банкінің бөлгіші мекенжай шекаралары арқылы жад жарылыстарын дұрыс өңдемейді. Осы белгілі мәселені шешу үшін, жады өлшемі 1 болатын құбыр көпірін қосыңыз және оның Avalon ®Memory-Mapped (Avalon-MM) шеберін OpenCL жад банкі бөлгішінің бағынышты портына қосыңыз.
Ескерту:
Бұл белгілі мәселе Intel Quartus Prime бағдарламалық құралында және OpenCL 16.1 нұсқасына арналған Intel FPGA SDK файлында түзетілген.
Сурет 2. Құбыр көпірі бар үш банктік гетерогенді жады жүйесінің құрылымдық схемасы intel OpenCL теңшелетін платформалары үшін FPGA SDK ішінде гетерогенді жад жүйелерін жасау - 2-сурет1.4. Біркелкі жад шешімі үшін Boardtest бағдарламасын және хост кодын өзгерту
Пайдаланушы платформасының функционалдығы мен өнімділігін тексеру үшін OpenCL Custom Platform Toolkit үшін Intel FPGA SDK бірге жеткізілетін boardtest.cl ядросын пайдаланыңыз.
Борттық тест бағдарламасы хосттан құрылғыға өткізу қабілеттілігін, жад өткізу қабілетін және пайдаланушы платформасының жалпы функционалдығын тексеруге мүмкіндік беретін 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 жүйесінде гетерогенді жад шешімін пайдалану үшін clCreateBuffer қоңырауына CL_MEM_HETEROGENEOUS_INTELFPGA жалаушасын қосу арқылы хост кодын өзгертіңіз.
    Мысалыampле:
    ddatain = clCreateBuffer(контекст, CL_MEM_READ_WRITE | мемфлагтар
    CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(unsigned) * vectorSize, NULL, &күй);
    Intel буферді жазбас бұрын буфер орнын ядро ​​аргументі ретінде орнатуды қатаң ұсынады. Жалғыз жаһандық жадты пайдаланған кезде буферлерді ядро ​​аргументіне тағайындаудан бұрын немесе кейін жазуға болады. Гетерогенді жады жүйелерінде хост буферді жазбас бұрын буфер орнын орнатады. Басқаша айтқанда, хост clEnqueueWriteBuffer функциясын шақырмас бұрын clSetKernelArgument функциясын шақырады.
    Хост кодыңызда clCreateBuffer, clSetKernelArg және clEnqueueWriteBuffer шақыруларын келесі ретпен шақырыңыз:
    ddatain = clCreateBuffer(контекст, CL_MEM_READ_WRITE | memflags |
    CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(unsigned) * vectorSize, NULL, &күй);
    … күй = clSetKernelArg(ядро[k], 0, sizeof(cl_mem), (жарамсыз*)&ddatain);
    … күйі = 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 пәрменіндегі опция.

Қатысты ақпарат
Жаһандық жадтың Burst-Interleaving (–интерлеалингсіз) мүмкіндігін өшіру )

1.5. Гетерогенді жадыңыздың функционалдығын тексеру Жүйе
Гетерогенді жад жүйесінің дұрыс жұмыс істеуін қамтамасыз ету үшін хост кодындағы CL_CONTEXT_COMPILER_MODE_INTELFPGA жалауын алып тастаңыз.
Біртекті жады бар OpenCL жүйелерінде .aocx оқуын өшіру үшін хост кодында CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 жалауын орнату опциясы қажет. 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::қайта бағдарлама(жарамсыз *деректер, өлшем_t деректер_өлшемі)
    {
    қайтару 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. Бұл әрекетті өзгерту үшін қайтару 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 - логотипіOpenCL үшін Intel® FPGA SDK жүйесінде гетерогенді жад жүйелерін жасау
Теңшелетін платформалар
intel OpenCL теңшелетін платформалары үшін FPGA SDK ішінде гетерогенді жад жүйелерін жасау - 1 белгішесі Кері байланыс жіберу
intel OpenCL теңшелетін платформалары үшін FPGA SDK жүйесінде гетерогенді жад жүйелерін жасау - белгіше Онлайн нұсқасы
intel OpenCL теңшелетін платформалары үшін FPGA SDK ішінде гетерогенді жад жүйелерін жасау - 1 белгішесі Кері байланыс жіберу
ID: 683654
Нұсқа: 2016.12.13

Құжаттар / Ресурстар

intel OpenCL теңшелетін платформалары үшін FPGA SDK ішінде гетерогенді жад жүйелерін жасау [pdf] Нұсқаулар
OpenCL теңшелетін платформалары үшін FPGA SDK ішінде гетерогенді жад жүйелерін жасау, гетерогенді жад жүйелерін жасау, OpenCL теңшелетін платформалары үшін FPGA SDK

Анықтамалар

Пікір қалдырыңыз

Электрондық пошта мекенжайыңыз жарияланбайды. Міндетті өрістер белгіленген *