Heterogēnu atmiņas sistēmu izveide FPGA SDK OpenCL pielāgotajām platformām
Norādījumi
Heterogēnu atmiņas sistēmu izveide Intel® FPGA SDK OpenCL pielāgotajām platformām
Neviendabīgas atmiņas ieviešana pielāgotajā platformā nodrošina lielāku ārējās atmiņas interfeisa (EMIF) joslas platumu, kā arī lielāku un ātrāku piekļuvi atmiņai. Neviendabīgas atmiņas piekļuves kombinācija ar optimizētu
OpenCL™(1)kodols var nodrošināt ievērojamus jūsu OpenCL sistēmas veiktspējas uzlabojumus.
Šajā lietojumprogrammas piezīmē ir sniegti norādījumi par neviendabīgu atmiņas sistēmu izveidi pielāgotā platformā lietošanai ar Intel® FPGA SDK for OpenCL(2). Intel pieņem, ka esat pieredzējis FPGA dizaineris, kurš izstrādā pielāgotas platformas, kurās ir neviendabīgas atmiņas sistēmas.
Pirms neviendabīgo atmiņas sistēmu izveides iepazīstieties ar tālāk norādīto Intel FPGA SDK OpenCL dokumentiem.
Saistītā informācija
- Intel FPGA SDK OpenCL programmēšanas rokasgrāmatai
- Intel FPGA SDK for OpenCL labākās prakses rokasgrāmata
- Intel FPGA SDK platformai OpenCL Arria 10 GX FPGA izstrādes komplekta atsauces platformas pārnešanas rokasgrāmata
1.1. FPGA valdes un EMIF saskarņu funkcionalitātes pārbaude
Pārbaudiet katru atmiņas saskarni atsevišķi un pēc tam izveidojiet savu pielāgoto platformu, izmantojot globālo atmiņu.
- Pārbaudiet katru atmiņas saskarni, izmantojot aparatūras dizainu, kas var pārbaudīt katra interfeisa ātrumu un stabilitāti.
- Izveidojiet savu pielāgoto platformu, izmantojot globālo atmiņu.
- Piemēram,ample, ja jums ir trīs DDR saskarnes, vienai no tām jābūt kartētai kā neviendabīgai atmiņai. Šādā gadījumā pārbaudiet OpenCL steka funkcionalitāti ar katru DDR interfeisu atsevišķi.
OpenCL un OpenCL logotips ir Apple Inc. preču zīmes, ko izmanto ar Khronos Group™ atļauju. - Intel FPGA SDK for OpenCL ir balstīts uz publicēto Khronos specifikāciju un ir izturējis Khronos atbilstības pārbaudes procesu. Pašreizējo atbilstības statusu var atrast vietnē www.khronos.org/conformance.
- Piemēram,ample, ja jums ir trīs DDR saskarnes, vienai no tām jābūt kartētai kā neviendabīgai atmiņai. Šādā gadījumā pārbaudiet OpenCL steka funkcionalitāti ar katru DDR interfeisu atsevišķi.
Intel korporācija. Visas tiesības aizsargātas. Intel, Intel logotips un citas Intel preču zīmes ir Intel Corporation vai tās meitasuzņēmumu preču zīmes. Intel garantē savu FPGA un pusvadītāju produktu veiktspēju atbilstoši pašreizējām specifikācijām saskaņā ar Intel standarta garantiju, taču patur tiesības jebkurā laikā bez brīdinājuma veikt izmaiņas jebkuros produktos un pakalpojumos. Intel neuzņemas nekādu atbildību vai saistības, kas izriet no jebkādas šeit aprakstītās informācijas, produkta vai pakalpojuma lietojuma vai izmantošanas, izņemot gadījumus, kad Intel ir nepārprotami rakstiski piekritis. Intel klientiem ir ieteicams iegūt jaunāko ierīces specifikāciju versiju, pirms paļauties uz jebkādu publicētu informāciju un pirms preču vai pakalpojumu pasūtījumu veikšanas. *Citi nosaukumi un zīmoli var tikt uzskatīti par citu personu īpašumiem.
ISO 9001: 2015 reģistrēts
Alternatīvi, ja jums ir divas DDR saskarnes un viens četru datu pārraides ātruma (QDR) interfeiss, pārbaudiet abu DDR interfeisu un QDR saskarnes OpenCL steka funkcionalitāti.
Intel iesaka izmantot PCI Express® (PCIe® -) vai EMIF ekskluzīvu dizainu, lai pārbaudītu atmiņas saskarnes. Kad esat pārliecinājies, ka katrs atmiņas interfeiss ir funkcionāls un vai jūsu OpenCL dizains darbojas ar atmiņas saskarņu apakškopu, turpiniet
izveidot pilnībā funkcionējošu heterogēnu atmiņas sistēmu.
1.2. Modificēt board_spec.xml File
Modificējiet board_spec.xml file lai norādītu neviendabīgo atmiņas sistēmu veidus, kas ir pieejami OpenCL kodoliem.
Kodola kompilēšanas laikā Intel FPGA SDK for OpenCL Offline Compiler piešķir kodola argumentus atmiņai, pamatojoties uz jūsu norādīto bufera atrašanās vietas argumentu.
1. Pārlūkojiet uz board_spec.xml file pielāgotās platformas aparatūras direktorijā.
2. Atveriet board_spec.xml file teksta redaktorā un attiecīgi modificējiet XML.
Piemēram,ampJa jūsu aparatūras sistēmai ir divas DDR atmiņas kā noklusējuma globālā atmiņa un divas QDR bankas, kuras modelējat kā neviendabīgu atmiņu, modificējiet board_spec.xml atmiņas sadaļas. file līdzināties šādiem:
1.3. Vairāku atmiņas dalītāju iestatīšana programmā Qsys
Pašlaik OpenCL atmiņas bankas sadalītājs Qsys dizainā neatbalsta atmiņas banku skaitu bez jaudas 2, kas nav ierobežojums tipiskām konfigurācijām. Tomēr ir gadījumi, kad ir nepieciešams atmiņas saskarņu skaits bez jaudas 2. Lai pielāgotu atmiņas saskarņu skaitu bez jaudas 2, izmantojiet vairākus OpenCL atmiņas bankas dalītājus, lai izveidotu neviendabīgas atmiņas sistēmas ar atmiņas banku skaitu bez jaudas 2. Ja jums ir patiesi neviendabīga atmiņas sistēma, jums ir jāizveido vairāki OpenCL atmiņas bankas sadalītāji. Apsveriet sistēmu ar vienu DDR atmiņas interfeisu un vienu QDR atmiņas interfeisu. Tā kā abām bankām ir atšķirīgas atmiņas topoloģijas, tās nevar apvienot vienā globālajā atmiņā.
1. attēls. Trīs banku heterogēnas atmiņas sistēmas blokshēma
Šī neviendabīgā atmiņas sistēma satur divus DDR atmiņas interfeisus un vienu QDR atmiņas interfeisu.Ja izmantojat Intel Quartus® Prime programmatūras versiju 16.0, 16.0.1 vai 16.0.2 un Altera SDK for OpenCL, OpenCL atmiņas bankas sadalītājs nepareizi apstrādā atmiņas pārrāvumus pāri adreses robežām. Lai novērstu šo zināmo problēmu, pievienojiet konveijera tiltu ar sērijveida 1 un savienojiet tā Avalon ®Memory-Mapped (Avalon-MM) galveno ierīci ar OpenCL atmiņas bankas sadalītāja pakārtoto portu.
Piezīme:
Šī zināmā problēma ir novērsta Intel Quartus Prime programmatūrā un Intel FPGA SDK OpenCL versijai 16.1.
2. attēls. Trīs banku heterogēnas atmiņas sistēmas blokshēma ar cauruļvada tiltu 1.4. Boardtest programmas un resursdatora koda modificēšana jūsu neviendabīgās atmiņas risinājumam
Izmantojiet boardtest.cl kodolu, kas tiek piegādāts kopā ar Intel FPGA SDK OpenCL pielāgotās platformas rīkkopai, lai pārbaudītu pielāgotās platformas funkcionalitāti un veiktspēju.
Boardtest programma ir OpenCL kodols, kas ļauj pārbaudīt joslas platumu no resursdatora uz ierīci, atmiņas joslas platumu un pielāgotās platformas vispārējo funkcionalitāti.
- Pārlūkojiet uz /board/ custom_platform_toolkit/tests/boardtest direktorijā.
- Atveriet boardtest.cl file teksta redaktorā un katram globālās atmiņas argumentam piešķiriet bufera vietu.
Piemēram,ample:
__kodols nav spēkā
mem_stream (__global__attribute__((bufera_vieta(“DDR”)))) uint *src, __globālā __attribute__((bufera_vieta(“QDR”)))) uint *dst, uint arg, uint arg2)
Šeit uint *src tiek piešķirts DDR atmiņai, un uint *dst tiek piešķirts QDR atmiņai. Board_spec.xml file norāda abu atmiņas sistēmu raksturlielumus. - Lai izmantotu neviendabīgās atmiņas risinājumu savā OpenCL sistēmā, modificējiet resursdatora kodu, pievienojot CL_MEM_HETEROGENEOUS_INTELFPGA karogu savam clCreateBuffer izsaukumam.
Piemēram,ample:
ddatain = clCreateBuffer(konteksts, CL_MEM_READ_WRITE | memflags
CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(bez paraksta) * vectorSize, NULL, &statuss);
Intel stingri iesaka pirms bufera rakstīšanas iestatīt bufera atrašanās vietu kā kodola argumentu. Izmantojot vienu globālo atmiņu, jūs varat rakstīt buferus pirms vai pēc to piešķiršanas kodola argumentam. Neviendabīgās atmiņas sistēmās resursdators iestata bufera atrašanās vietu pirms bufera ierakstīšanas. Citiem vārdiem sakot, resursdators izsauks funkciju clSetKernelArgument pirms funkcijas clEnqueueWriteBuffer izsaukšanas.
Savā resursdatora kodā izsauciet clCreateBuffer, clSetKernelArg un clEnqueueWriteBuffer izsaukumus šādā secībā:
ddatain = clCreateBuffer(konteksts, CL_MEM_READ_WRITE | memflags |
CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(bez paraksta) * vectorSize, NULL, &statuss);
… statuss = clSetKernelArg(kodolu[k], 0, sizeof(cl_mem), (void*)&ddatain);
… statuss = clEnqueueWriteBuffer(rinda, ddatain, CL_FALSE, 0, sizeof(nesigned) * vektora izmērs,hdatain, 0, NULL, NULL);
ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file parāda līdzīgu šo funkciju izsaukumu secību. - Pēc tam, kad esat modificējis boardtest.cl file un resursdatora kodu, apkopojiet resursdatora un kodola kodu un pārbaudiet to funkcionalitāti.
Kompilējot kodola kodu, ir jāatspējo visu atmiņas sistēmu sērijveida interleaving, iekļaujot -no-interleaving opciju aoc komandā.
Saistītā informācija
Globālās atmiņas sērijveida interleaving atspējošana (–bez interleaving )
1.5. Jūsu neviendabīgās atmiņas funkcionalitātes pārbaude Sistēma
Lai nodrošinātu, ka neviendabīgā atmiņas sistēma darbojas pareizi, resursdatora kodā atiestatiet karogu CL_CONTEXT_COMPILER_MODE_INTELFPGA.
OpenCL sistēmās ar viendabīgu atmiņu resursdatora kodā ir jāiestata karodziņš CL_CONTEXT_COMPILER_MODE_INTELFPGA=3, lai atspējotu .aocx nolasīšanu. file un FPGA pārprogrammēšana. Karoga CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 iestatīšana ir noderīga, izveidojot dēli, lai pārbaudītu pielāgotās platformas funkcionalitāti, neveidojot grīdas plānu un nenorādot LogicLock™ reģionus.
Izmantojot neviendabīgas atmiņas sistēmas, izpildlaika videi ir jānolasa katra bufera bufera atrašanās vietas, kas aprakstītas .aocx. file, lai pārbaudītu atmiņas sistēmu funkcionalitāti. Tomēr, iespējams, vēlēsities pārbaudīt savas pielāgotās platformas funkcionalitāti, neieviešot pēdējās dēļa dizaina funkcijas, piemēram, izstrādājot grīdas plānu un nenorādot LogicLock reģionus.
- Pārbaudiet, vai resursdatora kodā nav iestatīts karodziņš CL_CONTEXT_COMPILER_MODE_INTELFPGA.
- Pārlūkot uz dēli/ /source/host/mmd jūsu pielāgotās platformas direktorijā.
- Atveriet acl_pcie_device.cpp atmiņas kartētu ierīci (MMD) file teksta redaktorā.
- Modificējiet pārprogrammēšanas funkciju failā acl_pcie_device.cpp file pievienojot atdevi 0; rinda, kā parādīts zemāk:
int ACL_PCIE_DEVICE::pārprogrammēt(nederīgs *dati, izmērs_t datu_izmērs)
{
atgriezties 0;
// pieņemt neveiksmi
int reprogram_failed = 1;
// pieņemsim, ka fpga.bin nav rbf vai hash
int rbf_or_hash_not_provided = 1;
// pieņemsim, ka bāzes un importa pārskatīšanas jaucējvērtības nesakrīt
int hash_nematch = 1;
…
} - Pārkompilējiet failu acl_pcie_device.cpp file.
- Pārbaudiet, vai karodziņš CL_CONTEXT_COMPILER_MODE_INTELFPGA nav iestatīts.
Uzmanību: Pēc atgriešanās 0 pievienošanas; uz pārprogrammēšanas funkciju un pārkompilē MMD file, izpildlaika vide nolasīs .aocx file un piešķiriet bufera vietas, bet nepārprogrammēs FPGA. FPGA attēls ir manuāli jāsaskaņo ar .aocx file. Lai mainītu šo darbību, noņemiet return 0; no pārprogrammēšanas funkcijas un pārkompilē MMD file.
1.6. Dokumentu pārskatīšanas vēsture
Datums | Versija | Izmaiņas |
decembris-17 | 2017.12.01 | • Pārveidots zīmols CL_MEM_HETEROGENEOUS_ALTERA uz CL_MEM_HETEROGENEOUS_INTELFPGA. |
decembris-16 | 2016.12.13 | • Pārveidots zīmols CL_CONTEXT_COMPILER_MODE_ALTERA uz CL_CONTEXT_COMPILER_MODE_INTELFPGA. |
Heterogēnu atmiņas sistēmu izveide Intel® FPGA SDK for OpenCL
Pielāgotas platformas
Sūtīt atsauksmes
Tiešsaistes versija
Sūtīt atsauksmes
ID: 683654
Versija: 2016.12.13
Dokumenti / Resursi
![]() |
intel Heterogēnu atmiņas sistēmu izveide FPGA SDK OpenCL pielāgotajām platformām [pdfNorādījumi Heterogēnu atmiņas sistēmu izveide FPGA SDK OpenCL pielāgotajām platformām, Heterogēnu atmiņas sistēmu izveide, FPGA SDK OpenCL pielāgotajām platformām |