intel - لوگوOpenCL ڪسٽم پليٽ فارمن لاءِ FPGA SDK ۾ Heterogeneous Memory Systems ٺاهڻ
هدايتون

OpenCL ڪسٽم پليٽ فارمن لاءِ Intel® FPGA SDK ۾ Heterogeneous Memory Systems ٺاهڻ

هڪ ڪسٽم پليٽ فارم ۾ هيٽروجنيئس ميموري جو نفاذ وڌيڪ خارجي ميموري انٽرفيس (EMIF) بينڊوڊٿ سان گڏوگڏ وڏي ۽ تيز ميموري رسائي جي اجازت ڏئي ٿو. هڪ اصلاحي سان heterogenous ياداشت جي رسائي جو ميلاپ
OpenCL ™(1) kernel توهان جي OpenCL سسٽم لاءِ اهم ڪارڪردگي بهتري آڻي سگھي ٿو.
هي ايپليڪيشن نوٽ هڪ گراهڪ پليٽ فارم ۾ مختلف ميموري سسٽم ٺاهڻ لاءِ هدايت فراهم ڪري ٿو Intel® FPGA SDK لاءِ OpenCL(2). Intel فرض ڪري ٿو ته توهان هڪ تجربيڪار FPGA ڊزائينر آهيو جيڪو ترقي ڪري رهيو آهي ڪسٽم پليٽ فارمز جنهن ۾ هيٽروجنيئس ميموري سسٽم شامل آهن.
هيٽروجنيئس ميموري سسٽم ٺاهڻ کان اڳ، هيٺ بيان ڪيل OpenCL دستاويزن لاءِ Intel FPGA SDK سان پاڻ کي واقف ڪريو.
لاڳاپيل معلومات

  • OpenCL پروگرامنگ گائيڊ لاءِ Intel FPGA SDK
  • Intel FPGA SDK لاءِ OpenCL بهترين طريقا گائيڊ
  • Intel FPGA SDK for OpenCL Arria 10 GX FPGA ڊولپمينٽ کٽ ريفرنس پليٽ فارم پورٽنگ گائيڊ

1.1. FPGA بورڊ ۽ EMIF انٽرفيس جي ڪارڪردگي جي تصديق ڪرڻ

هر ميموري انٽرفيس جي آزاديءَ سان تصديق ڪريو ۽ پوءِ گلوبل ميموري استعمال ڪندي پنهنجو ڪسٽم پليٽ فارم انسٽيٽيو ڪريو.

  1. هارڊويئر ڊيزائن استعمال ڪندي هر ميموري انٽرفيس جي تصديق ڪريو جيڪي هر انٽرفيس جي رفتار ۽ استحڪام کي جانچي سگهن ٿيون.
  2. گلوبل ميموري استعمال ڪندي پنھنجي ڪسٽم پليٽ فارم کي تيز ڪريو.
    1. مثال طورampلي، جيڪڏهن توهان وٽ ٽي ڊي ڊي آر انٽرفيس آهن، انهن مان هڪ کي هيٽروجنيئس ياداشت جي طور تي نقشو ڪيو وڃي. انهي صورت ۾، هر DDR انٽرفيس سان OpenCL اسٽيڪ جي ڪارڪردگي کي آزاد طور تي تصديق ڪريو.
      OpenCL ۽ OpenCL لوگو Apple Inc. جا ٽريڊ مارڪ آھن جيڪي Khronos Group™ جي اجازت سان استعمال ڪيا ويا آھن.
    2.  OpenCL لاءِ Intel FPGA SDK شايع ٿيل Khronos Specification تي ٻڌل آهي، ۽ Khronos Conformance Testing Process کي پاس ڪري چڪو آهي. موجوده مطابقت واري صورتحال تي ڳولي سگھجي ٿو www.khronos.org/conformance.

