OpenCL Custom Platforms үчүн FPGA SDK гетерогендүү эс тутумдарын түзүү
Instructions
OpenCL Custom Platforms үчүн 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 Reference Platform Porting Guide
1.1. FPGA Башкармасынын жана EMIF интерфейстеринин иштешин текшерүү
Ар бир эстутумдун интерфейсин өз алдынча текшерип, андан кийин глобалдык эстутум аркылуу Ыңгайлаштырылган платформаңызды түзүңүз.
- Ар бир интерфейстин ылдамдыгын жана туруктуулугун сынай турган аппараттык түзүлүштөрдү колдонуу менен ар бир эс интерфейсин текшериңиз.
- Глобалдык эстутумду колдонуу менен Ыңгайлаштырылган платформаңызды түзүңүз.
- Мисалы үчүнampЭгерде сизде үч DDR интерфейси бар болсо, алардын бири гетерогендүү эс катары картага түшүрүлүшү керек. Бул учурда, ар бир DDR интерфейси менен OpenCL стекинин иштешин өз алдынча текшериңиз.
OpenCL жана OpenCL логотиби Apple Inc. компаниясынын Khronos Group™ уруксаты менен колдонулган соода белгилери болуп саналат. - OpenCL үчүн Intel FPGA SDK жарыяланган Khronos спецификациясына негизделген жана Khronos шайкештигин текшерүү процессинен өткөн. Учурдагы шайкештиктин абалын төмөнкү жерден тапса болот www.khronos.org/conformance.
- Мисалы үчүнampЭгерде сизде үч DDR интерфейси бар болсо, алардын бири гетерогендүү эс катары картага түшүрүлүшү керек. Бул учурда, ар бир DDR интерфейси менен OpenCL стекинин иштешин өз алдынча текшериңиз.
Intel корпорациясы. Бардык укуктар корголгон. Intel, Intel логотиби жана башка Intel белгилери Intel корпорациясынын же анын туунду компанияларынын соода белгилери болуп саналат. Intel өзүнүн FPGA жана жарым өткөргүч өнүмдөрүн Intelдин стандарттык гарантиясына ылайык учурдагы спецификацияларга ылайык аткарууга кепилдик берет, бирок эскертүүсүз каалаган убакта каалаган өнүмгө жана кызматтарга өзгөртүү киргизүү укугун өзүнө калтырат. Intel бул жерде сүрөттөлгөн кандайдыр бир маалыматты, продуктуну же кызматты колдонуудан же колдонуудан келип чыккан эч кандай жоопкерчиликти же жоопкерчиликти өзүнө албайт, Intel тарабынан жазуу жүзүндө ачык макулдашылгандан башка учурларда. Intel кардарларына жарыяланган маалыматка ишенүүдөн мурун жана өнүмдөр же кызматтарга буйрутма берүүдөн мурун түзмөктүн спецификацияларынын акыркы версиясын алуу сунушталат. *Башка ысымдар жана бренддер башкалардын менчиги катары талап кылынышы мүмкүн.
ISO 9001: 2015 Катталган
Же болбосо, эки DDR интерфейси жана төрт маалымат ылдамдыгы (QDR) интерфейси болсо, эки DDR интерфейсинин OpenCL стекинин жана QDR интерфейсинин иштешин өз алдынча текшериңиз.
Intel эстутум интерфейстерин текшерүү үчүн PCI Express® – (PCIe® -) же EMIF-эксклюзивдик конструкцияларды колдонууну сунуштайт. Ар бир эстутум интерфейсинин иштешин жана OpenCL дизайныңыз эстутум интерфейстеринин бир бөлүгү менен иштешин текшергенден кийин, улантыңыз
толук функционалдык гетерогендүү эс тутумун түзүү.
1.2. board_spec.xml өзгөртүү File
board_spec.xml файлын өзгөртүңүз file OpenCL өзөктөрү үчүн жеткиликтүү болгон гетерогендүү эс тутумдарынын түрлөрүн аныктоо үчүн.
Өзөктүк компиляция учурунда, OpenCL Offline Compiler үчүн 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 Memory Bank Divider эстутум банктарынын 2-күчтүү эмес санын колдобойт, бул типтүү конфигурациялар үчүн чектөө эмес. Бирок, эстутум интерфейстеринин кубаттуулугу жок 2 санда зарыл болгон сценарийлер бар. Эстутум интерфейстеринин кубаттуулугу 2ге жетпеген санды жайгаштыруу үчүн, бир нече OpenCL Memory Bank Dividers колдонуңуз. Чыныгы гетерогендүү эс тутумуңуз болгондо, бир нече OpenCL Memory Bank Dividers түзүшүңүз керек. Бир DDR эс интерфейси жана бир QDR эс интерфейси бар системаны карап көрөлү. Эки банктын ар кандай эстутум топологиялары болгондуктан, аларды бир глобалдык эс тутумга бириктире албайсыз.
Сүрөт 1. Үч банктык гетерогендүү эс тутум системасынын блок диаграммасы
Бул гетерогендүү эс тутуму эки DDR эс интерфейсин жана бир QDR эс интерфейсин камтыйт.Эгерде сиз Intel Quartus® Prime программасынын 16.0, 16.0.1 же 16.0.2 версиясын жана OpenCL үчүн Altera SDK колдонуп жатсаңыз, OpenCL Memory Bank Divider дарек чектериндеги эс тутумдун жарылууларын туура эмес иштетет. Бул белгилүү маселени чечүү үчүн, жарылуу өлчөмү 1 болгон түтүк көпүрөсүн кошуп, анын Avalon ®Memory-Mapped (Avalon-MM) мастерин OpenCL Memory Bank Divider'дин кул портуна туташтырыңыз.
Эскертүү:
Бул белгилүү маселе Intel Quartus Prime программасында жана OpenCL 16.1 версиясы үчүн Intel FPGA SDKде чечилген.
Сүрөт 2. Түтүк көпүрөсү бар үч банктык гетерогендүү эс тутумунун блок схемасы 1.4. Сиздин Гетерогендүү Эстутум Чечимиңиз үчүн Boardtest программасын жана Хост кодун өзгөртүү
Ыңгайлаштырылган платформаңыздын иштешин жана иштешин текшерүү үчүн OpenCL Custom Platform Toolkit үчүн Intel FPGA SDK менен келген boardtest.cl өзөгүн колдонуңуз.
Борттест программасы - бул OpenCL ядросу, ал сизге хосттон түзмөккө өтүү жөндөмдүүлүгүн, эс тутумдун өткөрүү жөндөмдүүлүгүн жана Ыңгайлаштырылган платформаңыздын жалпы функционалдуулугун текшерүүгө мүмкүндүк берет.
- дегенге серептөө /board/ custom_platform_toolkit/tests/boardtest каталогу.
- 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 эки эс тутумунун мүнөздөмөлөрүн аныктайт. - OpenCL тутумуңуздагы гетерогендүү эстутум чечимиңизди колдонуу үчүн, clCreateBuffer чалууңузга CL_MEM_HETEROGENEOUS_INTELFPGA желегин кошуу менен хост кодуңузду өзгөртүңүз.
Мисалы үчүнampле:
ddatain = clCreateBuffer(контекст, CL_MEM_READ_WRITE | memflags
CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(unsigned) * vectorSize, NULL, &status);
Intel буферди жазуудан мурун буфердин ордун ядро аргументи катары коюуну катуу сунуштайт. Бир глобалдык эстутумду колдонууда буферлерди ядро аргументине дайындоодон мурун же андан кийин жаза аласыз. Гетерогендүү эс тутум системаларында хост буферди жазуудан мурун буфердин ордун белгилейт. Башкача айтканда, хост clEnqueueWriteBuffer функциясын чакыруудан мурун clSetKernelArgument функциясын чакырат.
Хост кодуңузда clCreateBuffer, clSetKernelArg жана clEnqueueWriteBuffer чалууларын төмөнкү тартипте чакырыңыз:
ddatain = clCreateBuffer(контекст, CL_MEM_READ_WRITE | memflags |
CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(unsigned) * vectorSize, NULL, &status);
... абалы = clSetKernelArg(ядро[k], 0, sizeof(cl_mem), (жараксыз*)&ddatain);
… абалы = clEnqueueWriteBuffer(кезек, ddatain, CL_FALSE, 0, sizeof(unsigned) * vectorSize,hdatain, 0, NULL, NULL);
ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file бул функция чакырууларынын окшош тартибин көрсөтөт. - boardtest.clди өзгөрткөндөн кийин file жана хост коду, хост жана ядро кодун түзүңүз жана алардын иштешин текшериңиз.
Өзүңүздүн өзөк кодун түзүүдө, сиз –no-interleavingди кошуу менен бардык эс тутумдарынын жарылып-аралашуусун өчүрүшүңүз керек. aoc буйругундагы параметр.
Тиешелүү маалымат
Глобалдык эстутумдун жарылуу-аралашуусун өчүрүү (–жок )
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 аймактарын көрсөтүү сыяктуу тактайдын дизайнынын акыркы өзгөчөлүктөрүн ишке ашырбастан, өзүңүздүн Ыңгайлаштырылган платформаңыздын иштешин текшергиңиз келиши мүмкүн.
- Хост кодуңузда CL_CONTEXT_COMPILER_MODE_INTELFPGA желеги орнотулбаганын текшериңиз.
- тактага серептөө/ Ыңгайлаштырылган платформаңыздын /source/host/mmd каталогу.
- acl_pcie_device.cpp эстутум картасын ачыңыз (MMD) file текст редакторунда.
- acl_pcie_device.cpp ичинде кайра программалоо функциясын өзгөртүү file кайтаруу 0 кошуу менен; сызык, төмөндө көрсөтүлгөндөй:
int ACL_PCIE_DEVICE::reprogram(жараксыз *берилиштер, өлчөмү_t берилиштер_өлчөмү)
{
кайтаруу 0;
// ишке ашпай калуу
int reprogram_failed = 1;
// fpga.bin ичинде rbf же хэш жок деп ойлобоңуз
int rbf_or_hash_not_provided = 1;
// базалык жана импорттук ревизиянын хэштери дал келбейт деп ойлойбуз
int hash_mismatch = 1;
…
} - acl_pcie_device.cpp кайра түзүңүз file.
- 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 болуп өзгөртүлдү. |
OpenCL үчүн Intel® FPGA SDK ичинде Гетерогендүү эс тутумдарын түзүү
Ыңгайлаштырылган платформалар
Пикир жөнөтүү
Online котормосу
Пикир жөнөтүү
ID: 683654
Версия: 2016.12.13
Документтер / Ресурстар
![]() |
intel OpenCL Custom Platforms үчүн FPGA SDK ичинде Гетерогендүү эс тутумдарын түзүү [pdf] Instructions OpenCL Custom Platforms үчүн FPGA SDK гетерогендүү эс тутумдарын түзүү, Гетерогендүү эс тутум системаларын түзүү, OpenCL Custom Platforms үчүн FPGA SDK |