ઇન્ટેલ - લોગો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. માજી માટેample, જો તમારી પાસે ત્રણ DDR ઈન્ટરફેસ હોય, તો તેમાંથી એક વિજાતીય મેમરી તરીકે મેપ થયેલ હોવું જોઈએ. આ કિસ્સામાં, દરેક DDR ઈન્ટરફેસ સાથે OpenCL સ્ટેકની કાર્યક્ષમતાને સ્વતંત્ર રીતે ચકાસો.
      OpenCL અને OpenCL લોગો એ Apple Inc. ના ટ્રેડમાર્ક છે જેનો ઉપયોગ Khronos Group™ ની પરવાનગી દ્વારા થાય છે.
    2.  OpenCL માટે Intel FPGA SDK પ્રકાશિત થયેલ Khronos સ્પેસિફિકેશન પર આધારિત છે, અને Khronos Conformance Testing પ્રક્રિયા પાસ કરી છે. વર્તમાન સુસંગતતા સ્થિતિ અહીં મળી શકે છે www.khronos.org/conformance.

ઇન્ટેલ કોર્પોરેશન. બધા હકો અમારી પાસે રાખેલા છે. ઇન્ટેલ, ઇન્ટેલ લોગો અને અન્ય ઇન્ટેલ ચિહ્નો ઇન્ટેલ કોર્પોરેશન અથવા તેની પેટાકંપનીઓના ટ્રેડમાર્ક છે. ઇન્ટેલ તેના FPGA અને સેમિકન્ડક્ટર ઉત્પાદનોના પ્રદર્શનને ઇન્ટેલની માનક વોરંટી અનુસાર વર્તમાન સ્પષ્ટીકરણો માટે વોરંટી આપે છે, પરંતુ સૂચના વિના કોઈપણ સમયે કોઈપણ ઉત્પાદનો અને સેવાઓમાં ફેરફાર કરવાનો અધિકાર અનામત રાખે છે. Intel દ્વારા લેખિતમાં સ્પષ્ટપણે સંમત થયા સિવાય અહીં વર્ણવેલ કોઈપણ માહિતી, ઉત્પાદન અથવા સેવાના એપ્લિકેશન અથવા ઉપયોગથી ઉદ્ભવતી કોઈ જવાબદારી અથવા જવાબદારી સ્વીકારતી નથી. ઇન્ટેલ ગ્રાહકોને સલાહ આપવામાં આવે છે કે તેઓ કોઈપણ પ્રકાશિત માહિતી પર આધાર રાખતા પહેલા અને ઉત્પાદનો અથવા સેવાઓ માટે ઓર્ડર આપતા પહેલા ઉપકરણ વિશિષ્ટતાઓનું નવીનતમ સંસ્કરણ પ્રાપ્ત કરે. *અન્ય નામો અને બ્રાન્ડનો દાવો અન્યની મિલકત તરીકે થઈ શકે છે.
ISO 9001:2015 નોંધાયેલ
વૈકલ્પિક રીતે, જો તમારી પાસે બે DDR ઈન્ટરફેસ અને એક ક્વાડ ડેટા રેટ (QDR) ઈન્ટરફેસ હોય, તો બે DDR ઈન્ટરફેસ અને QDR ઈન્ટરફેસના OpenCL સ્ટેકની કાર્યક્ષમતાને સ્વતંત્ર રીતે ચકાસો.
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 મેમરી ઇન્ટરફેસ છે.ઓપનસીએલ કસ્ટમ પ્લેટફોર્મ માટે એફપીજીએ એસડીકેમાં ઇન્ટેલ વિજાતીય મેમરી સિસ્ટમ્સ બનાવી રહી છે - ફિગ 1જો તમે Intel Quartus® Prime સોફ્ટવેરના સંસ્કરણ 16.0, 16.0.1, અથવા 16.0.2 અને OpenCL માટે Altera SDK નો ઉપયોગ કરી રહ્યાં છો, તો OpenCL મેમરી બેંક ડિવાઈડર એડ્રેસ બાઉન્ડ્રીમાં મેમરી બર્સ્ટને ખોટી રીતે હેન્ડલ કરે છે. આ જાણીતી સમસ્યાને ઉકેલવા માટે, 1 ના બર્સ્ટ સાઇઝ સાથે પાઇપલાઇન બ્રિજ ઉમેરો અને તેના Avalon ®Memory-Mapped (Avalon-MM) માસ્ટરને OpenCL મેમરી બેંક ડિવાઇડરના સ્લેવ પોર્ટ સાથે જોડો.
નોંધ:
આ જાણીતી સમસ્યા Intel Quartus Prime સોફ્ટવેર અને OpenCL આવૃત્તિ 16.1 માટે Intel FPGA SDKમાં સુધારેલ છે.
આકૃતિ 2. પાઈપલાઈન બ્રિજ સાથે થ્રી-બેંક વિજાતીય મેમરી સિસ્ટમનો બ્લોક ડાયાગ્રામ ઓપનસીએલ કસ્ટમ પ્લેટફોર્મ માટે એફપીજીએ એસડીકેમાં ઇન્ટેલ વિજાતીય મેમરી સિસ્ટમ્સ બનાવી રહી છે - ફિગ 21.4. તમારા વિજાતીય મેમરી સોલ્યુશન માટે બોર્ડટેસ્ટ પ્રોગ્રામ અને હોસ્ટ કોડમાં ફેરફાર કરવો
તમારા કસ્ટમ પ્લેટફોર્મની કાર્યક્ષમતા અને પ્રદર્શનને ચકાસવા માટે OpenCL કસ્ટમ પ્લેટફોર્મ ટૂલકીટ માટે Intel FPGA SDK સાથે આવતી boardtest.cl કર્નલનો ઉપયોગ કરો.
બોર્ડટેસ્ટ પ્રોગ્રામ એ 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 સિસ્ટમમાં તમારા વિજાતીય મેમરી સોલ્યુશનનો લાભ લેવા માટે, તમારા clCreateBuffer કૉલમાં CL_MEM_HETEROGENEOUS_INTELFPGA ફ્લેગ ઉમેરીને તમારા હોસ્ટ કોડને સંશોધિત કરો.
    માજી માટેampલે:
    ddatain = clCreateBuffer(સંદર્ભ, CL_MEM_READ_WRITE | memflags
    CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(અનસાઇન કરેલ) * વેક્ટરસાઇઝ, NULL, &સ્થિતિ);
    Intel ભારપૂર્વક ભલામણ કરે છે કે તમે બફર લખતા પહેલા કર્નલ દલીલ તરીકે બફર સ્થાન સેટ કરો. જ્યારે સિંગલ ગ્લોબલ મેમરીનો ઉપયોગ કરી રહ્યા હોય, ત્યારે તમે કર્નલ આર્ગ્યુમેન્ટને સોંપ્યા પહેલા અથવા પછી બફર્સ લખી શકો છો. વિજાતીય મેમરી સિસ્ટમ્સમાં, હોસ્ટ બફર લખતા પહેલા બફર સ્થાન સેટ કરે છે. બીજા શબ્દોમાં કહીએ તો, હોસ્ટ clEnqueueWriteBuffer ફંક્શનને કૉલ કરતા પહેલા clSetKernelArgument ફંક્શનને કૉલ કરશે.
    તમારા હોસ્ટ કોડમાં, નીચેના ક્રમમાં clCreateBuffer, clSetKernelArg અને clEnqueueWriteBuffer કૉલ્સનો ઉપયોગ કરો:
    ddatain = clCreateBuffer(સંદર્ભ, CL_MEM_READ_WRITE | memflags |
    CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(અનસાઇન કરેલ) * વેક્ટરસાઇઝ, NULL, &સ્થિતિ);
    … સ્થિતિ = clSetKernelArg(kernel[k], 0, sizeof(cl_mem), (void*)&ddatain);
    … સ્થિતિ = 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 અને હોસ્ટ કોડ, હોસ્ટ અને કર્નલ કોડને કમ્પાઈલ કરો અને તેમની કાર્યક્ષમતા ચકાસો.
    તમારા કર્નલ કોડને કમ્પાઇલ કરતી વખતે, તમારે -નો-ઇન્ટરલીવિંગનો સમાવેશ કરીને બધી મેમરી સિસ્ટમોના બર્સ્ટ-ઇન્ટરલીવિંગને નિષ્ક્રિય કરવું આવશ્યક છે. aoc આદેશમાં વિકલ્પ.