Intel Corporation. سڀ حق محفوظ آهن. Intel، Intel لوگو، ۽ ٻيا Intel نشان آھن Intel Corporation يا ان جي ماتحت ادارن جا ٽريڊ مارڪ. Intel وارنٽي ڏئي ٿو پنهنجي FPGA ۽ سيمڪنڊڪٽر پروڊڪٽس جي ڪارڪردگي کي موجوده وضاحتن مطابق Intel جي معياري وارنٽي مطابق، پر ڪنهن به وقت بغير اطلاع جي ڪنهن به پروڊڪٽس ۽ خدمتن ۾ تبديليون ڪرڻ جو حق محفوظ رکي ٿو. Intel هتي بيان ڪيل ڪنهن به معلومات، پراڊڪٽ، يا خدمت جي ايپليڪيشن يا استعمال مان پيدا ٿيندڙ ڪابه ذميواري يا ذميواري قبول نه ڪندو آهي سواءِ انٽيل طرفان لکڻ ۾ واضح طور تي اتفاق ڪيو ويو. Intel گراهڪن کي صلاح ڏني وئي آهي ته ڪنهن به شايع ٿيل معلومات تي ڀروسو ڪرڻ کان پهريان ۽ پروڊڪٽس يا خدمتن لاءِ آرڊر ڏيڻ کان پهريان ڊوائيس جي وضاحتن جو جديد نسخو حاصل ڪن. * ٻيا نالا ۽ برانڊ ٻين جي ملڪيت طور دعوي ڪري سگھن ٿا.
ISO 9001:2015 رجسٽر ٿيل
متبادل طور تي، جيڪڏهن توهان وٽ ٻه ڊي ڊي آر انٽرفيس آهن ۽ هڪ کواڊ ڊيٽا ريٽ (QDR) انٽرفيس، ٻن ڊي ڊي آر انٽرفيس جي اوپن سي ايل اسٽيڪ جي ڪارڪردگي جي تصديق ڪريو ۽ QDR انٽرفيس کي آزاد طور تي.
Intel سفارش ڪري ٿو ته توھان استعمال ڪريو PCI Express® - (PCIe® -) يا EMIF-خاص ڊيزائن پنھنجي ميموري انٽرفيس کي جانچڻ لاءِ. توهان جي تصديق ڪرڻ کان پوءِ ته هر ميموري انٽرفيس فنڪشنل آهي ۽ اهو ته توهان جو OpenCL ڊيزائن ميموري انٽرفيس جي سب سيٽ سان ڪم ڪري ٿو، اڳتي وڌو
هڪ مڪمل طور تي فنڪشنل heterogeneous ميموري سسٽم ٺاهڻ لاء. 
1.2. board_spec.xml کي تبديل ڪرڻ File
تبديل ڪريو board_spec.xml file هيٽروجنيئس ميموري سسٽم جي قسمن کي بيان ڪرڻ لاءِ جيڪي OpenCL ڪنلن وٽ موجود آهن.
ڪرنل جي تاليف جي دوران، اوپن سي ايل آف لائن ڪمپلر لاءِ Intel FPGA SDK ميموري لاءِ ڪرنل دليلن کي تفويض ڪري ٿو بفر جڳھ جي دليل جي بنياد تي جيڪو توھان بيان ڪيو آھي.
1. براؤز ڪريو board_spec.xml file توهان جي ڪسٽم پليٽ فارم جي هارڊويئر ڊاريڪٽري ۾.
2. board_spec.xml کوليو file ٽيڪسٽ ايڊيٽر ۾ ۽ ان مطابق XML کي تبديل ڪريو.
مثال طورampلي، جيڪڏهن توهان جي هارڊويئر سسٽم ۾ ٻه ڊي ڊي آر ياداشتون ڊفالٽ گلوبل ميموري طور آهن ۽ ٻه QDR بئنڪ جيڪي توهان هيٽروجنيئس ميموري طور ماڊل آهن، board_spec.xml جي ميموري حصن کي تبديل ڪريو. file هيٺ ڏنل مشابهت ڪرڻ لاء:
















