Nyiptakeun Sistem Mémori Hétérogén dina FPGA SDK pikeun Platform Adat OpenCL
parentah
Nyiptakeun Sistem Mémori Hetérogen dina Intel® FPGA SDK pikeun Platform Adat OpenCL
Palaksanaan mémori hétérogén dina Platform Adat ngamungkinkeun bandwidth antarmuka mémori éksternal (EMIF) sareng aksés mémori anu langkung ageung sareng langkung gancang. Kombinasi aksés memori hétérogén jeung hiji dioptimalkeun
OpenCL ™ (1) kernel tiasa nyababkeun perbaikan kinerja anu signifikan pikeun sistem OpenCL anjeun.
Catetan aplikasi ieu nyayogikeun pituduh pikeun nyiptakeun sistem mémori hétérogén dina Platform Adat pikeun dianggo sareng Intel® FPGA SDK pikeun OpenCL (2). Intel nganggap yén anjeun mangrupikeun desainer FPGA anu ngalaman anu ngembangkeun Platform Adat anu ngandung sistem mémori hétérogén.
Saacanna nyieun sistem memori hétérogén, familiarize diri jeung Intel FPGA SDK pikeun dokumén OpenCL dieusian di handap.
Émbaran patali
- Intel FPGA SDK pikeun OpenCL Programming Guide
- Intel FPGA SDK pikeun OpenCL Best Practices Guide
- Intel FPGA SDK pikeun OpenCL Arria 10 GX FPGA Development Kit Reference Platform Porting Guide
1.1. Verifikasi Fungsionalitas Dewan FPGA sareng Antarmuka EMIF
Verify unggal panganteur memori bebas lajeng instantiate Platform Adat anjeun ngagunakeun memori global.
- Verify unggal panganteur memori ngagunakeun desain hardware anu bisa nguji speed jeung stabilitas unggal panganteur.
- Instantiate Platform Adat anjeun nganggo mémori global.
- Pikeun example, lamun boga tilu interfaces DDR, salah sahijina kudu dipetakeun salaku memori hétérogén. Dina hal ieu, pariksa pungsionalitas tumpukan OpenCL kalawan unggal panganteur DDR mandiri.
OpenCL jeung logo OpenCL mangrupakeun mérek dagang Apple Inc. dipaké ku idin ti Khronos Group™ . - Intel FPGA SDK pikeun OpenCL didasarkeun kana spésifikasi Khronos anu diterbitkeun, sareng parantos lulus Prosés Uji Konformasi Khronos. Status conformance ayeuna bisa kapanggih di www.khronos.org/conformance.
- Pikeun example, lamun boga tilu interfaces DDR, salah sahijina kudu dipetakeun salaku memori hétérogén. Dina hal ieu, pariksa pungsionalitas tumpukan OpenCL kalawan unggal panganteur DDR mandiri.
Intel Corporation. Sadaya hak disimpen. Intel, logo Intel, sareng merek Intel sanés mangrupikeun mérek dagang Intel Corporation atanapi anak perusahaanna. Intel ngajamin kinerja produk FPGA sareng semikonduktor na kana spésifikasi ayeuna saluyu sareng garansi standar Intel, tapi ngagaduhan hak pikeun ngarobih naon waé produk sareng jasa iraha waé tanpa aya bewara. Intel henteu nanggung tanggung jawab atanapi tanggung jawab anu timbul tina aplikasi atanapi pamakean inpormasi, produk, atanapi jasa anu dijelaskeun di dieu iwal ti dinyatakeun sapuk sacara tinulis ku Intel. Konsumén Intel disarankan pikeun ménta versi panganyarna tina spésifikasi alat sateuacan ngandelkeun inpormasi anu diterbitkeun sareng sateuacan nempatkeun pesenan produk atanapi jasa. *Ngaran sareng merek sanésna tiasa diklaim salaku hak milik batur.
ISO 9001: 2015 didaptarkeun
Alternatipna, lamun boga dua interfaces DDR na hiji quad data rate (QDR) panganteur, pariksa pungsionalitas tumpukan OpenCL tina dua interfaces DDR jeung panganteur QDR bebas.
Intel nyarankeun yén anjeun nganggo PCI Express® - (PCIe® -) atanapi desain ekslusif EMIF pikeun nguji antarmuka mémori anjeun. Saatos anjeun pariksa yén unggal antarmuka mémori fungsional sareng yén desain OpenCL anjeun tiasa dianggo sareng sawaréh antarmuka mémori, teraskeun.
pikeun nyieun sistem memori hétérogén fungsi pinuh.
1.2. Ngaropéa board_spec.xml File
Robah board_spec.xml file pikeun nangtukeun jenis sistem memori hétérogén nu sadia pikeun kernels OpenCL.
Salila kompilasi kernel, Intel FPGA SDK pikeun OpenCL Offline Compiler napelkeun argumen kernel kana memori dumasar kana argumen lokasi panyangga nu Anjeun tangtukeun.
1. Kotektak ka board_spec.xml file dina diréktori hardware tina Platform Adat Anjeun.
2. Buka board_spec.xml file dina pangropéa téksu sareng modifikasi XML sasuai.
Pikeun example, lamun sistem hardware anjeun boga dua memori DDR sakumaha standar globalmemory na dua bank QDR nu model sakumaha memori hétérogén, ngaropéa bagian memori board_spec.xml file pikeun nyarupaan handap:
1.3. Nyetél Sababaraha Pembagi Mémori di Qsys
Ayeuna, OpenCL Memory Bank Divider dina desain Qsys henteu ngadukung nomer non-power-of-2 bank memori, anu sanés watesan pikeun konfigurasi khas. Sanajan kitu, aya skenario dimana non-daya-of-2 Jumlah interfaces memori diperlukeun. Pikeun nampung non-power-of-2 jumlah interfaces memori, make sababaraha OpenCL Memory Bank Dividers pikeun nyieun sistem memori hétérogén jeung non-kakuatan-of-2 jumlah bank memori. Anjeun kudu nyieun sababaraha OpenCL Memory Bank Dividers mun anjeun boga sistem memori hétérogén leres. Mertimbangkeun sistem kalawan hiji panganteur memori DDR na hiji panganteur memori QDR. Kusabab dua bank boga topologies memori béda, anjeun teu bisa ngagabungkeun aranjeunna dina hiji mémori global tunggal.
Angka 1. Diagram Blok tina Sistem Mémori Hétérogén Tilu Bank
Sistim memori hétérogén ieu ngandung dua interfaces memori DDR jeung hiji panganteur memori QDR.Upami Anjeun keur make vérsi 16.0, 16.0.1, atawa 16.0.2 tina software Intel Quartus® Prime jeung Altera SDK pikeun OpenCL, OpenCL Memory Bank Divider salah nanganan bursts memori sakuliah wates alamat. Pikeun ngungkulan masalah ieu dipikawanoh, tambahkeun jembatan pipa kalawan ukuran burst 1 tur sambungkeun master Avalon ®Memory-dipetakeun (Avalon-MM) na ka port budak OpenCL Memory Bank divider.
Catetan:
Masalah anu dipikanyaho ieu dibenerkeun dina parangkat lunak Intel Quartus Prime sareng Intel FPGA SDK pikeun versi OpenCL 16.1.
Gambar 2. Diagram Blok Sistem Mémori Hétérogén Tilu Bank sareng Sasak Pipa 1.4. Ngaropéa Program Boardtest jeung Kode Host pikeun Solusi Mémori Hétérogén Anjeun
Anggo kernel boardtest.cl anu hadir sareng Intel FPGA SDK pikeun OpenCL Custom Platform Toolkit pikeun nguji fungsionalitas sareng kinerja Platform Adat anjeun.
Program boardtest mangrupikeun kernel OpenCL anu ngamungkinkeun anjeun nguji bandwidth host-to-device, bandwidth memori, sareng fungsionalitas umum Platform Custom anjeun.
- Kotektak ka / dewan / custom_platform_toolkit / tés / diréktori boardtest.
- Buka boardtest.cl file dina pangropéa téksu jeung nangtukeun lokasi panyangga ka unggal argumen memori global.
Pikeun example:
__kernel kosong
mem_stream (__global__attribute__((buffer_location("DDR"))) uint *src, __global __attribute__((buffer_location("QDR"))) uint *dst, uint arg, uint arg2)
Di dieu, uint *src ditugaskeun ka memori DDR, sarta uint *dst ditugaskeun ka memori QDR. The board_spec.xml file nangtukeun ciri duanana sistem memori. - Pikeun ngungkit solusi memori hétérogén anjeun dina sistem OpenCL anjeun, modifikasi kode host anjeun ku nambihan bandéra CL_MEM_HETEROGENEOUS_INTELFPGA kana telepon clCreateBuffer anjeun.
Pikeun example:
ddatain = clCreateBuffer(konteks, CL_MEM_READ_WRITE | memflags
CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof (unsigned) * vectorSize, NULL, & status);
Intel nyarankeun pisan yén anjeun nyetél lokasi panyangga salaku argumen kernel sateuacan nyerat panyangga. Nalika nganggo mémori global tunggal, anjeun tiasa nyerat panyangga sateuacan atanapi saatos ditugaskeun kana argumen kernel. Dina sistem mémori hétérogén, host netepkeun lokasi panyangga sateuacan nyerat panyangga. Kalayan kecap sanésna, host bakal nyauran fungsi clSetKernelArgument sateuacan nyauran fungsi clEnqueueWriteBuffer.
Dina kode host anjeun, nelepon clCreateBuffer, clSetKernelArg, sareng clEnqueueWriteBuffer dina urutan ieu:
ddatain = clCreateBuffer(konteks, CL_MEM_READ_WRITE | memflags |
CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof (unsigned) * vectorSize, NULL, & status);
… status = clSetKernelArg(kernel[k], 0, sizeof(cl_mem), (void*)&ddatain);
… status = clEnqueueWriteBuffer(antrian, ddatain, CL_FALSE, 0, sizeof(unsigned) * vectorSize,hdatain, 0, NULL, NULL);
ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file nampilkeun urutan anu sami tina sauran fungsi ieu. - Saatos Anjeun ngaropéa boardtest.cl file sareng kode host, kompilasi host sareng kode kernel sareng pariksa fungsionalitasna.
Nalika nyusun kode kernel anjeun, anjeun kedah nganonaktipkeun burst-interleaving sadaya sistem mémori ku ngalebetkeun -no-interleaving. pilihan dina paréntah aoc.
Émbaran patali
Nonaktipkeun Burst-Interleaving of Global Memory (–no-interleaving )
1.5. Verifikasi Fungsionalitas Mémori Héterogen Anjeun Sistim
Pikeun mastikeun yén sistem memori hétérogén berpungsi leres, unset bendera CL_CONTEXT_COMPILER_MODE_INTELFPGA dina kode host anjeun.
Dina sistem OpenCL kalawan memori homogen, Anjeun kudu pilihan pikeun ngeset CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 bandéra dina kode host anjeun pikeun nganonaktipkeun bacaan .aocx file jeung reprogramming tina FPGA. Nyetél CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 bandéra mangpaat nalika instantiating dewan anjeun pikeun pariksa pungsionalitas Platform Adat anjeun tanpa ngarancang lanté sarta nangtukeun wewengkon LogicLock™.
Kalayan sistem mémori hétérogén, lingkungan runtime kedah maca lokasi panyangga unggal panyangga, dijelaskeun dina .aocx file, pikeun pariksa pungsionalitas sistem memori. Nanging, anjeun panginten hoyong pariksa pungsionalitas Platform Adat anjeun tanpa ngalaksanakeun fitur ahir desain dewan, sapertos ngarancang rencana lantai sareng netepkeun wilayah LogicLock.
- Pastikeun yén bandéra CL_CONTEXT_COMPILER_MODE_INTELFPGA teu disetel dina kode host anjeun.
- Kotektak ka papan/ / sumber / host / diréktori mmd tina Platform Adat anjeun.
- Buka acl_pcie_device.cpp mémori-dipetakeun alat (MMD) file dina pangropéa téksu.
- Ngaropéa fungsi reprogram dina acl_pcie_device.cpp file ku nambahkeun mulang 0; garis, sakumaha ditémbongkeun di handap ieu:
int ACL_PCIE_DEVICE::reprogram(void *data, size_t data_size)
{
mulang 0;
// nganggap gagal
int reprogram_failed = 1;
// anggap euweuh rbf atanapi Hash di fpga.bin
int rbf_or_hash_not_provided = 1;
// anggap basa jeung impor révisi hashes teu cocog
int hash_mismatch = 1;
…
} - Recompile acl_pcie_device.cpp file.
- Pastikeun yén bandéra CL_CONTEXT_COMPILER_MODE_INTELFPGA tetep teu disetel.
Perhatosan: Saatos Anjeun nambahkeun balik 0; kana fungsi reprogram na recompile nu MMD file, lingkungan runtime bakal maca .aocx file sarta nangtukeun lokasi panyangga tapi moal reprogram FPGA. Anjeun kudu sacara manual cocog gambar FPGA kalawan .aocx file. Pikeun ngabalikeun kabiasaan ieu, cabut balik 0; ti fungsi reprogram na recompile nu MMD file.
1.6. Riwayat Révisi Dokumén
titimangsa | Vérsi | Parobahan |
Désémber-17 | 2017.12.01 | • Ngaganti ngaran CL_MEM_HETEROGENEOUS_ALTERA jadi CL_MEM_HETEROGENEOUS_INTELFPGA. |
Désémber-16 | 2016.12.13 | • Ngaganti ngaran CL_CONTEXT_COMPILER_MODE_ALTERA jadi CL_CONTEXT_COMPILER_MODE_INTELFPGA. |
Nyiptakeun Sistem Mémori Hetérogen dina Intel® FPGA SDK pikeun OpenCL
Platform custom
Kirim Eupan Balik
Vérsi online
Kirim Eupan Balik
ID: 683654
Vérsi: 2016.12.13
Dokumén / Sumberdaya
![]() |
intel Nyiptakeun Sistem Mémori Hétérogén dina FPGA SDK pikeun Platform Adat OpenCL [pdf] Parentah Nyiptakeun Sistem Mémori Hétérogén dina FPGA SDK pikeun Platform Adat OpenCL, Nyiptakeun Sistem Mémori Hétérogén, FPGA SDK pikeun Platform Adat OpenCL |