OpenCL कस्टम प्लॅटफॉर्मसाठी FPGA SDK मध्ये विषम मेमरी सिस्टम तयार करणे
सूचना
OpenCL कस्टम प्लॅटफॉर्मसाठी Intel® FPGA SDK मध्ये विषम मेमरी सिस्टम तयार करणे
सानुकूल प्लॅटफॉर्ममध्ये विषम मेमरीची अंमलबजावणी अधिक बाह्य मेमरी इंटरफेस (EMIF) बँडविड्थ तसेच मोठ्या आणि जलद मेमरी प्रवेशास अनुमती देते. ऑप्टिमाइझसह विषम मेमरी प्रवेशाचे संयोजन
OpenCL ™(1) कर्नलमुळे तुमच्या OpenCL प्रणालीसाठी लक्षणीय कामगिरी सुधारणा होऊ शकते.
ही ऍप्लिकेशन नोट OpenCL(2) साठी Intel® FPGA SDK सह वापरण्यासाठी सानुकूल प्लॅटफॉर्ममध्ये विषम मेमरी सिस्टम तयार करण्याबाबत मार्गदर्शन प्रदान करते. इंटेल असे गृहीत धरते की तुम्ही एक अनुभवी FPGA डिझायनर आहात जो सानुकूल प्लॅटफॉर्म विकसित करत आहे ज्यामध्ये विषम मेमरी सिस्टम आहेत.
विषम मेमरी सिस्टम तयार करण्यापूर्वी, खाली नमूद केलेल्या OpenCL दस्तऐवजांसाठी Intel FPGA SDK शी परिचित व्हा.
संबंधित माहिती
- OpenCL प्रोग्रामिंग मार्गदर्शकासाठी इंटेल FPGA SDK
- OpenCL सर्वोत्तम पद्धती मार्गदर्शकासाठी इंटेल FPGA SDK
- OpenCL Arria 10 GX FPGA डेव्हलपमेंट किट संदर्भ प्लॅटफॉर्म पोर्टिंग मार्गदर्शक साठी Intel FPGA SDK
१.१. FPGA बोर्ड आणि EMIF इंटरफेसची कार्यक्षमता सत्यापित करणे
प्रत्येक मेमरी इंटरफेस स्वतंत्रपणे सत्यापित करा आणि नंतर ग्लोबल मेमरी वापरून तुमचा सानुकूल प्लॅटफॉर्म इन्स्टंट करा.
- हार्डवेअर डिझाइन वापरून प्रत्येक मेमरी इंटरफेस सत्यापित करा जे प्रत्येक इंटरफेसची गती आणि स्थिरता तपासू शकतात.
- ग्लोबल मेमरी वापरून तुमचा सानुकूल प्लॅटफॉर्म इन्स्टंट करा.
- उदाample, तुमच्याकडे तीन DDR इंटरफेस असल्यास, त्यापैकी एक विषम मेमरी म्हणून मॅप केलेला असणे आवश्यक आहे. या प्रकरणात, प्रत्येक DDR इंटरफेससह OpenCL स्टॅकची कार्यक्षमता स्वतंत्रपणे सत्यापित करा.
OpenCL आणि OpenCL लोगो हे Apple Inc. चे ट्रेडमार्क आहेत जे Khronos Group™ च्या परवानगीने वापरले जातात. - OpenCL साठी Intel FPGA SDK प्रकाशित Khronos स्पेसिफिकेशनवर आधारित आहे, आणि Khronos Conformance चाचणी प्रक्रिया उत्तीर्ण झाली आहे. वर्तमान अनुरूप स्थिती येथे आढळू शकते www.khronos.org/conformance.
- उदाample, तुमच्याकडे तीन DDR इंटरफेस असल्यास, त्यापैकी एक विषम मेमरी म्हणून मॅप केलेला असणे आवश्यक आहे. या प्रकरणात, प्रत्येक DDR इंटरफेससह OpenCL स्टॅकची कार्यक्षमता स्वतंत्रपणे सत्यापित करा.
इंटेल कॉर्पोरेशन. सर्व हक्क राखीव. इंटेल, इंटेल लोगो आणि इतर इंटेल चिन्ह हे इंटेल कॉर्पोरेशन किंवा त्याच्या उपकंपन्यांचे ट्रेडमार्क आहेत. इंटेल त्याच्या FPGA आणि सेमीकंडक्टर उत्पादनांच्या कार्यप्रदर्शनास इंटेलच्या मानक वॉरंटीनुसार वर्तमान वैशिष्ट्यांनुसार वॉरंटी देते, परंतु कोणत्याही वेळी कोणतीही सूचना न देता कोणतीही उत्पादने आणि सेवांमध्ये बदल करण्याचा अधिकार राखून ठेवते. इंटेलने लिखित स्वरूपात स्पष्टपणे मान्य केल्याशिवाय येथे वर्णन केलेल्या कोणत्याही माहिती, उत्पादन किंवा सेवेच्या अर्जामुळे किंवा वापरामुळे उद्भवणारी कोणतीही जबाबदारी किंवा उत्तरदायित्व इंटेल गृहीत धरत नाही. इंटेल ग्राहकांना कोणत्याही प्रकाशित माहितीवर विसंबून राहण्यापूर्वी आणि उत्पादने किंवा सेवांसाठी ऑर्डर देण्यापूर्वी डिव्हाइस वैशिष्ट्यांची नवीनतम आवृत्ती मिळविण्याचा सल्ला दिला जातो. *इतर नावे आणि ब्रँडवर इतरांची मालमत्ता म्हणून दावा केला जाऊ शकतो.
ISO 9001:2015 नोंदणीकृत
वैकल्पिकरित्या, तुमच्याकडे दोन DDR इंटरफेस आणि एक क्वाड डेटा रेट (QDR) इंटरफेस असल्यास, दोन DDR इंटरफेस आणि QDR इंटरफेसच्या OpenCL स्टॅकची कार्यक्षमता स्वतंत्रपणे सत्यापित करा.
तुमच्या मेमरी इंटरफेसची चाचणी घेण्यासाठी तुम्ही PCI Express® - (PCIe® -) किंवा EMIF-अनन्य डिझाइन वापरण्याची शिफारस Intel करते. प्रत्येक मेमरी इंटरफेस कार्यशील असल्याचे आणि तुमची OpenCL डिझाइन मेमरी इंटरफेसच्या उपसंचासह कार्य करते हे सत्यापित केल्यानंतर, पुढे जा.
पूर्णपणे कार्यशील विषम मेमरी प्रणाली तयार करण्यासाठी.
१.२. 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 खालील सारखे असणे:
१.३. Qsys मध्ये एकाधिक मेमरी डिव्हायडर सेट करणे
सध्या, Qsys डिझाइनमधील OpenCL मेमरी बँक डिव्हायडर नॉन-पॉवर-ऑफ-2 क्रमांकाच्या मेमरी बँकांना समर्थन देत नाही, जे ठराविक कॉन्फिगरेशनसाठी मर्यादा नाही. तथापि, अशी परिस्थिती आहे जिथे नॉन-पॉवर-ऑफ-2 क्रमांकाच्या मेमरी इंटरफेस आवश्यक आहेत. नॉन-पॉवर-ऑफ-2 क्रमांकाच्या मेमरी इंटरफेसला सामावून घेण्यासाठी, एकापेक्षा जास्त OpenCL मेमरी बँक डिव्हायडरचा वापर करा आणि मेमरी बँकांच्या नॉन-पॉवर-ऑफ-2 क्रमांकासह विषम मेमरी सिस्टम तयार करा. जेव्हा तुमच्याकडे खरी विषम मेमरी सिस्टम असेल तेव्हा तुम्ही एकाधिक OpenCL मेमरी बँक डिव्हायडर तयार केले पाहिजेत. एक DDR मेमरी इंटरफेस आणि एक QDR मेमरी इंटरफेस असलेल्या सिस्टमचा विचार करा. दोन बँकांच्या मेमरी टोपोलॉजीज भिन्न असल्यामुळे, तुम्ही त्यांना एकाच जागतिक मेमरी अंतर्गत एकत्र करू शकत नाही.
आकृती 1. तीन-बँक विषम मेमरी सिस्टमचा ब्लॉक आकृती
या विषम मेमरी सिस्टममध्ये दोन DDR मेमरी इंटरफेस आणि एक QDR मेमरी इंटरफेस आहे.तुम्ही Intel Quartus® Prime सॉफ्टवेअरची आवृत्ती 16.0, 16.0.1, किंवा 16.0.2 आणि OpenCL साठी Altera SDK वापरत असल्यास, OpenCL मेमरी बँक डिव्हायडर चुकीच्या पद्धतीने पत्त्याच्या सीमा ओलांडून मेमरी बर्स्ट हाताळते. या ज्ञात समस्येवर काम करण्यासाठी, 1 च्या बर्स्ट आकाराचा पाइपलाइन ब्रिज जोडा आणि त्याचा Avalon ®Memory-Mapped (Avalon-MM) मास्टर OpenCL मेमरी बँक डिव्हायडरच्या स्लेव्ह पोर्टशी कनेक्ट करा.
टीप:
ही ज्ञात समस्या Intel Quartus प्राइम सॉफ्टवेअर आणि OpenCL आवृत्ती 16.1 साठी Intel FPGA SDK मध्ये निश्चित केली आहे.
आकृती 2. पाइपलाइन ब्रिजसह तीन-बँक विषम मेमरी सिस्टमचे ब्लॉक आकृती १.४. तुमच्या विषम मेमरी सोल्यूशनसाठी बोर्डटेस्ट प्रोग्राम आणि होस्ट कोडमध्ये बदल करणे
तुमच्या कस्टम प्लॅटफॉर्मची कार्यक्षमता आणि कार्यप्रदर्शन तपासण्यासाठी OpenCL कस्टम प्लॅटफॉर्म टूलकिटसाठी Intel FPGA SDK सह येणारा boardtest.cl कर्नल वापरा.
बोर्डटेस्ट प्रोग्राम एक OpenCL कर्नल आहे जो तुम्हाला होस्ट-टू-डिव्हाइस बँडविड्थ, मेमरी बँडविड्थ आणि तुमच्या कस्टम प्लॅटफॉर्मची सामान्य कार्यक्षमता तपासण्याची परवानगी देतो.
- वर ब्राउझ करा /board/ custom_platform_toolkit/tests/boardtest निर्देशिका.
- boardtest.cl उघडा file मजकूर संपादकात आणि प्रत्येक जागतिक मेमरी युक्तिवादासाठी बफर स्थान नियुक्त करा.
उदाampले:
__कर्नल शून्य
mem_stream (__global__attribute__((buffer_location("DDR"))) uint *src, __global __विशेषता__((buffer_location("QDR"))) uint *dst, uint arg, uint arg2)
येथे, uint *src DDR मेमरीला नियुक्त केले आहे, आणि uint *dst QDR मेमरीला नियुक्त केले आहे. board_spec.xml file दोन्ही मेमरी सिस्टमची वैशिष्ट्ये निर्दिष्ट करते. - तुमच्या OpenCL सिस्टीममध्ये तुमच्या विषम मेमरी सोल्यूशनचा फायदा घेण्यासाठी, तुमच्या clCreateBuffer कॉलमध्ये CL_MEM_HETEROGENEOUS_INTELFPGA ध्वज जोडून तुमचा होस्ट कोड बदला.
उदाampले:
ddatain = clCreateBuffer(संदर्भ, CL_MEM_READ_WRITE | memflags
CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(अस्वाक्षरीकृत) * vectorSize, NULL, &status);
इंटेल जोरदार शिफारस करतो की तुम्ही बफर लिहिण्यापूर्वी कर्नल आर्ग्युमेंट म्हणून बफर स्थान सेट करा. सिंगल ग्लोबल मेमरी वापरताना, तुम्ही बफर्सना कर्नल आर्ग्युमेंटला नियुक्त करण्यापूर्वी किंवा नंतर लिहू शकता. विषम मेमरी सिस्टममध्ये, होस्ट बफर लिहिण्यापूर्वी बफर स्थान सेट करतो. दुसऱ्या शब्दांत, clEnqueueWriteBuffer फंक्शनला कॉल करण्यापूर्वी होस्ट clSetKernelArgument फंक्शनला कॉल करेल.
तुमच्या होस्ट कोडमध्ये, खालील क्रमाने clCreateBuffer, clSetKernelArg आणि clEnqueueWriteBuffer कॉल सुरू करा:
ddatain = clCreateBuffer(संदर्भ, CL_MEM_READ_WRITE | memflags |
CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(अस्वाक्षरीकृत) * 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 या फंक्शन कॉलचा समान क्रम सादर करते. - तुम्ही boardtest.cl मध्ये बदल केल्यानंतर file आणि होस्ट कोड, होस्ट आणि कर्नल कोड संकलित करा आणि त्यांची कार्यक्षमता सत्यापित करा.
तुमचा कर्नल कोड संकलित करताना, तुम्ही –नो-इंटरलीव्हिंग समाविष्ट करून सर्व मेमरी सिस्टीमचे बर्स्ट-इंटरलीव्हिंग अक्षम केले पाहिजे. aoc कमांडमधील पर्याय.
संबंधित माहिती
ग्लोबल मेमरीचे बर्स्ट-इंटरलीव्हिंग अक्षम करणे (-नो-इंटरलीव्हिंग )
१.५. तुमच्या विषम स्मृतीची कार्यक्षमता पडताळणे प्रणाली
विषम मेमरी सिस्टम योग्यरित्या कार्य करते याची खात्री करण्यासाठी, तुमच्या होस्ट कोडमधील CL_CONTEXT_COMPILER_MODE_INTELFPGA ध्वज अनसेट करा.
एकसंध मेमरी असलेल्या OpenCL सिस्टीममध्ये, तुम्हाला .aocx चे वाचन अक्षम करण्यासाठी तुमच्या होस्ट कोडमध्ये CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 ध्वज सेट करण्याचा पर्याय द्यावा लागेल. file आणि FPGA चे रीप्रोग्रामिंग. CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 ध्वज सेट करणे तुमच्या सानुकूल प्लॅटफॉर्मच्या कार्यक्षमतेची पडताळणी करण्यासाठी फ्लोअरप्लॅनची रचना न करता आणि LogicLock™ क्षेत्र निर्दिष्ट केल्याशिवाय तुमच्या बोर्डची स्थापना करताना उपयुक्त आहे.
विषम मेमरी सिस्टमसह, रनटाइम वातावरणाने प्रत्येक बफरची बफर स्थाने वाचली पाहिजेत, .aocx मध्ये वर्णन केले आहे. file, मेमरी सिस्टमची कार्यक्षमता सत्यापित करण्यासाठी. तथापि, तुम्हाला बोर्ड डिझाइनची अंतिम वैशिष्ट्ये लागू न करता तुमच्या सानुकूल प्लॅटफॉर्मची कार्यक्षमता सत्यापित करायची असेल, जसे की फ्लोरप्लॅन डिझाइन करणे आणि लॉजिकलॉक प्रदेश निर्दिष्ट करणे.
- तुमच्या होस्ट कोडमध्ये CL_CONTEXT_COMPILER_MODE_INTELFPGA ध्वज सेट केलेला नसल्याची पडताळणी करा.
- बोर्ड वर ब्राउझ करा/ तुमच्या कस्टम प्लॅटफॉर्मची /source/host/mmd निर्देशिका.
- acl_pcie_device.cpp मेमरी-मॅप केलेले डिव्हाइस (MMD) उघडा file मजकूर संपादकात.
- acl_pcie_device.cpp मधील रीप्रोग्राम फंक्शन सुधारित करा file परतावा 0 जोडून; ओळ, खाली दर्शविल्याप्रमाणे:
int ACL_PCIE_DEVICE::रीप्रोग्राम(void *डेटा, साइज_टी डेटा_साइज)
{
परतावा 0;
// अपयश गृहीत धरा
int reprogram_failed = 1;
// fpga.bin मध्ये आरबीएफ किंवा हॅश नाही असे गृहीत धरा
int rbf_or_hash_not_provided = 1;
// गृहीत धरा बेस आणि इंपोर्ट रिव्हिजन हॅश जुळत नाहीत
int hash_mismatch = 1;
…
} - acl_pcie_device.cpp पुन्हा संकलित करा file.
- CL_CONTEXT_COMPILER_MODE_INTELFPGA ध्वज सेट नसलेला असल्याचे सत्यापित करा.
लक्ष द्या: तुम्ही रिटर्न 0 जोडल्यानंतर; रीप्रोग्राम फंक्शनवर जा आणि MMD पुन्हा कंपाइल करा file, रनटाइम वातावरण .aocx वाचेल file आणि बफर स्थाने नियुक्त करा परंतु FPGA पुन्हा प्रोग्राम करणार नाही. तुम्ही FPGA इमेज मॅन्युअली .aocx शी जुळली पाहिजे 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 मध्ये विषम मेमरी सिस्टम तयार करणे
सानुकूल प्लॅटफॉर्म
अभिप्राय पाठवा
ऑनलाइन आवृत्ती
अभिप्राय पाठवा
ID: 683654
आवृत्ती: 2016.12.13
कागदपत्रे / संसाधने
![]() |
Intel OpenCL कस्टम प्लॅटफॉर्मसाठी FPGA SDK मध्ये विषम मेमरी सिस्टम तयार करत आहे [pdf] सूचना OpenCL कस्टम प्लॅटफॉर्मसाठी FPGA SDK मध्ये विषम मेमरी सिस्टम तयार करणे, विषम मेमरी सिस्टम तयार करणे, OpenCL कस्टम प्लॅटफॉर्मसाठी FPGA SDK |