1.3. Qsys ۾ ڪيترن ئي ميموري ورهائيندڙن کي ترتيب ڏيڻ
في الحال، اوپن سي ايل ميموري بئنڪ ورهائيندڙ Qsys ڊيزائن ۾ ميموري بئنڪ جي غير پاور-آف-2 نمبر کي سپورٽ نٿو ڪري، جيڪا عام ترتيبن لاءِ ڪا حد ناهي. بهرحال، اهڙا منظر آهن جتي غير طاقت-آف-2 نمبر ميموري انٽرفيس ضروري آهن. ميموري انٽرفيس جي نان پاور-آف-2 نمبر کي گڏ ڪرڻ لاءِ، ميموري بئنڪن جي نان پاور-آف-2 نمبر سان هيٽروجنيئس ميموري سسٽم ٺاهڻ لاءِ ڪيترن ئي OpenCL ميموري بئنڪ ورهائيندڙ استعمال ڪريو. توھان کي گھڻا OpenCL Memory Bank Dividers ٺاھڻ گھرجن جڏھن توھان وٽ ھڪڙو سچو متفاوت ميموري سسٽم آھي. هڪ DDR ميموري انٽرفيس ۽ هڪ QDR ميموري انٽرفيس سان هڪ سسٽم تي غور ڪريو. ڇاڪاڻ ته ٻن بئنڪن وٽ مختلف ميموري ٽوپولوجيز آهن، توهان انهن کي هڪ عالمي ياداشت تحت گڏ نه ٿا ڪري سگهو.
شڪل 1. بلاڪ ڊاگرام آف هڪ ٽن-بينڪ هيٽروجنيئس ميموري سسٽم
هي هيٽروجنيئس ميموري سسٽم ۾ ٻه DDR ميموري انٽرفيس ۽ هڪ QDR ميموري انٽرفيس شامل آهن.Intel OpenCL ڪسٽم پليٽ فارمن لاءِ FPGA SDK ۾ هيٽروجنيئس ميموري سسٽم ٺاهڻ - تصوير 1جيڪڏھن توھان استعمال ڪري رھيا آھيو ورجن 16.0، 16.0.1، يا 16.0.2 جو Intel Quartus® Prime سافٽ ويئر ۽ Altera SDK لاءِ OpenCL، OpenCL Memory Bank Divider غلط طريقي سان ميموري برسٽ کي ايڊريس جي حدن ۾ ھٿ ڪري ٿو. هن ڄاڻايل مسئلي کي حل ڪرڻ لاءِ، 1 جي برسٽ سائيز سان پائپ لائن پل شامل ڪريو ۽ ان جي Avalon ®Memory-Mapped (Avalon-MM) ماسٽر کي OpenCL Memory Bank Divider جي غلام پورٽ سان ڳنڍيو.
نوٽ:
اهو ڄاڻايل مسئلو Intel Quartus Prime سافٽ ويئر ۽ OpenCL ورزن 16.1 لاءِ Intel FPGA SDK ۾ طئي ٿيل آهي.
شڪل 2. هڪ پائپ لائن پل سان ٽي بئنڪ هيٽروجنيئس ميموري سسٽم جو بلاڪ ڊراگرام Intel OpenCL ڪسٽم پليٽ فارمن لاءِ FPGA SDK ۾ هيٽروجنيئس ميموري سسٽم ٺاهڻ - تصوير 21.4. بورڊ ٽيسٽ پروگرام ۽ ميزبان ڪوڊ کي تبديل ڪرڻ لاءِ توهان جي هيٽروجنيئس ميموري حل
استعمال ڪريو boardtest.cl ڪرنل جيڪو Intel FPGA SDK لاءِ OpenCL Custom Platform Toolkit سان اچي ٿو پنھنجي ڪسٽم پليٽ فارم جي ڪارڪردگي ۽ ڪارڪردگي کي جانچڻ لاءِ.
بورڊ ٽيسٽ پروگرام هڪ OpenCL ڪنيل آهي جيڪو توهان کي اجازت ڏئي ٿو ته هوسٽ کان ڊوائيس بينڊوڊٿ، ميموري بينڊوڊٿ، ۽ توهان جي ڪسٽم پليٽ فارم جي عام ڪارڪردگي.

  1. ڏانهن برائوز ڪريو /board/ custom_platform_toolkit/tests/boardtest ڊاريڪٽري.
  2. 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 ٻنهي ميموري سسٽم جي خاصيتن کي بيان ڪري ٿو.
  3. توھان جي OpenCL سسٽم ۾ پنھنجي مختلف ياداشت جي حل کي استعمال ڪرڻ لاء، پنھنجي ھوسٽ ڪوڊ کي تبديل ڪريو CL_MEM_HETEROGENEOUS_INTELFPGA پرچم پنھنجي clCreateBuffer ڪال ۾ شامل ڪندي.
    مثال طورampاليزي:
    ddatain = clCreateBuffer (مقابلو، CL_MEM_READ_WRITE | يادگار
    CL_MEM_HETEROGENEOUS_INTELFPGA، سائيز جو (غير دستخط ٿيل) * ویکٹر سائز، NULL، &status)؛
    Intel سختي سان سفارش ڪري ٿو ته توهان بفر لکڻ کان پهريان بفر جي جڳهه کي ڪنيل دليل طور مقرر ڪيو. جڏهن هڪ واحد گلوبل ميموري استعمال ڪندي، توهان بفر لکي سگهو ٿا يا ته پهريان يا بعد ۾ انهن کي هڪ ڪنييل دليل کي تفويض ڪرڻ. متفاوت ميموري سسٽم ۾، ميزبان بفر کي لکڻ کان اڳ بفر جي جڳھ کي مقرر ڪري ٿو. ٻين لفظن ۾، ميزبان clEnqueueWriteBuffer فنڪشن کي سڏڻ کان اڳ clSetKernelArgument فنڪشن کي سڏيندو.
    توھان جي ھوسٽ ڪوڊ ۾، ھيٺ ڏنل ترتيب ۾ clCreateBuffer، clSetKernelArg، ۽ clEnqueueWriteBuffer ڪالن کي دعوت ڏيو:
    ddatain = clCreateBuffer(مقاصد، CL_MEM_READ_WRITE | memflags |
    CL_MEM_HETEROGENEOUS_INTELFPGA، سائيز جو (غير دستخط ٿيل) * ویکٹر سائز، NULL، &status)؛
    … status = clSetKernelArg(kernel[k]، 0، sizeof(cl_mem)، (void*)&ddatain)؛
    … status = clEnqueueWriteBuffer(قطار، ddatain، CL_FALSE، 0، sizeof(unsigned) * vectorSize،hdatain، 0، NULL، NULL)؛
    ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file انهن فنڪشن ڪالن جو هڪ ساڳيو حڪم پيش ڪري ٿو.
  4.  توھان کي تبديل ڪرڻ کان پوء boardtest.cl file ۽ ميزبان ڪوڊ، ميزبان ۽ ڪنيل ڪوڊ گڏ ڪريو ۽ انهن جي ڪارڪردگي جي تصديق ڪريو.
    جڏهن توهان جي ڪنيل ڪوڊ گڏ ڪري رهيا آهيو، توهان کي لازمي طور تي سڀني ميموري سسٽم جي برسٽ-انٽرليونگ کي غير فعال ڪرڻ گهرجي -no-interleaving شامل ڪندي اختيار aoc حڪم ۾.

