Intel - логоOpenCL Custom Platforms-д зориулсан FPGA SDK-д нэг төрлийн санах ойн системийг бий болгох
Заавар

OpenCL тусгай платформд зориулсан Intel® FPGA SDK-д нэг төрлийн санах ойн системийг бий болгох

Захиалгат платформд янз бүрийн санах ойг хэрэгжүүлэх нь илүү гадаад санах ойн интерфэйс (EMIF) зурвасын өргөн, санах ойд илүү том, хурдан нэвтрэх боломжийг олгодог. Нэг төрлийн санах ойн хандалтыг оновчтой болгосон хослол
OpenCL ™(1) цөм нь таны OpenCL системийн гүйцэтгэлийг мэдэгдэхүйц сайжруулахад хүргэдэг.
Энэхүү програмын тэмдэглэл нь OpenCL(2)-д зориулсан Intel® FPGA SDK-тэй ашиглахад зориулагдсан тусгай платформд янз бүрийн санах ойн системийг бий болгох зааварчилгааг өгдөг. Intel таныг янз бүрийн санах ойн системийг агуулсан Custom Platforms хөгжүүлж буй туршлагатай FPGA дизайнер гэж үздэг.
Төрөл бүрийн санах ойн системийг үүсгэхийн өмнө доор дурдсан OpenCL баримт бичигт зориулсан Intel FPGA SDK-тэй танилцаарай.
Холбогдох мэдээлэл

  • OpenCL програмчлалын гарын авлагад зориулсан Intel FPGA SDK
  • OpenCL шилдэг туршлагын гарын авлагад зориулсан Intel FPGA SDK
  • OpenCL Arria 10 GX FPGA хөгжүүлэлтийн иж бүрдэлд зориулсан Intel FPGA SDK Лавлагааны платформ портын гарын авлага

1.1. FPGA самбар болон EMIF интерфэйсүүдийн ажиллагааг шалгах

Санах ойн интерфэйс бүрийг бие даан шалгаж, дараа нь дэлхийн санах ойг ашиглан Custom Platform-оо үүсгэнэ үү.

  1. Интерфейс бүрийн хурд, тогтвортой байдлыг шалгах боломжтой техник хангамжийн загварыг ашиглан санах ойн интерфейс бүрийг шалгана уу.
  2. Глобал санах ойг ашиглан захиалгат платформоо үүсгээрэй.
    1. Жишээ ньampХэрэв танд гурван DDR интерфэйс байгаа бол тэдгээрийн аль нэгийг нь гетероген санах ой гэж дүрсэлсэн байх ёстой. Энэ тохиолдолд DDR интерфэйс бүрээр OpenCL стекийн ажиллагааг бие даан шалгана уу.
      OpenCL болон OpenCL лого нь Khronos Group™-ийн зөвшөөрлөөр ашиглагддаг Apple Inc.-ийн худалдааны тэмдэг юм.
    2.  OpenCL-д зориулсан Intel FPGA SDK нь хэвлэгдсэн Khronos техникийн тодорхойлолт дээр үндэслэсэн бөгөөд Khronos нийцлийн туршилтын процессыг давсан. Одоогийн тохирлын төлөвийг дараах хаягаас авах боломжтой www.khronos.org/conformance.

