إنتل - الشعارإنشاء أنظمة ذاكرة غير متجانسة في FPGA SDK لمنصات OpenCL المخصصة
تعليمات

إنشاء أنظمة ذاكرة غير متجانسة في Intel® FPGA SDK لمنصات OpenCL المخصصة

يسمح تنفيذ الذاكرة غير المتجانسة في النظام الأساسي المخصص بمزيد من عرض النطاق الترددي لواجهة الذاكرة الخارجية (EMIF) بالإضافة إلى الوصول إلى الذاكرة بشكل أكبر وأسرع. مزيج من الوصول إلى الذاكرة غير المتجانسة مع الأمثل
يمكن أن تؤدي نواة OpenCL™(1) إلى تحسينات كبيرة في أداء نظام OpenCL الخاص بك.
توفر ملاحظة التطبيق هذه إرشادات حول إنشاء أنظمة ذاكرة غير متجانسة في نظام أساسي مخصص للاستخدام مع Intel® FPGA SDK لـ OpenCL(2). تفترض شركة Intel أنك مصمم FPGA ذي خبرة ويعمل على تطوير الأنظمة الأساسية المخصصة التي تحتوي على أنظمة ذاكرة غير متجانسة.
قبل إنشاء أنظمة الذاكرة غير المتجانسة، تعرف على Intel FPGA SDK لمستندات OpenCL المحددة أدناه.
معلومات ذات صلة

  • Intel FPGA SDK لدليل برمجة OpenCL
  • دليل أفضل ممارسات Intel FPGA SDK لـ OpenCL
  • Intel FPGA SDK for OpenCL Arria 10 GX FPGA Development Kit دليل نقل النظام الأساسي المرجعي

1.1. التحقق من وظائف لوحة FPGA وواجهات EMIF

تحقق من كل واجهة ذاكرة بشكل مستقل ثم قم بإنشاء مثيل للنظام الأساسي المخصص الخاص بك باستخدام الذاكرة العامة.

  1. تحقق من كل واجهة ذاكرة باستخدام تصميمات الأجهزة التي يمكنها اختبار سرعة واستقرار كل واجهة.
  2. قم بإنشاء مثيل للنظام الأساسي المخصص الخاص بك باستخدام الذاكرة العالمية.
    1. على سبيل المثالampإذا كان لديك ثلاث واجهات DDR، فيجب تعيين إحداها كذاكرة غير متجانسة. في هذه الحالة، تحقق من وظيفة مكدس OpenCL مع كل واجهة DDR بشكل مستقل.
      OpenCL وشعار OpenCL هما علامتان تجاريتان لشركة Apple Inc. ويتم استخدامهما بموجب إذن من Khronos Group™.
    2.  تعتمد Intel FPGA SDK لـ OpenCL على مواصفات Khronos المنشورة، وقد اجتازت عملية اختبار مطابقة Khronos. يمكن العثور على حالة المطابقة الحالية على www.khronos.org/conformance.