لاڳاپيل معلومات
گلوبل ميموري جي برسٽ-انٽرليونگ کي غير فعال ڪرڻ (-نه-انٽرليونگ )

1.5. توهان جي Heterogeneous ياداشت جي ڪارڪردگي جي تصديق ڪندي سسٽم
انهي کي يقيني بڻائڻ لاءِ ته هيٽروجنيئس ميموري سسٽم صحيح طريقي سان ڪم ڪري ٿو، CL_CONTEXT_COMPILER_MODE_INTELFPGA پرچم کي پنهنجي ميزبان ڪوڊ ۾ سيٽ ڪريو.
هڪجهڙائي واري ميموري سان OpenCL سسٽم ۾، توهان کي اختيار ڪرڻو پوندو CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 پرچم کي پنهنجي ميزبان ڪوڊ ۾ سيٽ ڪرڻ لاءِ .aocx جي پڙهڻ کي بند ڪرڻ لاءِ. file ۽ FPGA جي ٻيهر پروگرامنگ. CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 جھنڊو سيٽ ڪرڻ مفيد آھي جڏھن توھان جي بورڊ کي فوري طور تي پنھنجي ڪسٽم پليٽ فارم جي ڪارڪردگي جي تصديق ڪرڻ لاءِ فلور پلان کي ڊزائين ڪرڻ ۽ LogicLock™ علائقن جي وضاحت ڪرڻ کان سواءِ.
متضاد ميموري سسٽم سان، رن ٽائم ماحول کي هر بفر جي بفر جڳهن کي پڙهڻ گهرجي، جنهن ۾ بيان ڪيل .aocx fileميموري سسٽم جي ڪارڪردگي جي تصديق ڪرڻ لاء. تنهن هوندي، توهان شايد بورڊ جي ڊيزائن جي آخري خاصيتن کي لاڳو ڪرڻ کان سواءِ پنهنجي ڪسٽم پليٽ فارم جي ڪارڪردگيءَ جي تصديق ڪرڻ چاهيو ٿا، جهڙوڪ فرش پلان کي ڊزائين ڪرڻ ۽ LogicLock علائقن جي وضاحت ڪرڻ.

  1. تصديق ڪريو ته CL_CONTEXT_COMPILER_MODE_INTELFPGA جھنڊو توھان جي ھوسٽ ڪوڊ ۾ غير سيٽ ٿيل آھي.
  2. بورڊ ڏانهن وڃو/ توهان جي ڪسٽم پليٽ فارم جي /source/host/mmd ڊاريڪٽري.
  3. کوليو acl_pcie_device.cpp ميموري-ميپ ٿيل ڊيوائس (MMD) file ٽيڪسٽ ايڊيٽر ۾.
  4.  acl_pcie_device.cpp ۾ ريپروگرام فنڪشن کي تبديل ڪريو file واپسي 0 شامل ڪندي؛ لائن، جيئن هيٺ ڏيکاريل آهي:
    int ACL_PCIE_DEVICE :: reprogram (void * data, size_t data_size)
    {
    واپسي 0؛
    // فرض ڪريو ناڪامي
    int reprogram_failed = 1؛
    // فرض ڪريو fpga.bin ۾ ڪوبه rbf يا hash ناهي
    int rbf_or_hash_not_provided = 1؛
    // فرض ڪريو بنيادي ۽ درآمد جي نظرثاني واري هيشز نه ملنديون آهن
    int hash_mismatch = 1؛

    }
  5. recompile acl_pcie_device.cpp file.
  6. پڪ ڪريو ته CL_CONTEXT_COMPILER_MODE_INTELFPGA جھنڊو اڻ سيٽ رھيو.
    ڌيان: توھان کي شامل ڪرڻ کان پوء واپسي 0؛ ٻيهر پروگرام جي فنڪشن ڏانهن ۽ ايم ايم ڊي کي ٻيهر ترتيب ڏيو fileرن ٽائم ماحول .aocx پڙهندو file ۽ بفر جڳهن کي تفويض ڪريو پر FPGA کي ٻيهر پروگرام نه ڪندو. توھان کي دستي طور FPGA تصوير کي .aocx سان ملائڻ گھرجي file. هن رويي کي رد ڪرڻ لاء، واپسي 0 کي هٽايو؛ reprogram فنڪشن مان ۽ ايم ايم ڊي کي ٻيهر ترتيب ڏيو file.

