FPGA SDK ya OpenCL
Mwongozo wa Mtumiaji
UG-OCL009
2017.05.08
Ilisasishwa mwisho kwa Intel® Quartus® Prime Design Suite: 17.0
Jisajili
Tuma Maoni
Intel® FPGA SDK ya OpenCL™ Intel® Cyclone®V SoC Mwongozo wa Usambazaji wa Jukwaa la Marejeleo
Mwongozo wa Ubebaji wa Jukwaa la Marejeleo la V SoC unafafanua muundo wa maunzi na programu ya Jukwaa la Marejeleo la Intel Cyclone V SoC Development Kit (c5soc) kwa matumizi na Intel Software Development Kit (SDK) ya OpenCL Intel ® FPGA SDK ya OpenCL ™ Intel Cyclone. ® . Kabla ya kuanza, Intel inapendekeza sana kujijulisha na yaliyomo kwenye hati zifuatazo:
- Intel FPGA SDK ya OpenCIntel Cyclone V SoC Mwongozo wa Kuanza
- Intel FPGA SDK ya Mwongozo wa Mtumiaji wa Zana ya Mfumo Maalum wa OpenCL
- Kitabu cha Kitabu cha Kifaa cha Cyclone V, Juzuu ya 3: Mwongozo wa Marejeleo wa Kiufundi wa Mfumo wa Kichakata Kigumu Zaidi ya hayo, rejelea Zana ya Ukuzaji ya Cyclone V SoC na ukurasa wa Suti ya Muundo wa SoC uliopachikwa wa Altera. webtovuti kwa taarifa zaidi. 1 2
Tahadhari: Intel inadhani kwamba una ufahamu wa kina wa Intel FPGA SDK ya Mwongozo wa Mtumiaji wa Zana ya Mfumo Maalum wa OpenCL. Mwongozo wa Usambazaji wa Mfumo wa Marejeleo wa Mfumo wa Kuendeleza wa Cyclone V SoC hauelezi matumizi ya Zana ya Mfumo Maalum wa SDK kutekeleza Mfumo Maalum wa Kifaa cha Ukuzaji cha Cyclone V SoC. Inafafanua tu tofauti kati ya usaidizi wa SDK kwenye Kifaa cha Kuendeleza cha Cyclone V SoC na Intel FPGA SDK ya jumla ya Mfumo Maalum wa OpenCL.
Viungo Vinavyohusiana
- Intel FPGA SDK ya OpenCL Cyclone V SoC Mwongozo wa Kuanza
- Intel FPGA SDK ya Mwongozo wa Mtumiaji wa Zana ya Mfumo Maalum wa OpenCL
- Mwongozo wa Kifaa wa Cyclone V, Juzuu ya 3: Mwongozo wa Marejeleo wa Mfumo wa Kichakataji Kigumu
- Kifaa cha Ukuzaji cha Cyclone V SoC na ukurasa wa Ubunifu uliopachikwa wa SoC kwenye Altera webtovuti
- OpenCL na nembo ya OpenCL ni chapa za biashara Apple Inc. zinazotumiwa kwa idhini ya Khronos Group™.
- 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, Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus na Stratix maneno na nembo ni chapa za biashara za Intel Corporation au kampuni zake tanzu nchini Marekani na/au nchi nyinginezo. 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.
1.1.1 Vibadala vya Bodi ya Mfumo wa Marejeleo wa Cyclone V SoC Development Kit
Intel FPGA SDK ya OpenCL Cyclone V SoC Development Kit Reference Platform inajumuisha vibadala viwili vya bodi.
- bodi ya c5soc
Bodi hii ya chaguo-msingi hutoa ufikiaji wa benki mbili za kumbukumbu za DDR. HPS DDR inaweza kufikiwa na FPGA na CPU. FPGA DDR inafikiwa na FPGA pekee. - c5soc_sharedonly bodi
Kibadala hiki cha ubao kina muunganisho wa HPS DDR pekee. FPGA DDR haipatikani. Kibadala hiki cha ubao kinafaa zaidi eneo kwa sababu maunzi machache yanahitajika ili kusaidia benki moja ya kumbukumbu ya DDR. Ubao wa c5soc_sharedonly pia ni jukwaa zuri la kielelezo kwa bodi ya mwisho ya uzalishaji iliyo na benki moja ya kumbukumbu ya DDR.
Ili kulenga lahaja hii ya ubao wakati wa kuunda kiini chako cha OpenCL, jumuisha -board c5soc_sharedonly chaguo katika amri yako ya aoc.
Kwa habari zaidi kwenye -board chaguo la amri ya aoc, rejelea Intel FPGA SDK kwa Mwongozo wa Utayarishaji wa OpenCL.
Viungo Vinavyohusiana
Kukusanya Kernel kwa Bodi Maalum ya FPGA (–bodi )
1.1.2 Maudhui ya Mfumo wa Marejeleo wa Cyclone V SoC Development Kit
Jukwaa la Marejeleo la Kifaa cha Kuendeleza cha Cyclone V SoC linajumuisha yafuatayo files na saraka:
File au Saraka | Maelezo |
bodi_env.xml | Lugha ya Alama ya eExtensible (XML) file ambayo inaelezea c5soc kwa Intel FPGA SDK ya OpenCL. |
linux_sd_card_image.tgz | Picha ya kadi ya SD flash iliyobanwa file ambayo ina kila kitu ambacho mtumiaji wa SDK anahitaji ili kutumia Cyclone V SoC Development Kit na SDK. |
silaha32 | Saraka ambayo ina yafuatayo: |
1.1.3 Sifa Muhimu za Kifaa cha Maendeleo cha Kimbunga V
Orodha ifuatayo inaangazia vipengele vya Cyclone V SoC Development Kit na vipengele ambavyo ni muhimu kwa Intel FPGA SDK kwa OpenCL:
- Dual-core ARM Cortex-A9 CPU inayotumia Linux ya 32-bit.
- Basi ya hali ya juu ya Kiolesura cha eXtensible (AXI) kati ya HPS na kitambaa kikuu cha FPGA.
- Vidhibiti viwili vya kumbukumbu vya DDR vilivyo ngumu, kila kimoja kikiunganisha kwa gigabyte 1 (GB) DDR3 SDRAM.
- Kidhibiti kimoja cha DDR kinapatikana kwa msingi wa FPGA pekee (yaani, FPGA DDR).
- Kidhibiti kingine cha DDR kinaweza kufikiwa na HPS na FPGA (yaani, HPS DDR). Kidhibiti hiki kilichoshirikiwa huruhusu ushiriki wa kumbukumbu bila malipo kati ya CPU na msingi wa FPGA. - CPU inaweza kusanidi upya kitambaa kikuu cha FPGA.
1.1.3.1 Cyclone V SoC Development Kit Reference Design Malengo na Maamuzi Intel inaweka msingi wa utekelezaji wa Cyclone V SoC Reference Kit Reference Platform kwenye malengo na maamuzi kadhaa ya muundo. Intel inapendekeza kwamba uzingatie malengo na maamuzi haya unapoweka Jukwaa hili la Marejeleo kwenye bodi yako ya SoC FPGA.
Hapo chini kuna malengo ya muundo wa c5soc:
- Toa kipimo data cha juu iwezekanavyo kati ya kokwa kwenye FPGA na mfumo wa kumbukumbu wa DDR.
- Hakikisha kwamba hesabu kwenye FPGA (yaani, kernels za OpenCL) haziingiliani na kazi zingine za CPU ambazo zinaweza kujumuisha kuhudumia vifaa vya pembeni.
- Acha rasilimali nyingi za FPGA iwezekanavyo kwa hesabu za kernel badala ya vijenzi vya kiolesura.
Hapo chini kuna maamuzi ya muundo wa hali ya juu ambayo ni matokeo ya moja kwa moja ya malengo ya muundo wa Intel:
- Jukwaa la Marejeleo hutumia tu vidhibiti vya kumbukumbu vya DDR ngumu vilivyo na usanidi unaowezekana zaidi (biti 256).
- FPGA huwasiliana na kidhibiti kumbukumbu cha HPS DDR moja kwa moja, bila kuhusisha basi la AXI na swichi ya L3 ndani ya HPS. Mawasiliano ya moja kwa moja hutoa kipimo data bora zaidi kwa DDR, na huzuia hesabu za FPGA zisiingiliane na mawasiliano kati ya CPU na pembezoni mwake.
- Ufikiaji wa kumbukumbu ya moja kwa moja wa Scatter-gather (SG-DMA) si sehemu ya mantiki ya kiolesura cha FPGA. Badala ya kuhamisha kiasi kikubwa cha data kati ya mifumo ya kumbukumbu ya DDR, hifadhi data katika HPS DDR iliyoshirikiwa. Ufikiaji wa moja kwa moja wa kumbukumbu ya CPU na FPGA ni bora zaidi kuliko DMA. Huhifadhi rasilimali za maunzi (yaani, eneo la FPGA) na kurahisisha kiendeshi cha Linux kernel.
Onyo: Uhamisho wa kumbukumbu kati ya mfumo wa HPS DDR ulioshirikiwa na mfumo wa DDR unaofikiwa na FPGA pekee ni polepole sana. Ukichagua
kuhamisha kumbukumbu kwa namna hii, itumie kwa kiasi kidogo sana cha data pekee. - seva pangishi na kifaa hufanya uhamisho wa data usio wa DMA kati ya nyingine kupitia daraja la HPS-to-FPGA (H2F), kwa kutumia mlango mmoja wa 32-bit. Sababu ni kwamba, bila DMA, kernel ya Linux inaweza tu kutoa ombi moja la kusoma au kuandika la 32-bit, kwa hivyo sio lazima kuwa na muunganisho mpana.
- Mpangishi hutuma mawimbi ya udhibiti kwenye kifaa kupitia daraja jepesi la H2F (LH2F).
Kwa sababu mawimbi ya udhibiti kutoka kwa seva pangishi hadi kifaa ni mawimbi ya kipimo data cha chini, daraja la LH2F linafaa kwa kazi hiyo.
1.2 Kuhamisha Jukwaa la Marejeleo kwa Bodi yako ya FPGA ya SoC
Ili kupeleka Jukwaa la Marejeleo la Cyclone V SoC Development Kit kwa bodi yako ya SoC FPGA, fanya kazi zifuatazo:
- Chagua kumbukumbu moja ya DDR au matoleo mawili ya kumbukumbu ya DDR ya Jukwaa la Marejeleo la c5soc kama sehemu ya kuanzia ya muundo wako.
- Sasisha maeneo ya pini katika ALTERAOCLSDKROOT/board/c5soc/ /juu.qsf file, ambapo ALTERAOCLSDKROOT ndio njia ya eneo la Intel FPGA SDK kwa usakinishaji wa OpenCL, na ni jina la saraka la lahaja ya ubao. Saraka ya c5soc_sharedonly ni ya lahaja ya ubao iliyo na mfumo mmoja wa kumbukumbu wa DDR. Saraka ya c5soc ni ya lahaja ya ubao iliyo na mifumo miwili ya kumbukumbu ya DDR.
- Sasisha mipangilio ya DDR ya vizuizi vya HPS na/au FPGA SDRAM katika ALTERAOCLSDKROOT/board/c5soc/ /mfumo.qsys file.
4. Intel FPGA SDK zote za miundo ya bodi inayopendekezwa ya OpenCL lazima zifikie kufungwa kwa muda kwa uhakika. Kwa hivyo, uwekaji wa muundo lazima uwe safi wa wakati. Ili kuhamisha kizigeu cha bodi ya c5soc (acl_iface_partition.qxp) kwenye bodi yako ya FPGA ya SoC, fanya kazi zifuatazo:
Kwa maagizo ya kina juu ya kurekebisha na kuhifadhi kizigeu cha bodi, rejelea Quartus
Mkusanyiko Mkuu wa Kuongezeka kwa sura ya Muundo wa Kidaraja na wa Kitimu wa Kitabu cha Mwongozo cha Toleo la Wastani la Quartus Prime.
a. Ondoa acl_iface_partition.qxp kutoka kwa saraka ya ALTERAOCLSDKROOT/board/c5soc/c5soc.
b. Washa eneo la acl_iface_region LogicLock™ kwa kubadilisha amri ya Tcl set_global_assignment -name LL_ENABLED OFF -section_id acl_iface_region kuweka_global_assignment -jina LL_ENABLED ON -section_id acl_iface_region
c. Kusanya kernel ya OpenCL kwa bodi yako.
d. Ikihitajika, rekebisha ukubwa na eneo la eneo la LogicLock.
e. Ukiridhika kuwa uwekaji wa muundo wako ni safi kwa wakati, hamisha kizigeu hicho kama acl_iface_partition.qxp Quartus Prime Exported Partition. File.
Kama ilivyofafanuliwa katika sehemu ya Mtiririko wa Muda Uliothibitishwa wa AIntel FPGA SDK kwa Mwongozo wa Mtumiaji wa Zana ya Mfumo Maalum wa OpenCL, kwa kuleta hii .qxp file katika muundo wa kiwango cha juu, unatimiza hitaji la kutoa muundo wa bodi na mtiririko wa uhakika wa kufungwa kwa wakati.
Kwa mambo ambayo yanaweza kuathiri ubora wa matokeo (QoR) ya kizigeu chako kilichohamishwa, rejelea Ubora wa Jumla wa Mazingatio ya Matokeo kwa sehemu ya Ugawaji wa Bodi Zilizouzwa katika Intel FPGA SDK ya Mwongozo wa Mtumiaji wa Zana ya OpenCL Custom Platform.
f. Zima eneo la LogicLock la acl_iface_region kwa kurudisha amri katika Hatua ya 2 hadi set_global_assignment -name LL_ENABLED OFF section_id acl_iface_region. - Ikiwa ubao wako wa FPGA wa SoC unatumia pini na pembezoni tofauti za kizuizi cha HPS, tengeneza upya kipakiaji na chanzo cha mti wa kifaa (DTS) file. Ukibadilisha mipangilio ya kidhibiti cha kumbukumbu ya HPS DDR, tengeneza upya kipakiaji.
- Unda picha ya kadi ya SD flash.
- Unda Mfumo wako Maalum, unaojumuisha picha ya kadi ya SD flash.
- Fikiria kuunda toleo la mazingira ya wakati wa utekelezaji la Mfumo Maalum kwa matumizi na Intel FPGA Runtime Environment (RTE) ya OpenCL. Toleo la RTE la Mfumo Maalum haujumuishi saraka za maunzi na picha ya kadi ya SD flash. Jukwaa hili Maalum hupakia kwenye mfumo wa SoC FPGA ili kuruhusu programu za seva pangishi kufanya kazi. Kinyume chake, toleo la SDK la Mfumo Maalum ni muhimu kwa SDK kuunda kokwa za OpenCL.
Kidokezo: Unaweza kutumia toleo la SDK la Mfumo Maalum wa RTE. Kuokoa
space, ondoa picha ya kadi ya SD kutoka kwa toleo la RTE la Mfumo Maalum. - Jaribu Jukwaa lako Maalum.
Rejelea Kujaribu sehemu ya Usanifu wa maunzi ya Intel FPGA SDK kwa Mwongozo wa Mtumiaji wa Zana ya Mfumo Maalum wa OpenCL kwa maelezo zaidi.
Viungo Vinavyohusiana
- Kujaribu muundo wa vifaa
- Mkusanyiko wa Kuongezeka wa Quartus Prime kwa Muundo wa Kihierarkia na Msingi wa Timu
- Kuanzisha Mtiririko wa Muda Uliohakikishwa
- Ubora wa Jumla wa Mazingatio ya Matokeo kwa Sehemu ya Bodi Zinazouzwa nje
1.2.1 Kusasisha Jukwaa la Marejeleo Lililohamishika
Katika toleo la sasa la Mfumo wa Marejeleo wa Cyclone V SoC Development Kit, kizuizi cha HPS kiko ndani ya kizigeu kinachofafanua mantiki yote ya nonkernel. Hata hivyo, huwezi kuhamisha HPS kama sehemu ya .qxp file. Ili kusasisha Mfumo Maalum uliopo ambao ulirekebisha kutoka toleo la awali la c5soc, tekeleza mtiririko wa kuhifadhi wa QXP, sasisha picha ya kadi ya SD flash ili kupata mazingira ya hivi punde ya wakati wa utekelezaji, na usasishe board_spec.xml file kuwezesha uhamiaji otomatiki.
Altera® SDK ya toleo la 14.1 la OpenCL na zaidi inachunguza bodi_spec.xml file kwa taarifa za bodi, na kutekeleza masasisho ya kiotomatiki. Kwa sababu unarekebisha
kubuni kwa kutekeleza mtiririko wa kuhifadhi wa QXP, lazima usasishe board_spec.xml file kwa umbizo lake katika toleo la sasa. Inasasisha file inaruhusu SDK kutofautisha kati ya Mifumo Maalum isiyohifadhiwa na Mifumo Maalum ya sasa ya QXP. Rejelea Uhamishaji wa Mfumo Maalum kwa Upatanifu wa Mbele katika Intel FPGA SDK kwa Mwongozo wa Mtumiaji wa Zana ya Mfumo Maalum wa OpenCL kwa maelezo zaidi.
- Ili kutekeleza mtiririko wa uhifadhi wa QXP katika muundo wa maunzi wa Cyclone V SoC FPGA ambao umetolewa kutoka toleo la awali la c5soc, fanya hatua zifuatazo ili kuunda ugawaji ili kutenga HPS kutoka kwa .qxp file:
a. Kabla ya kuunda kizigeu karibu na mantiki ya nonkernel, tengeneza kizigeu karibu na HPS katika Mipangilio ya Quartus Prime ya .qsf. File.
Kwa mfanoample:
# Gawa kwa mikono mfano unaoiga I/O iliyowekwa wakfu ya I/O -name PARTITION_HIERARCHY borde_18261 -to “system:the_system|system_acl_iface:acl_iface|system_acl_iface_hps_0:hps_0|system_psh_acl_i0 system_acl_iface_hps_0_hps_io_border:border” -section_id “system_acl_iface_hps_0_hps_io_border:border”
# Weka kizigeu kuwa aina ya HPS_PARTITION ili kuchakatwa ipasavyo na Quartus iliyosalia
set_global_assignment -jina PARTITION_TYPE HPS_PARTITION -section_id "system_acl_iface_hps_0_hps_io_border:mpaka"
quartus_cdb juu -c juu
-incremental_compilation_export=acl_iface_partition.qxp
-incremental_compilation_export_partition_name=acl_iface_partition
-ongezeko_mkusanyiko_wa_post_synth=on
-ongezeko_mkusanyiko_kuuza nje_post_fit=on
-ongezeko_ukusanyaji_usafirishaji_njia=umewashwa
–mkusanyiko_wa_ongezeko_export_flatten=off
Baada ya kutenga HPS kutoka kwa kizigeu, unaweza kuleta .qxp file na kukusanya muundo wako. - Sasisha picha ya kadi ya SD flash na toleo la sasa la Intel FPGA RTE kwa OpenCL kwa kutekeleza kazi zifuatazo:
a. Weka mlima file meza ya mgao (fat32) na kupanuliwa file mfumo (ext3) katika picha iliyopo kama vifaa vya kurudi nyuma. Kwa maagizo ya kina, rejelea Hatua ya 2 katika Kuunda Picha ya Kadi ya Mweko ya SD.
b. Kwenye saraka ya /home/root/opencl_arm32_rte, ondoa files kutoka kwa toleo la awali la RTE.
c. Pakua na upakue toleo la sasa la RTE kwenye saraka ya /home/root/opencl_arm32_rte.
d. Ndani ya /dereva/toleo.h file ya Jukwaa lako Maalum, sasisha kazi ya ACL_DRIVER_VERSION kwa . (kwa mfanoample, 16.1.x, ambapo 16.1 ni toleo la SDK, na x ni toleo la kiendeshi ambalo umeweka).
e. Kujenga upya dereva.
f. Futa folda ya maunzi ya Jukwaa lako Maalum. Nakili Jukwaa Maalum, pamoja na kiendeshi kilichosasishwa, kwenye saraka ya /home/root/opencl_arm_rte/board.
g. Nakili Altera.icd file kutoka /home/root/opencl_arm32_rte saraka na uiongeze kwenye saraka ya /etc/OpenCL/vendors.
h. Fungua na ujaribu picha mpya. Kwa maagizo ya kina, rejelea Hatua ya 8 hadi 11 katika Kuunda Picha ya Kadi ya Flash ya SD.
Viungo Vinavyohusiana
- Kuunda Picha ya SD Flash Card kwenye ukurasa wa 14
Pia una chaguo la kuunda picha mpya ya kadi ya SD flash. - Uhamiaji Maalum wa Mfumo wa Kiotomatiki kwa Upatanifu wa Mbele
1.3 Usaidizi wa Programu kwa Kumbukumbu Inayoshirikiwa
Kumbukumbu ya kimwili iliyoshirikiwa kati ya FPGA na CPU ndiyo kumbukumbu inayopendelewa kwa kokwa za OpenCL zinazoendeshwa kwenye SoC FPGAs. Kwa sababu FPGA hufikia kumbukumbu ya kimwili iliyoshirikiwa, kinyume na kumbukumbu pepe iliyoshirikiwa, haina ufikiaji wa jedwali za kurasa za CPU ambazo hupanga anwani pepe za mtumiaji kwa anwani za ukurasa halisi.
Kuhusiana na maunzi, kokwa za OpenCL hufikia kumbukumbu ya kimwili iliyoshirikiwa kupitia muunganisho wa moja kwa moja kwa kidhibiti cha kumbukumbu ngumu cha HPS DDR. Kuhusiana na programu, usaidizi wa kumbukumbu ya pamoja ya mwili unajumuisha mambo yafuatayo:
- Utekelezaji wa kawaida wa programu kwa kugawa kumbukumbu kwenye CPU (kwa mfanoample, kazi ya malloc()) haiwezi kutenga eneo la kumbukumbu ambalo FPGA inaweza kutumia.
Kumbukumbu ambayo chaguo za kukokotoa za malloc() hutenganishwa katika nafasi ya anwani ya kumbukumbu pepe, lakini kurasa zozote za msingi haziwezi kuambatana kimwili. Kwa hivyo, seva pangishi lazima iweze kutenga maeneo ya kumbukumbu yanayoambatana. Hata hivyo, uwezo huu haupo katika programu za nafasi ya mtumiaji kwenye Linux. Kwa hiyo, kiendeshi cha Linux kernel lazima kitekeleze ugawaji. - Kiendeshi cha kinu cha OpenCL SoC FPGA Linux kinajumuisha mmap() chaguo la kukokotoa ili kutenga kumbukumbu ya kimwili iliyoshirikiwa na kuiweka katika nafasi ya mtumiaji. mmap() hutumia kinu cha kawaida cha Linux kupiga simu dma_alloc_coherent() kuomba maeneo ya kumbukumbu yanayoambatana kwa kushiriki na kifaa.
- Katika kinu chaguo-msingi cha Linux, dma_alloc_coherent() haitengei kumbukumbu inayoambatana kimwili zaidi ya megabaiti 0.5 (MB) kwa ukubwa. Ili kuruhusu dma_alloc_coherent() kutenga kiasi kikubwa cha kumbukumbu inayoambatana kimwili, washa kipengele cha kigawa kumbukumbu (CMA) cha kerneli ya Linux na kisha kukusanya tena kinu cha Linux.
Kwa Jukwaa la Marejeleo la Cyclone V SoC Development Kit, CMA inadhibiti MB 512 kati ya GB 1 ya kumbukumbu halisi. Unaweza kuongeza au kupunguza thamani hii, kulingana na kiasi cha kumbukumbu iliyoshirikiwa ambayo programu inahitaji. Simu ya dma_alloc_coherent() huenda isiweze kutenga MB 512 kamili ya kumbukumbu inayoambatana; hata hivyo, inaweza kupata mara kwa mara takriban 450 MB ya kumbukumbu. - CPU inaweza kuweka akiba kumbukumbu ambayo dma_alloc_coherent() simu inatenga. Hasa, shughuli za uandishi kutoka kwa programu-pangishi hazionekani kwa kokwa za OpenCL. mmap() chaguo la kukokotoa katika kiendeshi cha OpenCL SoC FPGA Linux kernel pia ina simu kwa pgprot_noncached() au remap_pf_range() kuzima kipengele cha kuakibisha kwa eneo hili la kumbukumbu kwa uwazi.
- Baada ya chaguo za kukokotoa dma_alloc_coherent() kutenga kumbukumbu inayoshikamana kimwili, chaguo za kukokotoa za mmap() hurejesha anwani pepe mwanzoni mwa safu, ambayo ni muda wa anwani ya kumbukumbu unayotenga. Programu-tumizi ya seva pangishi inahitaji anwani hii pepe ili kufikia kumbukumbu. Kwa upande mwingine, kokwa za OpenCL zinahitaji anwani za kawaida. Kiendeshaji cha Linux kernel hufuatilia ramani ya anwani pepe-kwa-mwonekano. Unaweza ramani ya anwani halisi ambazo mmap() hurejesha kwa anwani halisi kwa kuongeza swali kwa kiendeshi.
Simu ya aocl_mmd_shared_mem_alloc() kiolesura cha programu cha MMD (API) hujumuisha maswali yafuatayo:
a. mmap() chaguo la kukokotoa ambalo hutenga kumbukumbu na kurudisha anwani pepe.
b. Hoja ya ziada inayoweka ramani ya anwani pepe iliyorejeshwa kwa anwani halisi.
Simu ya aocl_mmd_shared_mem_alloc() MMD API kisha hurejesha anwani mbili.
—anwani halisi iliyorejeshwa ni anwani pepe, na anwani ya mahali halisi huenda kwa device_ptr_out.
Kumbuka: Dereva anaweza tu ramani ya anwani pepe ambazo mmap() chaguo la kukokotoa hurejesha kwa anwani halisi. Ukiomba anwani halisi ya kielekezi kingine chochote pepe, kiendeshi hurejesha thamani NULL.
Onyo: Intel FPGA SDK ya maktaba ya OpenCL inayotumika inadhania kuwa kumbukumbu iliyoshirikiwa ndiyo kumbukumbu ya kwanza iliyoorodheshwa katika board_spec.xml file. Kwa maneno mengine, anwani halisi ambayo kiendeshi cha Linux kernel hupata inakuwa anwani ya Avalon® ambayo kernel ya OpenCL hupitisha kwenye HPS SDRAM.
Kuhusiana na maktaba ya wakati wa kutekelezwa, tumia simu ya clCreateBuffer() kutenga kumbukumbu iliyoshirikiwa kama buffer ya kifaa kwa njia ifuatayo:
- Kwa lahaja ya ubao wa DDR mbili yenye kumbukumbu iliyoshirikiwa na isiyoshirikiwa, clCreateBuffer() hutenga kumbukumbu iliyoshirikiwa ikiwa utabainisha bendera ya CL_MEM_USE_HOST_PTR. Kutumia bendera zingine husababisha clCreateBuffer() kutenga bafa katika kumbukumbu isiyoshirikiwa.
- Kwa kibadala cha ubao cha DDR kilicho na kumbukumbu iliyoshirikiwa pekee, clCreateBuffer() hutenga kumbukumbu iliyoshirikiwa bila kujali ni bendera ipi unayobainisha.
Kwa sasa, uwezo wa kutumia Linux wa 32-bit kwenye ARM CPU hudhibiti kiwango cha usaidizi wa kumbukumbu iliyoshirikiwa katika maktaba ya wakati wa utekelezaji wa SDK. Kwa maneno mengine, maktaba za wakati wa kukimbia zimeundwa kwa mazingira mengine (kwa mfanoample, x86_64 Linux au Windows 64-bit) hazitumii kumbukumbu iliyoshirikiwa.
C5soc haikutekeleza kumbukumbu tofauti tofauti ili kutofautisha kati ya kumbukumbu iliyoshirikiwa na isiyoshirikiwa kwa sababu zifuatazo:
1. Historia—Usaidizi wa kumbukumbu nyingi tofauti haukupatikana wakati usaidizi wa kumbukumbu ulioshirikiwa ulipoundwa awali.
2. Kiolesura cha sare—Kwa sababu OpenCL ni kiwango kilicho wazi, Intel hudumisha uthabiti kati ya wachuuzi wa mifumo tofauti ya kompyuta. Kwa hivyo, kiolesura sawa na usanifu wa wachuuzi wengine wa bodi hutumiwa kutenga na kutumia kumbukumbu iliyoshirikiwa.
1.4 Urekebishaji upya wa FPGA
Kwa SoC FPGAs, CPU inaweza kusanidi upya kitambaa kikuu cha FPGA bila kukatiza utendakazi wa CPU. Kizuizi cha maunzi cha Kidhibiti cha FPGA ambacho huzunguka HPS na FPGA ya msingi hufanya usanidi upya. Kiini cha Linux kinajumuisha kiendeshi kinachowezesha ufikiaji rahisi wa Kidhibiti cha FPGA.
- Kwa view hali ya msingi wa FPGA, omba amri ya hali ya paka /sys/class/fpga/fpga0/.
Intel FPGA SDK ya matumizi ya programu ya OpenCL inayopatikana na Jukwaa la Marejeleo la Cyclone V SoC Development Kit hutumia kiolesura hiki kupanga FPGA. Wakati wa kupanga upya msingi wa FPGA na CPU inayoendesha, matumizi ya programu hufanya kazi zifuatazo:
1. Kabla ya kupanga upya, zima madaraja yote ya mawasiliano kati ya FPGA na HPS, madaraja ya H2F na LH2F.
Washa upya madaraja haya baada ya upangaji upya kukamilika.
Tahadhari: Mfumo wa OpenCL hautumii daraja la FPGA-to-HPS (F2H). Rejelea sehemu ya Violesura vya HPS-FPGA katika Kitabu cha Kitabu cha Kifaa cha Cyclone V, Juzuu ya 3: Mwongozo wa Marejeleo wa Mfumo wa Kichakata Kigumu kwa maelezo zaidi.
2. Hakikisha kwamba kiungo kati ya FPGA na kidhibiti cha HPS DDR kimezimwa wakati wa kupanga upya.
3. Hakikisha kuwa FPGA inakatiza kwenye FPGA imezimwa wakati wa kupanga upya.
Pia, mjulishe dereva kukataa kukatizwa kwa FPGA wakati wa kupanga upya.
Angalia msimbo wa chanzo wa matumizi ya programu kwa maelezo juu ya utekelezaji halisi.
Onyo: Usibadilishe usanidi wa kidhibiti cha HPS DDR wakati CPU inafanya kazi.
Kufanya hivyo kunaweza kusababisha hitilafu mbaya ya mfumo kwa sababu unaweza kubadilisha usanidi wa kidhibiti cha DDR wakati kuna shughuli za kumbukumbu ambazo hazijakamilika kutoka kwa CPU. Hii ina maana kwamba wakati CPU inafanya kazi, huenda usipange upya msingi wa FPGA kwa picha inayotumia HPS DDR katika usanidi tofauti.
Kumbuka kwamba mfumo wa OpenCL, na muundo wa marejeleo wa Golden Hardware unaopatikana kwa Intel SoC FPGA Embedded Design Suite (EDS), huweka HPS DDR katika modi moja ya 256-bit.
Sehemu za mfumo wa CPU kama vile kitabiri cha tawi au kitangulizi cha jedwali la ukurasa kinaweza kutoa amri za DDR hata inapoonekana kuwa hakuna kitu kinachofanya kazi kwenye CPU.
Kwa hiyo, wakati wa boot ni wakati pekee salama wa kuweka usanidi wa mtawala wa HPS DDR.
Hii pia inamaanisha kuwa U-boot lazima iwe na binary mbichi file (.rbf) picha ya kupakiwa kwenye kumbukumbu. Vinginevyo, unaweza kuwa unawasha HPS DDR na milango ambayo haijatumika kwenye FPGA na kisha uwezekano wa kubadilisha usanidi wa mlango baadaye. Kwa sababu hii, kiendeshi cha kinu cha OpenCL Linux hakijumuishi tena mantiki inayohitajika ili kuweka usanidi wa kidhibiti cha HPS DDR.
Kifurushi cha SW3 cha mtandaoni (DIP) huwasha Kifurushi cha Ukuzaji cha Cylone V SoC kudhibiti muundo unaotarajiwa wa picha ya .rbf (yaani, iwe file imebanwa na/au imesimbwa kwa njia fiche). C5soc, na Muundo wa Marejeleo ya Vifaa vya Dhahabu unaopatikana kwa SoC EDS, unajumuisha picha za .rbf zilizobanwa lakini ambazo hazijasimbwa. Mipangilio ya swichi ya SW3 DIP iliyofafanuliwa katika Intel FPGA SDK ya OpenCL Cyclone V SoC Anza Guide inalingana na usanidi huu wa picha wa .rbf.
Viungo Vinavyohusiana
- Violesura vya HPS-FPGA
- Kusanidi Swichi za SW3
1.4.1 Maelezo ya Usanifu wa Mfumo wa FPGA
Usaidizi wa Mfumo wa Marejeleo wa Kifaa cha Kuendeleza cha Cyclone V SoC unatokana na Mfumo wa Marejeleo wa Stratix® V (s5_ref), unaopatikana kwa Intel FPGA SDK ya OpenCL.
Shirika la jumla la mfumo wa c5soc Qsys na kiendeshi cha kernel ni sawa na zile zilizo katika s5_ref.
Vipengele vifuatavyo vya msingi vya FPGA ni sawa katika c5soc na s5_ref:
- Uzuiaji wa VERSION_ID
- Utaratibu wa kupumzika
- Mgawanyiko wa benki ya kumbukumbu
- Kiolesura cha snoop cha akiba
- Saa ya Kernel
- Vizuizi vya udhibiti wa ufikiaji wa rejista (CRA).
1.5 Kujenga Picha ya Kadi ya SD
Kwa sababu Cyclone V SoC FPGA ni mfumo kamili kwenye chip, una jukumu la kutoa ufafanuzi kamili wa mfumo. Intel inapendekeza kwamba uiwasilishe kwa namna ya picha ya kadi ya SD flash. Intel FPGA SDK ya mtumiaji wa OpenCL inaweza tu kuandika picha kwenye kadi ndogo ya SD flash na bodi ya SoC FPGA iko tayari kutumika.
Kurekebisha Picha ya Kadi ya Flash ya SD iliyopo kwenye ukurasa wa 13
Intel inapendekeza kwamba urekebishe tu picha inayopatikana na Jukwaa la Marejeleo la Cyclone V SoC Development Kit. Pia una chaguo la kuunda picha mpya ya kadi ya SD flash.
Kuunda Picha ya SD Flash Card kwenye ukurasa wa 14
Pia una chaguo la kuunda picha mpya ya kadi ya SD flash.
1.5.1 Kurekebisha Picha ya Kadi ya SD Iliyopo
Intel inapendekeza kwamba urekebishe tu picha inayopatikana na Cyclone V SoC
Jukwaa la Marejeleo la Kifurushi cha Maendeleo. Pia una chaguo la kuunda picha mpya ya kadi ya SD flash.
Picha ya c5soc linux_sd_card_image.tgz file inapatikana katika saraka ya ALTERAOCLSDKROOT/board/c5soc, ambapo ALTERAOCLSDKROOT inaelekeza kwenye njia ya Intel FPGA SDK kwa saraka ya usakinishaji ya OpenCL.
Tahadhari: Ili kurekebisha picha ya kadi ya SD flash, lazima uwe na haki za mizizi au sudo.
- Ili kutenganisha $ALTERAOCLSDKROOT/board/c5soc/linux_sd_card_image.tgz file, endesha amri ya tar xvfzlinux_sd_card_image.tgz.
- Unganisha hello_world OpenCL examptengeneza kwa kutumia usaidizi wa Mfumo Maalum. Badilisha jina la .rbf file ambayo Intel FPGA SDK ya OpenCL Offline Compiler inazalisha kama opencl.rbf, na kuiweka kwenye kizigeu cha fat32 ndani ya picha ya kadi ya SD flash.
Unaweza kupakua hello_world exampmuundo kutoka kwa Ubunifu wa OpenCL Exampukurasa kwenye Altera webtovuti. - Weka .rbf file kwenye kizigeu cha fat32 cha picha ya kadi ya flash.
Tahadhari: Sehemu ya fat32 lazima iwe na zImage zote mbili file na .rbf file. Bila .rbf file, hitilafu mbaya itatokea unapoingiza dereva. - Baada ya kuunda picha ya kadi ya SD, iandike kwa kadi ndogo ya SD kwa kutumia amri ifuatayo: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
- Ili kujaribu picha ya kadi yako ya SD flash, fanya kazi zifuatazo:
a. Ingiza kadi ndogo ya SD flash kwenye bodi ya SoC FPGA.
b. Washa ubao.
c. Omba amri ya matumizi ya utambuzi wa aocl.
1.5.2 Kuunda Picha ya SD Flash Card
Pia una chaguo la kuunda picha mpya ya kadi ya SD flash. Maagizo ya jumla juu ya kujenga picha mpya ya kadi ya SD flash na kujenga upya picha iliyopo ya kadi ya SD yanapatikana kwenye ukurasa wa GSRD v14.0.2 - SD Card wa RocketBoards.org webtovuti.
Hatua zilizo hapa chini zinaelezea utaratibu wa kuunda picha ya linux_sd_card_image.tgz kutoka kwa Usanifu wa Marejeleo ya Mfumo wa Dhahabu (GSRD) picha ya kadi ya flash ya SD:
Kumbuka:
Ili kuunda picha kutoka kwa picha ya c5soc, fanya kazi zote zinazotumika zilizoainishwa katika utaratibu huu.
- Pakua na upakue toleo la 14.0 la kadi ya flash ya GSRD SD kutoka Rocketboards.org.
- Weka mlima file meza ya mgao (fat32) na kupanuliwa file mfumo (ext3) katika picha hii kama vifaa vya kurudi nyuma. Ili kuweka kizigeu, fanya hatua zifuatazo:
a. Amua mwanzo wa byte wa kizigeu ndani ya picha kwa kuvuta /sbin/fdisk -lu image_file amri.
Kwa mfanoample, nambari ya kizigeu 1 ya aina ya W95 FAT ina kizuizi cha 2121728. Kwa byte 512 kwa kila block, byte kukabiliana ni 512 bytes x 2121728 = 1086324736 bytes.
b. Tambua kifaa cha kitanzi kisicholipishwa (kwa mfanoample, /dev/loop0) kwa kuandika losetup -f amri.
c. Kwa kudhani /dev/loop0 ndio kifaa cha bure cha kitanzi, toa picha ya kadi yako ya flash kwa kifaa cha kuzuia kitanzi kwa kualika kupoteza /dev/loop0 image_file -0 1086324736 amri.
d. Panda kifaa cha kitanzi kwa kualika mlima /dev/loop0 /media/disk1 amri.
Ndani ya picha file, /media/disk1 sasa ni kizigeu cha fat32 kilichowekwa.
e. Rudia hatua a hadi d kwa kizigeu cha ext3. - Pakua toleo la Cyclone V SoC FPGA la Intel FPGA Runtime Environment kwa kifurushi cha OpenCL kutoka kwa Kituo cha Upakuaji kwenye Altera. webtovuti.
a. Bofya kitufe cha Pakua kando ya toleo la programu ya Quartus Prime.
b. Bainisha toleo la toleo, mfumo wa uendeshaji, na mbinu ya upakuaji.
c. Bofya kichupo cha Programu ya Ziada, na uchague kupakua Intel FPGA
Mazingira ya Runtime kwa OpenCL Linux Cyclone V SoC TGZ.
d. Baada ya kupakua aocl-rte- .arm32.tgz file, ifungue kwa
saraka ambayo unamiliki. - Weka aocl-rte- ambayo haijapakiwa .arm32 saraka kwenye /home/root/opencl_arm32_rte saraka kwenye sehemu ya ext3 ya picha file.
- Futa folda ya maunzi ya Jukwaa lako Maalum, kisha uweke Jukwaa Maalum kwenye orodha ndogo ya ubao ya /home/root/ opencl_arm32_rte.
- Unda faili ya init_opencl.sh file katika saraka ya /home/mizizi yenye maudhui yafuatayo: hamisha ALTERAOCLSDKROOT=/home/root/opencl_arm32_rte export AOCL_BOARD_PACKAGE_ROOT=$ALTERAOCLSDKROOT/board/ export PATH=$ALTERAOCLSDKROOT/bin:$PATH export LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/host/arm32/lib:$LD_LIBRARY_PATH insmod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.ko
Mtumiaji wa SDK huendesha chanzo ./init_opencl.sh amri ya kupakia vigeu vya mazingira na kiendeshi cha kinu cha OpenCL Linux. - Ikiwa unahitaji kusasisha kipakiaji awali, DTS files, au kinu cha Linux, unahitaji kikusanyaji cha arm-linux-gnueabihf-gcc kutoka SoC EDS. Fuata maagizo yaliyoainishwa katika Mwongozo wa Mtumiaji wa Ubunifu wa Intel SoC FPGA Ili kupata programu, kuikusanya tena, na kusasisha husika. files kwenye kizigeu kilichowekwa mafuta32.
Tahadhari: Kuna uwezekano mkubwa kwamba unahitaji kusasisha kipakiaji mapema ikiwa Mfumo Maalumu wako una matumizi tofauti ya pini kuliko yale yaliyo katika c5soc.
Kumbuka: Ikiwa utakusanya tena kinu cha Linux, kusanya kiendeshi cha Linux kernel na chanzo sawa cha Linux kernel. files. Ikiwa kuna kutolingana kati ya kiendeshi cha Linux kernel na kinu cha Linux, kiendeshi hakitapakia. Pia, lazima uwashe CMA.
Rejelea Kurudisha Kernel ya Linux kwa habari zaidi. - Unganisha hello_world OpenCL examptengeneza kwa kutumia usaidizi wa Mfumo Maalum. Badilisha jina la .rbf file ambayo Intel FPGA SDK ya OpenCL Offline Compiler inazalisha kama opencl.rbf, na kuiweka kwenye kizigeu cha fat32 ndani ya picha ya kadi ya SD flash.
Unaweza kupakua hello_world exampmuundo kutoka kwa Ubunifu wa OpenCL Exampukurasa kwenye Altera webtovuti.
9. Baada ya kuhifadhi yote muhimu files kwenye picha ya kadi ya flash, omba amri zifuatazo:
a. kusawazisha
b. ondoa /media/disk1
c. ondoa wapi ni jina la saraka unalotumia kuweka kizigeu cha ext3 katika 3 kwenye ukurasa wa 3 (kwa mfanoample, /media/disk2).
d. kupoteza -d /dev/loop0
e. kupoteza -d /dev/loop1 - Finyaza picha ya kadi ya SD flash kwa kuomba amri ifuatayo: tar cvfz .tgz linux_sd_card_picha
- Kutoa .tgz file ndani ya saraka ya mizizi ya Jukwaa lako Maalum.
- Ili kujaribu picha ya kadi yako ya SD flash, fanya kazi zifuatazo:
a. Andika picha inayotokana ambayo haijabanwa kwenye kadi ndogo ya SD flash.
b. Ingiza kadi ndogo ya SD flash kwenye bodi ya SoC FPGA.
c. Washa ubao.
d. Omba amri ya matumizi ya utambuzi wa aocl.
Viungo Vinavyohusiana
- Mwongozo wa Mtumiaji wa Ubunifu wa Intel SoC FPGA Iliyopachikwa
- OpenCL Design Exampukurasa kwenye Altera webtovuti
- Kurudisha Kernel ya Linux kwenye ukurasa wa 16
Ili kuwezesha CMA, lazima kwanza ukusanye tena kinu cha Linux. - Kuuliza Jina la Kifaa cha Bodi yako ya FPGA (uchunguzi)
1.6 Kukusanya Kernel ya Linux kwa Cyclone V SoC FPGA
Kabla ya kuendesha programu za OpenCL kwenye ubao wa Cyclone V SoC FPGA, lazima uunde chanzo cha kinu cha Linux, na ukusanye na usakinishe kiendeshi cha OpenCL Linux kernel.
- Kurudisha Kernel ya Linux kwenye ukurasa wa 16
Ili kuwezesha CMA, lazima kwanza ukusanye tena kinu cha Linux. - Kukusanya na Kusakinisha OpenCL Linux Kernel Driver kwenye ukurasa wa 17 Kusanya kiendeshi cha kokwa cha OpenCL Linux dhidi ya chanzo cha kernel kilichokusanywa.
1.6.1 Kurudisha Kernel ya Linux
Ili kuwezesha CMA, lazima kwanza ukusanye tena kinu cha Linux.
- Bofya kiungo cha GSRD v14.0 - Kutunga Linux kwenye ukurasa wa Rasilimali wa RocketBoards.org webtovuti ya kufikia maagizo ya kupakua na kujenga upya msimbo wa chanzo wa Linux kernel.
Kwa matumizi na ™ Intel FPGA SDK ya OpenCL, taja socfpga-3.13-rel14.0 kama . - Kumbuka: Mchakato wa ujenzi huunda arch/arm/configs/socfpga_defconfig file. Hii file inabainisha mipangilio ya usanidi chaguo-msingi wa socfpga.
Ongeza mistari ifuatayo chini ya arch/arm/configs/socfpga_defconfig file.
CONFIG_MEMORY_ISOLATION=y
CONFIG_CMA=y
CONFIG_DMA_CMA=y
CONFIG_CMA_DEBUG=y
CONFIG_CMA_SIZE_MBYTES=512
CONFIG_CMA_SIZE_SEL_MBYTES=y
CONFIG_CMA_ALIGNMENT=8
CONFIG_CMA_AREAS=7
Thamani ya usanidi ya CONFIG_CMA_SIZE_MBYTES huweka kikomo cha juu kwenye jumla ya idadi ya kumbukumbu inayoambatana inayopatikana. Unaweza kuongeza thamani hii ikiwa unahitaji kumbukumbu zaidi. - Tahadhari: Jumla ya kiasi cha kumbukumbu inayopatikana kwa kichakataji cha ARM kwenye ubao wa SoC FPGA ni GB 1. Intel haipendekezi uweke kidhibiti cha CMA karibu na GB 1.
- Endesha make mrproper amri ili kusafisha usanidi wa sasa.
- Endesha make ARCH=arm socfpga_deconfig amri.
ARCH=arm inaonyesha kuwa unataka kusanidi usanifu wa ARM.
socfpga_defconfig inaonyesha kuwa unataka kutumia usanidi chaguo-msingi wa socfpga. - Tekeleza amri ya kuuza nje CROSS_COMPILE=arm-linux-gnueabihf-.
Amri hii huweka utofauti wa mazingira CROSS_COMPILE ili kubainisha kiambishi awali cha mnyororo wa zana unaotakikana. - Endesha make ARCH=arm zImage amri. Picha inayotokana inapatikana kwenye arch/arm/boot/zImage file.
- Weka zImage file kwenye kizigeu cha fat32 cha picha ya kadi ya flash. Kwa maagizo ya kina, rejelea Mwongozo wa Mtumiaji wa Cyclone V SoC FPGA mahususi wa GSRD kwenye Rocketboards.org.
- Kumbuka: Ili kuingiza kiendeshi cha OpenCL Linux kwa usahihi, pakia kwanza SDKgenerated.rbf file kwenye FPGA.
Ili kuunda .rbf file, kusanya muundo wa zamani wa SDKample pamoja na Mfumo wa Marejeleo wa Kifaa cha Kuendeleza cha Cyclone V SoC kama Jukwaa Maalum linalolengwa.
9. Weka .rbf file kwenye kizigeu cha fat32 cha picha ya kadi ya flash.
Makini: Sehemu ya fat32 lazima iwe na zImage zote mbili file na .rbf file. Bila .rbf file, hitilafu mbaya itatokea unapoingiza dereva. - Ingiza kadi ndogo ya SD iliyoratibiwa, ambayo ina picha ya kadi ya SD uliyorekebisha au kuunda awali, kwenye Kifaa cha Kuendeleza cha Cyclone V SoC kisha uwashe bodi ya SoC FPGA.
- Thibitisha toleo la kinu cha Linux kilichosakinishwa kwa kuendesha uname -r amri.
- Ili kuthibitisha kuwa unawezesha CMA kwa mafanikio kwenye kernel, na bodi ya SoC FPGA ikiwa imewashwa, endesha amri ya grep init_cma /proc/kallsyms.
CMA imewashwa ikiwa pato sio tupu. - Ili kutumia kinu cha Linux kilichokusanywa tena na SDK, kusanya na usakinishe kiendesha Linux kernel.
Viungo Vinavyohusiana
- Miongozo ya Mtumiaji ya Ubunifu wa Marejeleo ya Mfumo wa Dhahabu (GSRD).
- Kujenga Picha ya SD Flash Card kwenye ukurasa wa 13
Kwa sababu Cyclone V SoC FPGA ni mfumo kamili kwenye chip, una jukumu la kutoa ufafanuzi kamili wa mfumo.
1.6.2 Kukusanya na Kusakinisha OpenCL Linux Kernel Driver
Kusanya kiendeshi cha OpenCL Linux kernel dhidi ya chanzo cha kernel kilichokusanywa.
Chanzo cha dereva kinapatikana katika toleo la Cyclone V SoC FPGA la Intel FPGA Runtime Environment kwa OpenCL. Kwa kuongeza, hakikisha kuwa umepakia Intel FPGA SDK kwa OpenCL-generated .rbf file kwenye FPGA ili kuzuia usakinishaji usio sahihi wa moduli ya Linux kernel.
- Pakua toleo la Cyclone V SoC FPGA la Intel FPGA Runtime Environment kwa kifurushi cha OpenCL kutoka kwa Kituo cha Upakuaji kwenye Altera. webtovuti.
a. Bofya kitufe cha Pakua kando ya toleo la programu ya Quartus Prime.
b. Bainisha toleo la toleo, mfumo wa uendeshaji, na mbinu ya upakuaji.
c. Bofya kichupo cha Programu ya Ziada, na uchague kupakua Intel FPGA
Mazingira ya Runtime kwa OpenCL Linux Cyclone V SoC TGZ.
d. Baada ya kupakua aocl-rte- .arm32.tgz file, ifungue kwa
saraka ambayo unamiliki.
Chanzo cha dereva kiko kwenye aocl-rte- .arm32/board/c5soc/ saraka ya kiendeshi. - Ili kukusanya tena kiendeshi cha OpenCL Linux kernel, weka thamani ya KDIR kwenye Make ya kiendeshifile kwa saraka iliyo na chanzo cha Linux kernel files.
- Tekeleza amri ya export CROSS_COMPILE=arm-linux-gnueabihf- ili kuonyesha kiambishi awali cha mnyororo wako wa zana.
- Endesha amri ya kufanya safi.
- Endesha tengeneza amri kuunda faili ya aclsoc_drv.ko file.
- Hamisha saraka ya opencl_arm32_rte kwenye ubao wa Cyclone V SoC FPGA.
Kuendesha scp -r mzizi @ anwani-yako: amri huweka mazingira ya wakati wa kukimbia kwenye/home/root directory. - Tekeleza hati ya init_opencl.sh uliyounda wakati wa kuunda kadi ya SD.
- Omba amri ya matumizi ya utambuzi wa aocl. Huduma ya utambuzi itarudisha matokeo baada ya kutekeleza init_opencl.sh kwa mafanikio.
1.7 Masuala Yanayojulikana
Kwa sasa, kuna vikwazo fulani kwa matumizi ya Intel FPGA SDK kwa OpenCL na Jukwaa la Marejeleo la Cyclone V SoC Development Kit.
- Huwezi kubatilisha majina ya muuzaji na ubao yaliyoripotiwa na mifuatano ya CL_DEVICE_VENDOR na CL_DEVICE_NAME ya simu ya clGetDeviceInfo().
- Ikiwa seva pangishi itatenga kumbukumbu ya mara kwa mara katika mfumo wa DDR ulioshirikiwa (yaani, HPS DDR) na ikarekebisha kumbukumbu ya mara kwa mara baada ya utekelezaji wa kernel, data iliyo kwenye kumbukumbu inaweza kupitwa na wakati. Suala hili linatokea kwa sababu msingi wa FPGA hauwezi kuchungulia shughuli za CPU-to-HPS DDR.
Ili kuzuia utekelezaji wa kernel unaofuata kutoka kwa kupata data iliyopitwa na wakati, tumia moja ya suluhisho zifuatazo:
• Usirekebishe kumbukumbu ya mara kwa mara baada ya kuanzishwa kwake.
• Iwapo unahitaji seti nyingi __ za data za mara kwa mara, unda akiba nyingi za kumbukumbu zisizobadilika.
• Iwapo inapatikana, tenga kumbukumbu isiyobadilika katika FPGA DDR kwenye ubao wako wa kuongeza kasi. - Huduma ya SDK kwenye ARM inasaidia programu na kutambua amri za matumizi pekee.
Amri za matumizi ya kuwaka, kusakinisha na kusanidua hazitumiki kwa Kifurushi cha Maendeleo cha Cyclone V SoC kwa sababu zifuatazo:
a. Huduma ya kusakinisha inabidi ikusanye kiendeshi cha kinu cha aclsoc_drv cha Linux na kuiwezesha kwenye SoC FPGA. Mashine ya maendeleo inapaswa kufanya mkusanyiko; hata hivyo, tayari ina vyanzo vya Linux kernel kwa SoC FPGA. Vyanzo vya Linux kernel kwa mashine ya ukuzaji ni tofauti na vile vya SoC FPGA. Eneo la vyanzo vya Linux kernel kwa SoC FPGA kuna uwezekano halijulikani kwa mtumiaji wa SDK. Vile vile, matumizi ya kusanidua pia hayapatikani kwa Kifaa cha Maendeleo cha Cyclone V SoC.
Pia, kuwasilisha aclsoc_drv kwa bodi ya SoC ni changamoto kwa sababu usambazaji chaguomsingi wa Cyclone V SoC Development Kit hauna kernel ya Linux ni pamoja na. files au mkusanyaji wa Mkusanyaji wa GNU (GCC).
b. Huduma ya flash inahitaji kuweka .rbf file ya muundo wa OpenCL kwenye kizigeu cha FAT32 cha kadi ndogo ya SD flash. Kwa sasa, kizigeu hiki hakipachikiwi wakati mtumiaji wa SDK anaweka nguvu kwenye ubao. Kwa hiyo, njia bora ya kusasisha kizigeu ni kutumia msomaji wa kadi ya flash na mashine ya maendeleo. - Wakati wa kubadilisha kati ya Intel FPGA SDK kwa OpenCL Offline Compiler inayoweza kutekelezeka files (.aocx) ambazo zinalingana na vibadala tofauti vya bodi (yaani, c5soc na c5soc_sharedonly), lazima utumie matumizi ya programu ya SDK kupakia .aocx file kwa lahaja mpya ya bodi kwa mara ya kwanza. Ukiendesha programu tumizi kwa kutumia kibadala kipya cha ubao lakini FPGA ina picha kutoka kwa kibadala kingine cha ubao, hitilafu mbaya inaweza kutokea.
- The .qxp file haijumuishi kazi za kizigeu cha kiolesura kwa sababu programu ya Quartus Prime mara kwa mara inakidhi mahitaji ya muda ya kizigeu hiki.
- Unapowasha ubao, anwani yake ya udhibiti wa ufikiaji wa media (MAC) imewekwa kwa nambari isiyo ya kawaida. Ikiwa sera yako ya LAN hairuhusu tabia hii, weka anwani ya MAC kwa kutekeleza kazi zifuatazo:
a. Wakati wa kuwasha U-Boot, bonyeza kitufe chochote ili kuingiza haraka ya amri ya U-Boot.
b. Andika setenv ethaddr 00:07:ed:00:00:03 kwa haraka ya amri.
Unaweza kuchagua anwani yoyote ya MAC.
c. Andika amri ya saveenv.
d. Washa upya ubao.
1.8 Historia ya Marekebisho ya Hati
Jedwali 1.
Historia ya Marekebisho ya Hati ya Intel FPGA SDK ya OpenCL Cyclone V SoC
Mwongozo wa Usambazaji wa Jukwaa la Marejeleo ya Kit
Tarehe | Toleo | Mabadiliko |
Mei-17 | 2017.05.08 | •Kutolewa kwa matengenezo. |
Oktoba 2016 | 2016.10.31 | •Alibadilisha Altera SDK ya OpenCL kuwa Intel FPGA SDK ya OpenCL. •Kikusanyaji cha Altera cha Nje ya Mtandao kimepewa jina upya na kuwa Intel FPGA SDK kwa Kikusanyaji cha OpenCL cha Nje ya Mtandao. |
Mei-16 | 2016.05.02 | •Maelekezo yaliyorekebishwa kuhusu kujenga na kurekebisha taswira ya kadi ya SD flash. •Maelekezo yaliyorekebishwa kuhusu kurejesha kernel ya Linux na kiendeshi cha OpenCL Linux kernel. |
Novemba-15 | 2015.11.02 | •Kutolewa kwa matengenezo, na kubadilisha matukio ya Quartus II hadi Quartus Prime. |
Mei-15 | 15.0.0 | •Katika Uwekaji Upya wa FPGA, agizo liliondolewa ili kupanga upya msingi wa FPGA na . rbf picha kwa kukaribisha paka filejina>. rbf > /dev/ fpga0 amri kwa sababu njia hii haifai. |
Desemba-14 | 14.1.0 | •Ilibadilisha hati kuwa Mwongozo wa Usambazaji wa Mfumo wa Marejeleo wa Mfumo wa Altera Cyclone V SoC. •Ilisasisha matumizi ya kupanga upya kwa programu ya aoclfilejina>.aocx amri ya matumizi. •Ilisasisha matumizi ya uchunguzi kwa utambuzi wa aocl na utambuzi wa aocl amri ya matumizi. •Ilisasisha utaratibu katika Sehemu ya Kuhamisha Jukwaa la Marejeleo kwenye sehemu ya Bodi Yako ya SoC ili kujumuisha maagizo ya kuhamisha na kurekebisha kizigeu cha bodi ya c5soc ili kuunda kizigeu kisicho na wakati kwa mtiririko uliohakikishwa wa kufungwa kwa wakati. •Imeingiza mada ya Kusasisha Mfumo wa Marejeleo Uliosambazwa ili kubainisha taratibu za kazi zifuatazo: 1.Ukiondoa kizuizi cha mfumo wa kichakata kigumu (HPS) kwenye kizigeu cha ubao 2.Kusasisha picha ya kadi ya SD flash •Ilisasisha sehemu ya Kujenga Kadi ya SD Flash Card. Inapendekezwa kwa kutumia toleo la 14.0 la picha ya Muundo wa Marejeleo ya Mfumo wa Dhahabu (GSRD) kama mahali pa kuanzia badala ya picha inayopatikana kwenye SoC Embedded Design Suite (EDS). •Ilisasisha sehemu ya Kupendekeza tena Kernel ya Linux na sehemu ya Kiendeshi cha OpenCL Linux Kernel: 1.Maelekezo yaliyoongezwa ili kuweka kigezo cha CROSS COMPILE. 2.Imebadilisha amri unayoendesha ili kuthibitisha kuwa CMA imewezeshwa kwa mafanikio. |
Julai-14 | 14.0.0 | •Kutolewa kwa Awali. |
Nyaraka / Rasilimali
![]() |
Intel FPGA SDK ya OpenCL [pdf] Mwongozo wa Mtumiaji FPGA SDK ya OpenCL, FPGA SDK, SDK ya OpenCL, SDK |