ইন্টেল - লোগোOpenCL কাস্টম প্ল্যাটফর্মের জন্য FPGA SDK-তে ভিন্নধর্মী মেমরি সিস্টেম তৈরি করা
নির্দেশনা

OpenCL কাস্টম প্ল্যাটফর্মের জন্য Intel® FPGA SDK-তে ভিন্নধর্মী মেমরি সিস্টেম তৈরি করা

একটি কাস্টম প্ল্যাটফর্মে ভিন্নধর্মী মেমরির বাস্তবায়ন আরও বাহ্যিক মেমরি ইন্টারফেস (EMIF) ব্যান্ডউইথের পাশাপাশি বড় এবং দ্রুত মেমরি অ্যাক্সেসের অনুমতি দেয়। একটি অপ্টিমাইজডের সাথে ভিন্নধর্মী মেমরি অ্যাক্সেসের সংমিশ্রণ
OpenCL ™(1) কার্নেল আপনার OpenCL সিস্টেমের জন্য উল্লেখযোগ্য কর্মক্ষমতা উন্নতি ঘটাতে পারে।
এই অ্যাপ্লিকেশন নোটটি OpenCL(2) এর জন্য Intel® FPGA SDK-এর সাথে ব্যবহারের জন্য একটি কাস্টম প্ল্যাটফর্মে ভিন্নধর্মী মেমরি সিস্টেম তৈরি করার বিষয়ে নির্দেশিকা প্রদান করে। ইন্টেল অনুমান করে যে আপনি একজন অভিজ্ঞ FPGA ডিজাইনার যিনি কাস্টম প্ল্যাটফর্ম তৈরি করছেন যাতে ভিন্ন ভিন্ন মেমরি সিস্টেম রয়েছে।
ভিন্নধর্মী মেমরি সিস্টেম তৈরি করার আগে, নিচে উল্লেখিত OpenCL নথিগুলির জন্য Intel FPGA SDK-এর সাথে নিজেকে পরিচিত করুন।
সম্পর্কিত তথ্য

  • OpenCL প্রোগ্রামিং গাইডের জন্য Intel FPGA SDK
  • ওপেনসিএল সেরা অনুশীলন নির্দেশিকা জন্য ইন্টেল FPGA SDK
  • OpenCL Arria 10 GX FPGA ডেভেলপমেন্ট কিট রেফারেন্স প্ল্যাটফর্ম পোর্টিং গাইডের জন্য Intel FPGA SDK

1.1। FPGA বোর্ড এবং EMIF ইন্টারফেসের কার্যকারিতা যাচাই করা

প্রতিটি মেমরি ইন্টারফেস স্বাধীনভাবে যাচাই করুন এবং তারপর গ্লোবাল মেমরি ব্যবহার করে আপনার কাস্টম প্ল্যাটফর্ম ইনস্ট্যান্ট করুন।

  1. হার্ডওয়্যার ডিজাইন ব্যবহার করে প্রতিটি মেমরি ইন্টারফেস যাচাই করুন যা প্রতিটি ইন্টারফেসের গতি এবং স্থিতিশীলতা পরীক্ষা করতে পারে।
  2. গ্লোবাল মেমরি ব্যবহার করে আপনার কাস্টম প্ল্যাটফর্ম চালু করুন।
    1. প্রাক্তন জন্যampলে, আপনার যদি তিনটি ডিডিআর ইন্টারফেস থাকে, তবে তাদের মধ্যে একটি অবশ্যই ভিন্ন মেমরি হিসাবে ম্যাপ করা উচিত। এই ক্ষেত্রে, প্রতিটি DDR ইন্টারফেসের সাথে OpenCL স্ট্যাকের কার্যকারিতা স্বাধীনভাবে যাচাই করুন।
      OpenCL এবং OpenCL লোগো হল Apple Inc.-এর ট্রেডমার্ক যা Khronos Group™-এর অনুমতি দ্বারা ব্যবহৃত হয়৷
    2.  OpenCL-এর জন্য Intel FPGA SDK একটি প্রকাশিত খ্রোনোস স্পেসিফিকেশনের উপর ভিত্তি করে তৈরি করা হয়েছে এবং খরোনোস কনফরমেন্স টেস্টিং প্রক্রিয়ায় উত্তীর্ণ হয়েছে। বর্তমান সামঞ্জস্য অবস্থা এ পাওয়া যাবে www.khronos.org/conformance।