1.6. دستاويز جي نظرثاني جي تاريخ

تاريخنسخوتبديليون
ڊسمبر-172017.12.01• CL_MEM_HETEROGENEOUS_ALTERA کي CL_MEM_HETEROGENEOUS_INTELFPGA کي ري برانڊ ڪيو ويو.
ڊسمبر-162016.12.13• ري برانڊ ٿيل CL_CONTEXT_COMPILER_MODE_ALTERA کي CL_CONTEXT_COMPILER_MODE_INTELFPGA.

intel - لوگوIntel® FPGA SDK ۾ Heterogeneous ميموري سسٽم ٺاهڻ OpenCL لاءِ
ڪسٽم پليٽ فارم
Intel OpenCL ڪسٽم پليٽ فارمن لاءِ FPGA SDK ۾ هيٽروجنيئس ميموري سسٽم ٺاهڻ - آئڪن 1 موٽ موڪليو
Intel OpenCL ڪسٽم پليٽ فارمن لاءِ FPGA SDK ۾ هيٽروجنيئس ميموري سسٽم ٺاهڻ - آئڪن آن لائين ورجن
Intel OpenCL ڪسٽم پليٽ فارمن لاءِ FPGA SDK ۾ هيٽروجنيئس ميموري سسٽم ٺاهڻ - آئڪن 1 موٽ موڪليو
ID: 683654
نسخو: 2016.12.13

دستاويز / وسيلا

Intel OpenCL ڪسٽم پليٽ فارمن لاءِ FPGA SDK ۾ Heterogeneous Memory Systems ٺاهڻ [pdf] هدايتون
OpenCL ڪسٽم پليٽ فارمن لاءِ FPGA SDK ۾ هيٽروجنيئس ميموري سسٽم ٺاهڻ، Heterogeneous ميموري سسٽم ٺاهڻ، OpenCL ڪسٽم پليٽ فارمن لاءِ FPGA SDK

حوالو

تبصرو ڇڏي ڏيو

توهان جو اي ميل پتو شايع نه ڪيو ويندو. گهربل فيلڊ نشان لڳل آهن *