intel - logoMencipta Sistem Memori Heterogen dalam FPGA SDK untuk Platform Tersuai OpenCL
Arahan

Mencipta Sistem Memori Heterogen dalam Intel® FPGA SDK untuk Platform Tersuai OpenCL

Pelaksanaan memori heterogen dalam Platform Tersuai membolehkan lebih lebar jalur antara muka memori luaran (EMIF) serta akses memori yang lebih besar dan lebih pantas. Gabungan akses memori heterogen dengan dioptimumkan
Kernel OpenCL ™(1) boleh menghasilkan peningkatan prestasi yang ketara untuk sistem OpenCL anda.
Nota aplikasi ini menyediakan panduan untuk mencipta sistem memori heterogen dalam Platform Tersuai untuk digunakan dengan Intel® FPGA SDK untuk OpenCL(2). Intel menganggap bahawa anda adalah pereka FPGA berpengalaman yang sedang membangunkan Platform Tersuai yang mengandungi sistem memori heterogen.
Sebelum mencipta sistem memori heterogen, biasakan diri anda dengan Intel FPGA SDK untuk dokumen OpenCL yang dinyatakan di bawah.
Maklumat Berkaitan

  • Intel FPGA SDK untuk Panduan Pengaturcaraan OpenCL
  • Intel FPGA SDK untuk Panduan Amalan Terbaik OpenCL
  • Intel FPGA SDK untuk OpenCL Arria 10 GX FPGA Development Kit Panduan Pemindahan Platform Rujukan

1.1. Mengesahkan Kefungsian Papan FPGA dan Antara Muka EMIF

Sahkan setiap antara muka memori secara bebas dan kemudian nyatakan Platform Tersuai anda menggunakan memori global.

  1. Sahkan setiap antara muka memori menggunakan reka bentuk perkakasan yang boleh menguji kelajuan dan kestabilan setiap antara muka.
  2. Segerakan Platform Tersuai anda menggunakan memori global.
    1. Untuk exampOleh itu, jika anda mempunyai tiga antara muka DDR, salah satu daripadanya mesti dipetakan sebagai memori heterogen. Dalam kes ini, sahkan kefungsian timbunan OpenCL dengan setiap antara muka DDR secara bebas.
      OpenCL dan logo OpenCL ialah tanda dagangan Apple Inc. yang digunakan dengan kebenaran Khronos Group™ .
    2.  Intel FPGA SDK untuk OpenCL adalah berdasarkan Spesifikasi Khronos yang diterbitkan dan telah lulus Proses Ujian Pematuhan Khronos. Status pematuhan semasa boleh didapati di www.khronos.org/conformance.

Perbadanan Intel. Hak cipta terpelihara. Intel, logo Intel dan tanda Intel lain ialah tanda dagangan Intel Corporation atau anak syarikatnya. Intel menjamin prestasi produk FPGA dan semikonduktornya mengikut spesifikasi semasa menurut waranti standard Intel, tetapi berhak untuk membuat perubahan pada mana-mana produk dan perkhidmatan pada bila-bila masa tanpa notis. Intel tidak memikul tanggungjawab atau liabiliti yang timbul daripada aplikasi atau penggunaan mana-mana maklumat, produk atau perkhidmatan yang diterangkan di sini kecuali seperti yang dipersetujui secara bertulis oleh Intel. Pelanggan Intel dinasihatkan untuk mendapatkan versi terkini spesifikasi peranti sebelum bergantung pada sebarang maklumat yang diterbitkan dan sebelum membuat pesanan untuk produk atau perkhidmatan. *Nama dan jenama lain boleh dituntut sebagai hak milik orang lain.
ISO 9001:2015 Berdaftar
Sebagai alternatif, jika anda mempunyai dua antara muka DDR dan satu antara muka kadar data quad (QDR), sahkan kefungsian timbunan OpenCL bagi dua antara muka DDR dan antara muka QDR secara berasingan.
Intel mengesyorkan agar anda menggunakan reka bentuk PCI Express® – (PCIe® -) atau eksklusif EMIF untuk menguji antara muka memori anda. Selepas anda mengesahkan bahawa setiap antara muka memori berfungsi dan reka bentuk OpenCL anda berfungsi dengan subset antara muka memori, teruskan
untuk mencipta sistem ingatan heterogen yang berfungsi sepenuhnya. 
1.2. Mengubah suai board_spec.xml File
Ubah suai board_spec.xml file untuk menentukan jenis sistem memori heterogen yang tersedia untuk kernel OpenCL.
Semasa penyusunan kernel, Intel FPGA SDK untuk OpenCL Offline Compiler memberikan argumen kernel kepada memori berdasarkan hujah lokasi penimbal yang anda tentukan.
1. Semak imbas ke board_spec.xml file dalam direktori perkakasan Platform Tersuai anda.
2. Buka board_spec.xml file dalam editor teks dan ubah suai XML dengan sewajarnya.
Untuk exampOleh itu, jika sistem perkakasan anda mempunyai dua memori DDR sebagai memori global lalai dan dua bank QDR yang anda modelkan sebagai memori heterogen, ubah suai bahagian memori board_spec.xml file untuk menyerupai yang berikut:
