ইন্টেল কর্পোরেশন। সমস্ত অধিকার সংরক্ষিত. ইন্টেল, ইন্টেল লোগো এবং অন্যান্য ইন্টেল চিহ্নগুলি হল ইন্টেল কর্পোরেশন বা এর সহযোগী সংস্থাগুলির ট্রেডমার্ক৷ ইন্টেল তার এফপিজিএ এবং সেমিকন্ডাক্টর পণ্যগুলির কার্যকারিতাকে ইন্টেলের স্ট্যান্ডার্ড ওয়ারেন্টি অনুসারে বর্তমান স্পেসিফিকেশনের জন্য ওয়ারেন্টি দেয়, তবে নোটিশ ছাড়াই যে কোনও সময় যে কোনও পণ্য এবং পরিষেবাতে পরিবর্তন করার অধিকার সংরক্ষণ করে। ইন্টেল এখানে বর্ণিত কোনো তথ্য, পণ্য, বা পরিষেবার প্রয়োগ বা ব্যবহারের ফলে উদ্ভূত কোনো দায় বা দায়ভার গ্রহণ করে না, যা Intel দ্বারা লিখিতভাবে স্পষ্টভাবে সম্মত হয়েছে। Intel গ্রাহকদের কোনো প্রকাশিত তথ্যের উপর নির্ভর করার আগে এবং পণ্য বা পরিষেবার জন্য অর্ডার দেওয়ার আগে ডিভাইসের স্পেসিফিকেশনের সর্বশেষ সংস্করণ পেতে পরামর্শ দেওয়া হয়। *অন্যান্য নাম এবং ব্র্যান্ড অন্যদের সম্পত্তি হিসাবে দাবি করা যেতে পারে।
ISO 9001:2015 নিবন্ধিত
বিকল্পভাবে, আপনার যদি দুটি DDR ইন্টারফেস এবং একটি কোয়াড ডেটা রেট (QDR) ইন্টারফেস থাকে, তাহলে দুটি DDR ইন্টারফেসের OpenCL স্ট্যাকের কার্যকারিতা এবং QDR ইন্টারফেস স্বাধীনভাবে যাচাই করুন।
Intel সুপারিশ করে যে আপনি আপনার মেমরি ইন্টারফেস পরীক্ষা করার জন্য PCI Express® – (PCIe® -) বা EMIF-এক্সক্লুসিভ ডিজাইন ব্যবহার করুন। আপনি যাচাই করার পরে যে প্রতিটি মেমরি ইন্টারফেস কার্যকরী এবং আপনার OpenCL ডিজাইন মেমরি ইন্টারফেসের একটি উপসেটের সাথে কাজ করে, এগিয়ে যান
একটি সম্পূর্ণ কার্যকরী ভিন্নধর্মী মেমরি সিস্টেম তৈরি করতে। 
1.2। board_spec.xml পরিবর্তন করা হচ্ছে File
board_spec.xml পরিবর্তন করুন file OpenCL কার্নেলের জন্য উপলব্ধ ভিন্ন ভিন্ন মেমরি সিস্টেমের ধরন নির্দিষ্ট করতে।
কার্নেল সংকলনের সময়, OpenCL অফলাইন কম্পাইলারের জন্য Intel FPGA SDK আপনার নির্দিষ্ট করা বাফার অবস্থানের আর্গুমেন্টের উপর ভিত্তি করে একটি মেমরিতে কার্নেল আর্গুমেন্ট বরাদ্দ করে।
1. board_spec.xml-এ ব্রাউজ করুন file আপনার কাস্টম প্ল্যাটফর্মের হার্ডওয়্যার ডিরেক্টরিতে।
2. board_spec.xml খুলুন file একটি টেক্সট এডিটরে এবং সেই অনুযায়ী XML পরিবর্তন করুন।
প্রাক্তন জন্যampলে, যদি আপনার হার্ডওয়্যার সিস্টেমে ডিফল্ট গ্লোবালমেমরি হিসাবে দুটি ডিডিআর মেমরি এবং দুটি কিউডিআর ব্যাঙ্ক থাকে যা আপনি ভিন্ন মেমরি হিসাবে মডেল করেন, board_spec.xml এর মেমরি বিভাগগুলি পরিবর্তন করুন file নিম্নলিখিত অনুরূপ:
