Intel корпораци. Бүх эрх хуулиар хамгаалагдсан. Intel, Intel лого болон бусад Intel тэмдэг нь Intel корпораци эсвэл түүний охин компаниудын худалдааны тэмдэг юм. Intel нь өөрийн FPGA болон хагас дамжуулагч бүтээгдэхүүнүүдээ Intel-ийн стандарт баталгааны дагуу одоогийн техникийн үзүүлэлтүүдэд нийцүүлэн ажиллуулах баталгаа өгдөг ч аливаа бүтээгдэхүүн, үйлчилгээнд ямар ч үед мэдэгдэлгүйгээр өөрчлөлт оруулах эрхтэй. Intel нь бичгээр тохиролцсоноос бусад тохиолдолд энд дурдсан аливаа мэдээлэл, бүтээгдэхүүн, үйлчилгээг ашиглах, ашиглахаас үүдэн гарах хариуцлага, хариуцлага хүлээхгүй. Intel-ийн хэрэглэгчид нийтлэгдсэн мэдээлэлд найдах, бүтээгдэхүүн, үйлчилгээний захиалга өгөхөөс өмнө төхөөрөмжийн техникийн үзүүлэлтүүдийн хамгийн сүүлийн хувилбарыг авахыг зөвлөж байна. *Бусад нэр, брэндийг бусдын өмч гэж үзэж болно.
ISO 9001:2015 Бүртгэгдсэн
Эсвэл, хэрэв танд хоёр DDR интерфэйс, нэг дөрвөлжин өгөгдлийн хурд (QDR) интерфэйс байгаа бол хоёр DDR интерфейс болон QDR интерфейсийн OpenCL стекийн ажиллагааг бие даан шалгаарай.
Санах ойн интерфейсээ шалгахын тулд PCI Express® – (PCIe® -) эсвэл EMIF-ийн онцгой загваруудыг ашиглахыг Intel зөвлөж байна. Санах ойн интерфэйс бүр ажиллаж, OpenCL загвар нь санах ойн интерфейсийн дэд хэсэгтэй ажиллаж байгаа эсэхийг шалгасны дараа үргэлжлүүлнэ үү.
бүрэн ажиллагаатай гетероген санах ойн системийг бий болгох. 
1.2. board_spec.xml-г өөрчилж байна File
board_spec.xml-г өөрчлөх file OpenCL цөмд байдаг нэг төрлийн бус санах ойн системийн төрлийг тодорхойлох.
Цөмийг эмхэтгэх явцад OpenCL Offline Compiler-д зориулсан Intel FPGA SDK нь таны зааж өгсөн буферийн байршлын аргумент дээр үндэслэн санах ойд цөмийн аргументуудыг оноодог.
1. board_spec.xml руу очно уу file Таны захиалгат платформын техник хангамжийн лавлах.
2. board_spec.xml-г нээнэ үү file текст засварлагч дээр суулгаж, XML-г тохируулан өөрчлөх.
Жишээ ньampХэрэв таны техник хангамжийн систем анхдагч глобал санах ой гэж хоёр DDR санах ойтой бол таны загварчлагдсан хоёр QDR банктай бол board_spec.xml санах ойн хэсгүүдийг өөрчил. file дараахтай төстэй:
