1.3. Menyediakan Berbilang Pembahagi Memori dalam Qsys
Pada masa ini, Pembahagi Bank Memori OpenCL dalam reka bentuk Qsys tidak menyokong bilangan bank memori bukan kuasa-2, yang bukan had untuk konfigurasi biasa. Walau bagaimanapun, terdapat senario di mana bilangan antara muka memori bukan kuasa-of-2 diperlukan. Untuk menampung antara muka memori bukan-kuasa-2, gunakan berbilang Pembahagi Bank Memori OpenCL untuk mencipta sistem memori heterogen dengan bilangan bank memori bukan kuasa-2. Anda mesti mencipta berbilang Pembahagi Bank Memori OpenCL apabila anda mempunyai sistem memori heterogen sebenar. Pertimbangkan sistem dengan satu antara muka memori DDR dan satu antara muka memori QDR. Oleh kerana kedua-dua bank mempunyai topologi memori yang berbeza, anda tidak boleh menggabungkannya di bawah satu memori global.
Rajah 1. Gambarajah Blok Sistem Memori Heterogen Tiga Bank
Sistem memori heterogen ini mengandungi dua antara muka memori DDR dan satu antara muka memori QDR.intel Mencipta Sistem Memori Heterogen dalam SDK FPGA untuk Platform Tersuai OpenCL - rajah 1Jika anda menggunakan versi 16.0, 16.0.1 atau 16.0.2 perisian Intel Quartus® Prime dan Altera SDK untuk OpenCL, OpenCL Memory Bank Divider secara tidak betul mengendalikan pecahan memori merentasi sempadan alamat. Untuk mengatasi isu yang diketahui ini, tambahkan jambatan saluran paip dengan saiz pecah 1 dan sambungkan induk Avalon ®Memory-Mapped (Avalon-MM) kepada port hamba OpenCL Memory Bank Divider.
Nota:
Isu yang diketahui ini dibetulkan dalam perisian Intel Quartus Prime dan Intel FPGA SDK untuk OpenCL versi 16.1.
Rajah 2. Gambarajah Blok Sistem Memori Heterogen Tiga Bank dengan Jambatan Saluran Paip intel Mencipta Sistem Memori Heterogen dalam SDK FPGA untuk Platform Tersuai OpenCL - rajah 21.4. Mengubah suai Program Ujian Papan dan Kod Hos untuk Penyelesaian Memori Heterogen Anda
Gunakan kernel boardtest.cl yang disertakan dengan Intel FPGA SDK untuk OpenCL Custom Platform Toolkit untuk menguji kefungsian dan prestasi Platform Tersuai anda.
Program ujian papan ialah kernel OpenCL yang membolehkan anda menguji lebar jalur hos ke peranti, lebar jalur memori dan kefungsian umum Platform Tersuai anda.

  1. Semak imbas ke /board/ custom_platform_toolkit/tests/boardtest direktori.
  2. Buka ujian papan.cl file dalam editor teks dan tetapkan lokasi penimbal kepada setiap hujah memori global.
    Untuk example:
    __kernel kosong
    mem_stream (__global__attribute__((buffer_location(“DDR”))) uint *src, __global __attribute__((buffer_location(“QDR”))) uint *dst, uint arg, uint arg2)
    Di sini, uint *src diperuntukkan kepada memori DDR, dan uint *dst diperuntukkan kepada memori QDR. Papan_spec.xml file menentukan ciri-ciri kedua-dua sistem ingatan.
  3. Untuk memanfaatkan penyelesaian memori heterogen anda dalam sistem OpenCL anda, ubah suai kod hos anda dengan menambahkan bendera CL_MEM_HETEROGENEOUS_INTELFPGA pada panggilan clCreateBuffer anda.
    Untuk example:
    ddatain = clCreateBuffer(konteks, CL_MEM_READ_WRITE | memflags
    CL_MEM_HETEROGENEOUS_INTELFPGA, saiz(tidak ditandatangani) * saiz vektor, NULL, &status);
    Intel amat mengesyorkan agar anda menetapkan lokasi penimbal sebagai hujah kernel sebelum menulis penimbal. Apabila menggunakan memori global tunggal, anda boleh menulis penimbal sama ada sebelum atau selepas memberikannya kepada hujah kernel. Dalam sistem ingatan heterogen, hos menetapkan lokasi penimbal sebelum menulis penimbal. Dengan kata lain, hos akan memanggil fungsi clSetKernelArgument sebelum memanggil fungsi clEnqueueWriteBuffer.
    Dalam kod hos anda, gunakan panggilan clCreateBuffer, clSetKernelArg dan clEnqueueWriteBuffer dalam susunan berikut:
    ddatain = clCreateBuffer(konteks, CL_MEM_READ_WRITE | memflags |
    CL_MEM_HETEROGENEOUS_INTELFPGA, saiz(tidak ditandatangani) * saiz vektor, NULL, &status);
    … status = clSetKernelArg(kernel[k], 0, sizeof(cl_mem), (void*)&ddatain);
    … status = clEnqueueWriteBuffer(queue, ddatain, CL_FALSE, 0, sizeof(unsigned) * vectorSize,hdatain, 0, NULL, NULL);
    ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file membentangkan susunan yang serupa bagi panggilan fungsi ini.
  4.  Selepas anda mengubah suai boardtest.cl file dan kod hos, susun kod hos dan kernel dan sahkan kefungsiannya.
    Apabila menyusun kod kernel anda, anda mesti melumpuhkan interleaving burst semua sistem memori dengan memasukkan –no-interleaving pilihan dalam arahan aoc.