1.3। Qsys-এ একাধিক মেমরি ডিভাইডার সেট আপ করা হচ্ছে
বর্তমানে, Qsys ডিজাইনে OpenCL মেমরি ব্যাঙ্ক ডিভাইডার নন-পাওয়ার-অফ-2 নম্বর মেমরি ব্যাঙ্ক সমর্থন করে না, যা সাধারণ কনফিগারেশনের জন্য সীমাবদ্ধতা নয়। যাইহোক, এমন পরিস্থিতিতে আছে যেখানে নন-পাওয়ার-অফ-2 নম্বর মেমরি ইন্টারফেস প্রয়োজন। নন-পাওয়ার-অফ-2 নম্বর মেমরি ইন্টারফেসগুলিকে মিটমাট করার জন্য, একাধিক ওপেনসিএল মেমরি ব্যাঙ্ক ডিভাইডার ব্যবহার করুন যাতে মেমরি ব্যাঙ্কগুলির নন-পাওয়ার-অফ-2 নম্বরের সাথে ভিন্ন ভিন্ন মেমরি সিস্টেম তৈরি করা যায়। আপনার কাছে একটি সত্য ভিন্নধর্মী মেমরি সিস্টেম থাকলে আপনাকে অবশ্যই একাধিক OpenCL মেমরি ব্যাঙ্ক ডিভাইডার তৈরি করতে হবে। একটি DDR মেমরি ইন্টারফেস এবং একটি QDR মেমরি ইন্টারফেস সহ একটি সিস্টেম বিবেচনা করুন। যেহেতু দুটি ব্যাঙ্কের বিভিন্ন মেমরি টপোলজি রয়েছে, আপনি তাদের একটি একক গ্লোবাল মেমরির অধীনে একত্রিত করতে পারবেন না।
চিত্র 1. একটি থ্রি-ব্যাঙ্কের ভিন্নধর্মী মেমরি সিস্টেমের ব্লক ডায়াগ্রাম
এই ভিন্নধর্মী মেমরি সিস্টেমে দুটি DDR মেমরি ইন্টারফেস এবং একটি QDR মেমরি ইন্টারফেস রয়েছে।Intel ওপেনসিএল কাস্টম প্ল্যাটফর্মের জন্য FPGA SDK-তে ভিন্নধর্মী মেমরি সিস্টেম তৈরি করছে - চিত্র 1আপনি যদি OpenCL-এর জন্য Intel Quartus® Prime সফ্টওয়্যার এবং Altera SDK-এর 16.0, 16.0.1, বা 16.0.2 সংস্করণ ব্যবহার করেন, তাহলে OpenCL মেমরি ব্যাঙ্ক ডিভাইডার ভুলভাবে ঠিকানার সীমানা জুড়ে মেমরি বিস্ফোরণগুলি পরিচালনা করে। এই পরিচিত সমস্যাটি সমাধান করতে, 1 এর বার্স্ট সাইজ সহ একটি পাইপলাইন ব্রিজ যোগ করুন এবং এর Avalon ®Memory-Mapped (Avalon-MM) মাস্টারটিকে OpenCL মেমরি ব্যাঙ্ক ডিভাইডারের স্লেভ পোর্টের সাথে সংযুক্ত করুন৷
দ্রষ্টব্য:
এই পরিচিত সমস্যাটি Intel Quartus প্রাইম সফ্টওয়্যার এবং OpenCL সংস্করণ 16.1-এর জন্য Intel FPGA SDK-এ সংশোধন করা হয়েছে।
চিত্র 2. একটি পাইপলাইন সেতু সহ থ্রি-ব্যাঙ্কের ভিন্নধর্মী মেমরি সিস্টেমের ব্লক ডায়াগ্রাম Intel ওপেনসিএল কাস্টম প্ল্যাটফর্মের জন্য FPGA SDK-তে ভিন্নধর্মী মেমরি সিস্টেম তৈরি করছে - চিত্র 21.4। আপনার ভিন্নধর্মী মেমরি সমাধানের জন্য বোর্ডটেস্ট প্রোগ্রাম এবং হোস্ট কোড পরিবর্তন করা
আপনার কাস্টম প্ল্যাটফর্মের কার্যকারিতা এবং কার্যকারিতা পরীক্ষা করতে OpenCL কাস্টম প্ল্যাটফর্ম টুলকিটের জন্য Intel FPGA SDK-এর সাথে আসা boardtest.cl কার্নেলটি ব্যবহার করুন৷
বোর্ডটেস্ট প্রোগ্রাম হল একটি OpenCL কার্নেল যা আপনাকে হোস্ট-টু-ডিভাইস ব্যান্ডউইথ, মেমরি ব্যান্ডউইথ এবং আপনার কাস্টম প্ল্যাটফর্মের সাধারণ কার্যকারিতা পরীক্ষা করতে দেয়।

  1. ব্রাউজ করুন /board/ custom_platform_toolkit/tests/boardtest ডিরেক্টরি।
  2. boardtest.cl খুলুন file একটি টেক্সট এডিটরে এবং প্রতিটি গ্লোবাল মেমরি আর্গুমেন্টে একটি বাফার অবস্থান বরাদ্দ করুন।
    প্রাক্তন জন্যampLe:
    __কারনেল অকার্যকর
    mem_stream (__global__attribute__((buffer_location("DDR"))) uint *src, __global __attribute__((buffer_location("QDR"))) uint *dst, uint arg, uint arg2)
    এখানে, uint *src ডিডিআর মেমরিতে বরাদ্দ করা হয়েছে, এবং uint *dst QDR মেমরিতে বরাদ্দ করা হয়েছে। board_spec.xml file উভয় মেমরি সিস্টেমের বৈশিষ্ট্য নির্দিষ্ট করে।
  3. আপনার OpenCL সিস্টেমে আপনার ভিন্নধর্মী মেমরি সলিউশনের সুবিধা নিতে, আপনার clCreateBuffer কলে CL_MEM_HETEROGENEOUS_INTELFPGA পতাকা যোগ করে আপনার হোস্ট কোড পরিবর্তন করুন।
    প্রাক্তন জন্যampLe:
    ddatain = clCreateBuffer(প্রসঙ্গ, CL_MEM_READ_WRITE | মেমফ্ল্যাগস
    CL_MEM_HETEROGENEOUS_INTELFPGA, সাইজফ(স্বাক্ষরবিহীন) * ভেক্টর সাইজ, NULL, &স্থিতি);
    ইন্টেল দৃঢ়ভাবে সুপারিশ করে যে আপনি বাফার লেখার আগে কার্নেল আর্গুমেন্ট হিসাবে বাফার অবস্থান সেট করুন। একটি একক গ্লোবাল মেমরি ব্যবহার করার সময়, আপনি বাফারগুলিকে কার্নেল আর্গুমেন্টে বরাদ্দ করার আগে বা পরে লিখতে পারেন। ভিন্নধর্মী মেমরি সিস্টেমে, হোস্ট বাফার লেখার আগে বাফার অবস্থান সেট করে। অন্য কথায়, হোস্ট clEnqueueWriteBuffer ফাংশন কল করার আগে clSetKernelArgument ফাংশন কল করবে।
    আপনার হোস্ট কোডে, clCreateBuffer, clSetKernelArg এবং clEnqueueWriteBuffer কলগুলিকে নিম্নলিখিত ক্রমে আহ্বান করুন:
    ddatain = clCreateBuffer(প্রসঙ্গ, CL_MEM_READ_WRITE | memflags |
    CL_MEM_HETEROGENEOUS_INTELFPGA, সাইজফ(স্বাক্ষরবিহীন) * ভেক্টর সাইজ, NULL, &স্থিতি);
    … অবস্থা = clSetKernelArg(kernel[k], 0, sizeof(cl_mem), (void*)&ddatain);
    … অবস্থা = clEnqueueWriteBuffer(queue, 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 এবং হোস্ট কোড, হোস্ট এবং কার্নেল কোড কম্পাইল করুন এবং তাদের কার্যকারিতা যাচাই করুন।
    আপনার কার্নেল কোড কম্পাইল করার সময়, আপনাকে -নো-ইন্টারলিভিং অন্তর্ভুক্ত করে সমস্ত মেমরি সিস্টেমের বার্স্ট-ইন্টারলিভিং নিষ্ক্রিয় করতে হবে aoc কমান্ডের বিকল্প।

সম্পর্কিত তথ্য
গ্লোবাল মেমরির বার্স্ট-ইন্টারলিভিং নিষ্ক্রিয় করা হচ্ছে (-নো-ইন্টারলিভিং )

1.5। আপনার ভিন্নধর্মী মেমরির কার্যকারিতা যাচাই করা সিস্টেম
ভিন্নধর্মী মেমরি সিস্টেম সঠিকভাবে কাজ করে তা নিশ্চিত করতে, আপনার হোস্ট কোডে CL_CONTEXT_COMPILER_MODE_INTELFPGA পতাকা আনসেট করুন।
সমজাতীয় মেমরি সহ OpenCL সিস্টেমে, আপনাকে .aocx-এর রিডিং অক্ষম করতে আপনার হোস্ট কোডে CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 পতাকা সেট করার বিকল্প থাকতে হবে। file এবং FPGA এর পুনরায় প্রোগ্রামিং। ফ্লোরপ্ল্যান ডিজাইন না করে এবং LogicLock™ অঞ্চলগুলি নির্দিষ্ট না করে আপনার কাস্টম প্ল্যাটফর্মের কার্যকারিতা যাচাই করতে আপনার বোর্ডকে ইনস্ট্যান্টিয়েট করার সময় CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 পতাকা সেট করা কার্যকর।
ভিন্নধর্মী মেমরি সিস্টেমের সাথে, রানটাইম পরিবেশকে অবশ্যই .aocx-এ বর্ণিত প্রতিটি বাফারের বাফার অবস্থানগুলি পড়তে হবে file, মেমরি সিস্টেমের কার্যকারিতা যাচাই করতে। যাইহোক, আপনি আপনার কাস্টম প্ল্যাটফর্মের কার্যকারিতা যাচাই করতে চাইতে পারেন বোর্ড ডিজাইনের চূড়ান্ত বৈশিষ্ট্যগুলি, যেমন ফ্লোরপ্ল্যান ডিজাইন করা এবং LogicLock অঞ্চলগুলি উল্লেখ না করেই।

  1. যাচাই করুন যে CL_CONTEXT_COMPILER_MODE_INTELFPGA পতাকা আপনার হোস্ট কোডে সেট করা নেই৷
  2. বোর্ডে ব্রাউজ করুন/ আপনার কাস্টম প্ল্যাটফর্মের /source/host/mmd ডিরেক্টরি।
  3. acl_pcie_device.cpp মেমরি-ম্যাপড ডিভাইস (এমএমডি) খুলুন file একটি টেক্সট এডিটরে।
  4.  acl_pcie_device.cpp-এ রিপ্রোগ্রাম ফাংশন পরিবর্তন করুন file একটি রিটার্ন 0 যোগ করে; লাইন, নীচে দেখানো হিসাবে:
    int ACL_PCIE_DEVICE::reprogram(void *ডেটা, size_t data_size)
    {
    রিটার্ন 0;
    // ব্যর্থতা অনুমান
    int reprogram_failed = 1;
    // অনুমান করুন fpga.bin এ কোন rbf বা হ্যাশ নেই
    int rbf_or_hash_not_provided = 1;
    // ধরে নিন বেস এবং ইম্পোর্ট রিভিশন হ্যাশ মেলে না
    int hash_mismatch = 1;

    }
  5. acl_pcie_device.cpp পুনরায় কম্পাইল করুন file.
  6. যাচাই করুন যে CL_CONTEXT_COMPILER_MODE_INTELFPGA পতাকা সেট করা হয়নি৷
    মনোযোগ: আপনি রিটার্ন 0 যোগ করার পরে; রিপ্রোগ্রাম ফাংশনে এবং এমএমডি পুনরায় কম্পাইল করুন file, রানটাইম পরিবেশ .aocx পড়বে file এবং বাফার অবস্থান নির্ধারণ করুন কিন্তু FPGA পুনরায় প্রোগ্রাম করবে না। আপনাকে অবশ্যই .aocx এর সাথে FPGA ইমেজ ম্যানুয়ালি মেলাতে হবে file. এই আচরণটি বিপরীত করতে, রিটার্ন 0 সরান; রিপ্রোগ্রাম ফাংশন থেকে এবং এমএমডি পুনরায় কম্পাইল করুন file.

1.6. নথি পুনর্বিবেচনার ইতিহাস

তারিখ সংস্করণ পরিবর্তন
ডিসেম্বর-17 2017.12.01 • CL_MEM_HETEROGENEOUS_ALTERA থেকে CL_MEM_HETEROGENEOUS_INTELFPGA রিব্র্যান্ডেড।
ডিসেম্বর-16 2016.12.13 • CL_CONTEXT_COMPILER_MODE_ALTERA থেকে CL_CONTEXT_COMPILER_MODE_INTELFPGA তে পুনরায় ব্র্যান্ড করা হয়েছে৷

ইন্টেল - লোগোOpenCL-এর জন্য Intel® FPGA SDK-এ ভিন্নধর্মী মেমরি সিস্টেম তৈরি করা
কাস্টম প্ল্যাটফর্ম
Intel ওপেনসিএল কাস্টম প্ল্যাটফর্মের জন্য FPGA SDK-তে ভিন্নধর্মী মেমরি সিস্টেম তৈরি করছে - আইকন 1 প্রতিক্রিয়া পাঠান
Intel ওপেনসিএল কাস্টম প্ল্যাটফর্মের জন্য FPGA SDK-তে ভিন্নধর্মী মেমরি সিস্টেম তৈরি করছে - আইকন অনলাইন সংস্করণ
Intel ওপেনসিএল কাস্টম প্ল্যাটফর্মের জন্য FPGA SDK-তে ভিন্নধর্মী মেমরি সিস্টেম তৈরি করছে - আইকন 1 প্রতিক্রিয়া পাঠান
আইডি: 683654
সংস্করণ: 2016.12.13

দলিল/সম্পদ

Intel ওপেনসিএল কাস্টম প্ল্যাটফর্মের জন্য FPGA SDK-তে ভিন্নধর্মী মেমরি সিস্টেম তৈরি করছে [পিডিএফ] নির্দেশনা
OpenCL কাস্টম প্ল্যাটফর্মের জন্য FPGA SDK-এ ভিন্নধর্মী মেমরি সিস্টেম তৈরি করা, ভিন্নধর্মী মেমরি সিস্টেম তৈরি করা, OpenCL কাস্টম প্ল্যাটফর্মের জন্য FPGA SDK

তথ্যসূত্র

একটি মন্তব্য করুন

আপনার ইমেল ঠিকানা প্রকাশ করা হবে না. প্রয়োজনীয় ক্ষেত্রগুলি চিহ্নিত করা হয়েছে *