شركة إنتل. كل الحقوق محفوظة. تعد Intel وشعار Intel وعلامات Intel الأخرى علامات تجارية لشركة Intel Corporation أو الشركات التابعة لها. تضمن Intel أداء منتجات FPGA وأشباه الموصلات وفقًا للمواصفات الحالية وفقًا لضمان Intel القياسي ، ولكنها تحتفظ بالحق في إجراء تغييرات على أي منتجات وخدمات في أي وقت دون إشعار. لا تتحمل Intel أي مسؤولية أو التزام ناشئ عن التطبيق أو استخدام أي معلومات أو منتج أو خدمة موصوفة هنا باستثناء ما تم الاتفاق عليه صراحةً كتابةً من قبل Intel. يُنصح عملاء Intel بالحصول على أحدث إصدار من مواصفات الجهاز قبل الاعتماد على أي معلومات منشورة وقبل تقديم طلبات المنتجات أو الخدمات. * قد تكون الأسماء والعلامات التجارية الأخرى مملوكة لآخرين.
تم تسجيل ISO 9001: 2015
وبدلاً من ذلك، إذا كان لديك واجهتي DDR وواجهة واحدة لمعدل البيانات الرباعي (QDR)، فتحقق من وظيفة حزمة OpenCL الخاصة بواجهتي DDR وواجهة QDR بشكل مستقل.
توصي Intel باستخدام تصميمات PCI Express® - (PCIe® -) أو EMIF الحصرية لاختبار واجهات الذاكرة الخاصة بك. بعد التحقق من أن كل واجهة ذاكرة تعمل وأن تصميم OpenCL الخاص بك يعمل مع مجموعة فرعية من واجهات الذاكرة، تابع
لإنشاء نظام ذاكرة غير متجانس يعمل بكامل طاقته. 
1.2. تعديل ملف board_spec.xml File
قم بتعديل ملف board_spec.xml file لتحديد أنواع أنظمة الذاكرة غير المتجانسة المتوفرة لنواة OpenCL.
أثناء تجميع kernel، تقوم Intel FPGA SDK for OpenCL Offline Compiler بتعيين وسيطات kernel إلى الذاكرة بناءً على وسيطة موقع المخزن المؤقت التي تحددها.
1. استعرض للوصول إلى board_spec.xml file في دليل الأجهزة الخاص بالنظام الأساسي المخصص لديك.
2. افتح board_spec.xml file في محرر نصوص وقم بتعديل XML وفقًا لذلك.
على سبيل المثالampإذا كان نظام أجهزتك يحتوي على ذاكرتي DDR كذاكرة عامة افتراضية وبنكي QDR تقوم بتصميمهما كذاكرة غير متجانسة، فقم بتعديل أقسام الذاكرة في board_spec.xml file لتشبه ما يلي:
















1.3. إعداد مقسمات الذاكرة المتعددة في Qsys
في الوقت الحالي، لا يدعم مقسم بنك الذاكرة OpenCL الموجود في تصميم Qsys عدد بنوك الذاكرة التي لا تحتوي على طاقة 2، وهو ما لا يشكل قيدًا على التكوينات النموذجية. ومع ذلك، هناك سيناريوهات يكون فيها عدد واجهات الذاكرة التي لا تحتاج إلى طاقة 2 ضروريًا. لاستيعاب عدد من واجهات الذاكرة التي لا تحتوي على قوة 2، استخدم مقسمات بنك الذاكرة OpenCL المتعددة لإنشاء أنظمة ذاكرة غير متجانسة مع عدد من بنوك الذاكرة التي لا تحتوي على قوة 2. يجب عليك إنشاء العديد من مقسمات بنك الذاكرة OpenCL عندما يكون لديك نظام ذاكرة غير متجانس حقيقي. فكر في نظام مزود بواجهة ذاكرة DDR واحدة وواجهة ذاكرة QDR واحدة. نظرًا لاختلاف طبولوجيا الذاكرة لدى البنكين، لا يمكنك دمجهما في ذاكرة عامة واحدة.
الشكل 1. رسم تخطيطي لنظام الذاكرة غير المتجانسة ثلاثي البنوك
يحتوي نظام الذاكرة غير المتجانس هذا على واجهتين لذاكرة DDR وواجهة ذاكرة QDR واحدة.إنتل تقوم بإنشاء أنظمة ذاكرة غير متجانسة في FPGA SDK لمنصات OpenCL المخصصة - الشكل 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 وIntel FPGA SDK لـ OpenCL الإصدار 16.1.
الشكل 2. رسم تخطيطي لنظام الذاكرة غير المتجانسة ثلاثي البنوك مع جسر خط أنابيب إنتل تقوم بإنشاء أنظمة ذاكرة غير متجانسة في FPGA SDK لمنصات OpenCL المخصصة - الشكل 21.4. تعديل برنامج Boardtest ورمز المضيف لحل الذاكرة غير المتجانسة لديك
استخدم نواة boardtest.cl التي تأتي مع Intel FPGA SDK لمجموعة أدوات النظام الأساسي المخصص لـ OpenCL لاختبار وظائف وأداء النظام الأساسي المخصص لديك.
برنامج boardtest هو نواة 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. the board_spec.xml file يحدد خصائص كلا نظامي الذاكرة.
  3. للاستفادة من حل الذاكرة غير المتجانسة في نظام OpenCL الخاص بك، قم بتعديل رمز المضيف الخاص بك عن طريق إضافة علامة CL_MEM_HETEROGENEOUS_INTELFPGA إلى استدعاء clCreateBuffer الخاص بك.
    على سبيل المثالampعلى:
    ddatain = clCreateBuffer(context, CL_MEM_READ_WRITE | memflags
    CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(unsigned) * VectorSize, NULL, &status);
    توصي Intel بشدة بتعيين موقع المخزن المؤقت كوسيطة kernel قبل كتابة المخزن المؤقت. عند استخدام ذاكرة عمومية واحدة، يمكنك كتابة المخازن المؤقتة إما قبل أو بعد تعيينها إلى وسيطة kernel. في أنظمة الذاكرة غير المتجانسة، يقوم المضيف بتعيين موقع المخزن المؤقت قبل كتابة المخزن المؤقت. بمعنى آخر، سيقوم المضيف باستدعاء الدالة clSetKernelArgument قبل استدعاء الدالة clEnqueueWriteBuffer.
    في رمز المضيف الخاص بك، قم باستدعاء استدعاءات clCreateBuffer، وclSetKernelArg، وclEnqueueWriteBuffer بالترتيب التالي:
    ddatain = clCreateBuffer(context, CL_MEM_READ_WRITE | memflags |
    CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(unsigned) * VectorSize, NULL, &status);
    … الحالة = 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 ورمز المضيف، وقم بتجميع كود المضيف و kernel والتحقق من وظائفهما.
    عند تجميع كود النواة الخاص بك، يجب عليك تعطيل تشذير الاندفاع لجميع أنظمة الذاكرة عن طريق تضمين –no-interleaving الخيار في الأمر aoc.