1.3. Qsys дээр олон санах ой хуваагчийг тохируулах
Одоогоор Qsys загвар дахь OpenCL санах ойн банк хуваагч нь 2-оос доошгүй тооны санах ойн банкуудыг дэмждэггүй бөгөөд энэ нь ердийн тохиргоонд хязгаарлалт биш юм. Гэсэн хэдий ч 2-оос хэтрэхгүй тооны санах ойн интерфейс шаардлагатай хувилбарууд байдаг. 2-т багтаагүй санах ойн интерфэйсийг байрлуулахын тулд олон OpenCL санах ойн банк хуваагчийг ашиглан 2-ын багтаамжгүй тооны санах ойн банкуудтай нэг төрлийн санах ойн системийг бий болгоно. Жинхэнэ гетероген санах ойн системтэй бол та олон OpenCL санах ойн банк хуваагч үүсгэх ёстой. Нэг DDR санах ой, нэг QDR санах ойн интерфейстэй системийг авч үзье. Хоёр банк өөр өөр санах ойн топологитой тул та тэдгээрийг нэг дэлхийн санах ойд нэгтгэх боломжгүй.
Зураг 1. Гурван банкны нэг төрлийн бус санах ойн системийн блок диаграмм
Энэхүү нэг төрлийн бус санах ойн систем нь хоёр DDR санах ой, нэг QDR санах ойн интерфейсийг агуулдаг.intel OpenCL Custom Platforms-д зориулсан FPGA SDK-д нэг төрлийн санах ойн системийг бий болгох - зураг 1Хэрэв та Intel Quartus® Prime программ хангамжийн 16.0, 16.0.1 эсвэл 16.0.2 хувилбарыг болон OpenCL-д зориулсан Altera SDK-г ашиглаж байгаа бол OpenCL санах ойн банк хуваагч нь хаягийн хязгаарыг дамжих санах ойн тасралтыг буруу зохицуулдаг. Энэ мэдэгдэж байгаа асуудлыг шийдэхийн тулд 1-ийн тэсрэлттэй дамжуулах хоолойн гүүр нэмж, түүний Avalon ®Memory-Mapped (Avalon-MM) мастерийг OpenCL Memory Bank Divider-ийн slave порт руу холбоно уу.
Жич:
Энэхүү мэдэгдэж буй асуудлыг Intel Quartus Prime програм хангамж болон OpenCL 16.1 хувилбарт зориулсан Intel FPGA SDK дээр зассан.
Зураг 2. Дамжуулах хоолойн гүүр бүхий гурван банкны нэг төрлийн бус санах ойн системийн блок диаграмм intel OpenCL Custom Platforms-д зориулсан FPGA SDK-д нэг төрлийн санах ойн системийг бий болгох - зураг 21.4. Төрөл бүрийн санах ойн шийдэлд зориулж Boardtest програм болон хост кодыг өөрчлөх
OpenCL Custom Platform Toolkit-д зориулсан Intel FPGA SDK-д дагалддаг boardtest.cl цөмийг ашиглан захиалгат платформын ажиллагаа болон гүйцэтгэлийг шалгаарай.
Тестийн программ нь OpenCL цөм бөгөөд хост хоорондын зурвасын өргөн, санах ойн зурвасын өргөн болон захиалгат платформын ерөнхий функцийг шалгах боломжийг олгодог.

  1. -руу хайна уу /самбар/ 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(unsigned) * vectorSize, NULL, &status);
    Буфер бичихээсээ өмнө буферийн байршлыг цөмийн аргумент болгон тохируулахыг Intel зөвлөж байна. Ганц глобал санах ойг ашиглах үед та буферийг цөмийн аргументуудад оноохоос өмнө эсвэл дараа бичиж болно. Нэг төрлийн санах ойн системд хост нь буфер бичихээс өмнө буферийн байршлыг тогтоодог. Өөрөөр хэлбэл, хост нь clEnqueueWriteBuffer функцийг дуудахаасаа өмнө clSetKernelArgument функцийг дуудах болно.
    Хост коддоо clCreateBuffer, clSetKernelArg болон clEnqueueWriteBuffer дуудлагуудыг дараах дарааллаар дуудна уу:
    ddatain = clCreateBuffer(контекст, CL_MEM_READ_WRITE | memflags |
    CL_MEM_HETEROGENEOUS_INTELFPGA, sizeof(unsigned) * vectorSize, NULL, &status);
    … байдал = clSetKernelArg(цөм[k], 0, хэмжээ(cl_mem), (хүчингүй*)&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 болон хост код, хост болон цөмийн кодыг эмхэтгэж, тэдгээрийн ажиллагааг шалгана.
    Цөмийн кодыг эмхэтгэхдээ та бүх санах ойн системүүдийн burst-interleaving -no-interleaving-г идэвхгүй болгох ёстой. aoc команд дахь сонголт.

Холбогдох мэдээлэл
Глобал санах ойн burst-interleaving-г идэвхгүй болгох (–үлээхгүй )

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::дахин программ(хүчингүй *өгөгдөл, хэмжээ_t өгөгдлийн_хэмжээ)
    {
    буцаах 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-р сарын XNUMX 2017.12.01 • CL_MEM_HETEROGENEOUS_ALTERA-г CL_MEM_HETEROGENEOUS_INTELFPGA болгон өөрчилсөн.
16-р сарын XNUMX 2016.12.13 • CL_CONTEXT_COMPILER_MODE_ALTERA-г CL_CONTEXT_COMPILER_MODE_INTELFPGA болгон өөрчилсөн.

Intel - логоOpenCL-д зориулсан Intel® FPGA SDK-д нэг төрлийн бус санах ойн системийг бий болгох
Захиалгат платформууд
intel OpenCL Custom Platforms-д зориулсан FPGA SDK-д нэг төрлийн санах ойн системийг бий болгох нь - icon 1 Санал хүсэлт илгээх
intel OpenCL Custom Platforms-д зориулсан FPGA SDK-д нэг төрлийн санах ойн системийг бий болгож байна - icon Онлайн хувилбар
intel OpenCL Custom Platforms-д зориулсан FPGA SDK-д нэг төрлийн санах ойн системийг бий болгох нь - icon 1 Санал хүсэлт илгээх
ID: 683654
Хувилбар: 2016.12.13

Баримт бичиг / нөөц

intel OpenCL Custom Platforms-д зориулсан FPGA SDK-д нэг төрлийн санах ойн системийг бий болгох [pdf] Заавар
OpenCL Custom Platforms-д зориулсан FPGA SDK-д нэг төрлийн бус санах ойн системийг бий болгох, нэг төрлийн бус санах ойн системийг бий болгох, OpenCL тусгай платформд зориулсан FPGA SDK

Лавлагаа

Сэтгэгдэл үлдээгээрэй

Таны имэйл хаягийг нийтлэхгүй. Шаардлагатай талбаруудыг тэмдэглэсэн *