સંબંધિત માહિતી
ગ્લોબલ મેમરીના બર્સ્ટ-ઇન્ટરલીવિંગને અક્ષમ કરી રહ્યું છે (-નો-ઇન્ટરલીવિંગ )

1.5. તમારી વિજાતીય મેમરીની કાર્યક્ષમતા ચકાસવી સિસ્ટમ
વિજાતીય મેમરી સિસ્ટમ યોગ્ય રીતે કાર્ય કરે છે તેની ખાતરી કરવા માટે, તમારા હોસ્ટ કોડમાં CL_CONTEXT_COMPILER_MODE_INTELFPGA ફ્લેગને અનસેટ કરો.
સજાતીય મેમરી સાથે OpenCL સિસ્ટમોમાં, તમારે .aocx ના વાંચનને અક્ષમ કરવા માટે તમારા હોસ્ટ કોડમાં CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 ફ્લેગ સેટ કરવાનો વિકલ્પ આપવો પડશે. 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::રીપ્રોગ્રામ(અર્થાત *ડેટા, કદ_ટી ડેટા_સાઇઝ)
    {
    પરત 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 ઉમેર્યા પછી; રિપ્રોગ્રામ ફંક્શન પર જાઓ અને MMD ને ફરીથી કમ્પાઇલ કરો file, રનટાઇમ પર્યાવરણ .aocx વાંચશે file અને બફર સ્થાનો સોંપો પરંતુ FPGA ને ફરીથી પ્રોગ્રામ કરશે નહીં. તમારે FPGA ઈમેજને .aocx સાથે મેન્યુઅલી મેચ કરવી જોઈએ file. આ વર્તણૂકને વિપરીત કરવા માટે, વળતર 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 માં પુનઃબ્રાંડેડ.

ઇન્ટેલ - લોગોOpenCL માટે Intel® FPGA SDK માં વિજાતીય મેમરી સિસ્ટમ્સ બનાવવી
કસ્ટમ પ્લેટફોર્મ
ઓપનસીએલ કસ્ટમ પ્લેટફોર્મ માટે એફપીજીએ એસડીકેમાં ઇન્ટેલ વિજાતીય મેમરી સિસ્ટમ્સ બનાવી રહ્યું છે - આઇકોન 1 પ્રતિસાદ મોકલો
ઓપનસીએલ કસ્ટમ પ્લેટફોર્મ માટે એફપીજીએ એસડીકેમાં ઇન્ટેલ વિજાતીય મેમરી સિસ્ટમ્સ બનાવી રહ્યું છે - આઇકોન ઑનલાઇન સંસ્કરણ
ઓપનસીએલ કસ્ટમ પ્લેટફોર્મ માટે એફપીજીએ એસડીકેમાં ઇન્ટેલ વિજાતીય મેમરી સિસ્ટમ્સ બનાવી રહ્યું છે - આઇકોન 1 પ્રતિસાદ મોકલો
ID: 683654
સંસ્કરણ: 2016.12.13

દસ્તાવેજો / સંસાધનો

ઓપનસીએલ કસ્ટમ પ્લેટફોર્મ માટે એફપીજીએ એસડીકેમાં ઇન્ટેલ વિજાતીય મેમરી સિસ્ટમ્સ બનાવી રહ્યું છે [પીડીએફ] સૂચનાઓ
OpenCL કસ્ટમ પ્લેટફોર્મ્સ માટે FPGA SDK માં વિજાતીય મેમરી સિસ્ટમ્સ બનાવવી, વિજાતીય મેમરી સિસ્ટમ્સ બનાવવી, OpenCL કસ્ટમ પ્લેટફોર્મ્સ માટે FPGA SDK

સંદર્ભો

એક ટિપ્પણી મૂકો

તમારું ઇમેઇલ સરનામું પ્રકાશિત કરવામાં આવશે નહીં. જરૂરી ક્ષેત્રો ચિહ્નિત થયેલ છે *