معلومات ذات صلة
تعطيل التشذير المتتابع للذاكرة العالمية (-عدم التشذير )

1.5. التحقق من وظيفة الذاكرة غير المتجانسة نظام
للتأكد من أن نظام الذاكرة غير المتجانسة يعمل بشكل صحيح، قم بإلغاء تعيين علامة 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;
    // افترض عدم وجود rbf أو تجزئة في fpga.bin
    int rbf_or_hash_not_provided = 1;
    // افترض أن تجزئات المراجعة الأساسية واستيرادها غير متطابقتين
    كثافة العمليات hash_mismatch = 1؛

    }
  5. إعادة ترجمة acl_pcie_device.cpp file.
  6. تحقق من أن علامة CL_CONTEXT_COMPILER_MODE_INTELFPGA تظل غير مضبوطة.
    انتباه: بعد إضافة العودة 0؛ إلى وظيفة إعادة البرمجة وإعادة ترجمة MMD file، ستقوم بيئة التشغيل بقراءة الملف .aocx file وتعيين مواقع المخزن المؤقت ولكن لن يتم إعادة برمجة FPGA. يجب عليك مطابقة صورة FPGA يدويًا مع ملف .aocx file. لعكس هذا السلوك، قم بإزالة return 0; من وظيفة إعادة البرمجة وإعادة ترجمة MMD 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.

إنتل - الشعارإنشاء أنظمة ذاكرة غير متجانسة في Intel® FPGA SDK لـ OpenCL
المنصات المخصصة
إنتل تقوم بإنشاء أنظمة ذاكرة غير متجانسة في FPGA SDK لمنصات OpenCL المخصصة - أيقونة 1 إرسال التعليقات
إنتل تقوم بإنشاء أنظمة ذاكرة غير متجانسة في FPGA SDK لمنصات OpenCL المخصصة - أيقونة نسخة على الانترنت
إنتل تقوم بإنشاء أنظمة ذاكرة غير متجانسة في FPGA SDK لمنصات OpenCL المخصصة - أيقونة 1 إرسال التعليقات
المعرف: 683654
الإصدار: 2016.12.13

المستندات / الموارد

إنتل تقوم بإنشاء أنظمة ذاكرة غير متجانسة في FPGA SDK لمنصات OpenCL المخصصة [بي دي اف] تعليمات
إنشاء أنظمة ذاكرة غير متجانسة في FPGA SDK لمنصات OpenCL المخصصة، إنشاء أنظمة ذاكرة غير متجانسة، FPGA SDK لمنصات OpenCL المخصصة

مراجع

اترك تعليقا

لن يتم نشر عنوان بريدك الإلكتروني. تم وضع علامة على الحقول المطلوبة *