Maklumat Berkaitan
Melumpuhkan Meletus-Interleaving Memori Global (–tiada interleaving )

1.5. Mengesahkan Kefungsian Memori Heterogen Anda Sistem
Untuk memastikan sistem memori heterogen berfungsi dengan betul, nyahset bendera CL_CONTEXT_COMPILER_MODE_INTELFPGA dalam kod hos anda.
Dalam sistem OpenCL dengan memori homogen, anda perlu memilih untuk menetapkan bendera CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 dalam kod hos anda untuk melumpuhkan bacaan .aocx file dan pengaturcaraan semula FPGA. Menetapkan bendera CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 adalah berguna apabila membuat instantiat papan anda untuk mengesahkan kefungsian Platform Tersuai anda tanpa mereka bentuk pelan lantai dan menentukan kawasan LogicLock™.
Dengan sistem memori heterogen, persekitaran masa jalan mesti membaca lokasi penimbal bagi setiap penimbal, yang diterangkan dalam .aocx file, untuk mengesahkan kefungsian sistem memori. Walau bagaimanapun, anda mungkin ingin mengesahkan kefungsian Platform Tersuai anda tanpa melaksanakan ciri akhir reka bentuk papan, seperti mereka bentuk pelan lantai dan menentukan kawasan LogicLock.

  1. Sahkan bahawa bendera CL_CONTEXT_COMPILER_MODE_INTELFPGA tidak ditetapkan dalam kod hos anda.
  2. Semak imbas ke papan/ /source/host/mmd direktori Platform Tersuai anda.
  3. Buka peranti dipetakan memori (MMD) acl_pcie_device.cpp file dalam penyunting teks.
  4.  Ubah suai fungsi program semula dalam acl_pcie_device.cpp file dengan menambah pulangan 0; baris, seperti yang ditunjukkan di bawah:
    int ACL_PCIE_DEVICE::program semula(void *data, size_t data_size)
    {
    pulangan 0;
    // menganggap kegagalan
    int reprogram_failed = 1;
    // anggap tiada rbf atau cincang dalam fpga.bin
    int rbf_or_hash_not_provided = 1;
    // menganggap cincang semakan asas dan import tidak sepadan
    int hash_mismatch = 1;

    }
  5. Susun semula acl_pcie_device.cpp file.
  6. Sahkan bahawa bendera CL_CONTEXT_COMPILER_MODE_INTELFPGA masih belum ditetapkan.
    Perhatian: Selepas anda menambah pulangan 0; kepada fungsi atur semula dan susun semula MMD file, persekitaran masa jalan akan membaca .aocx file dan tetapkan lokasi penimbal tetapi tidak akan memprogram semula FPGA. Anda mesti memadankan imej FPGA secara manual dengan .aocx file. Untuk membalikkan tingkah laku ini, alih keluar pulangan 0; daripada fungsi program semula dan susun semula MMD file.

1.6. Sejarah Semakan Dokumen

tarikh Versi Perubahan
17 Dis 2017.12.01 • Menjenamakan semula CL_MEM_HETEROGENEOUS_ALTERA kepada CL_MEM_HETEROGENEOUS_INTELFPGA.
16 Dis 2016.12.13 • Menjenamakan semula CL_CONTEXT_COMPILER_MODE_ALTERA kepada CL_CONTEXT_COMPILER_MODE_INTELFPGA.

intel - logoMencipta Sistem Memori Heterogen dalam Intel® FPGA SDK untuk OpenCL
Platform Tersuai
intel Mencipta Sistem Memori Heterogen dalam SDK FPGA untuk Platform Tersuai OpenCL - ikon 1 Hantar Maklum Balas
intel Mencipta Sistem Memori Heterogen dalam SDK FPGA untuk Platform Tersuai OpenCL - ikon Versi Dalam Talian
intel Mencipta Sistem Memori Heterogen dalam SDK FPGA untuk Platform Tersuai OpenCL - ikon 1 Hantar Maklum Balas
ID: 683654
Versi: 2016.12.13

Dokumen / Sumber

intel Mencipta Sistem Memori Heterogen dalam SDK FPGA untuk Platform Tersuai OpenCL [pdf] Arahan
Mencipta Sistem Memori Heterogen dalam FPGA SDK untuk Platform Tersuai OpenCL, Mencipta Sistem Memori Heterogen, SDK FPGA untuk Platform Tersuai OpenCL

Rujukan

Tinggalkan komen

Alamat e-mel anda tidak akan diterbitkan. Medan yang diperlukan ditanda *