FPGA SDK สำหรับ OpenCL
คู่มือการใช้งาน
UG-OCL009
2017.05.08
อัปเดตล่าสุดสำหรับ Intel® Quartus® Prime Design Suite: 17.0
สมัครสมาชิก
ส่งคำติชม
Intel® FPGA SDK for OpenCL™ Intel® Cyclone®V SoC Development Kit Reference Platform Platform Guide
คู่มือการพอร์ตแพลตฟอร์มอ้างอิง V SoC Development Kit อธิบายถึงการออกแบบฮาร์ดแวร์และซอฟต์แวร์ของ Intel Cyclone V SoC Development Kit Reference Platform (c5soc) สำหรับใช้กับ Intel Software Development Kit (SDK) สำหรับ OpenCL Intel ® FPGA SDK สำหรับ OpenCL ™ Intel Cyclone ® . ก่อนที่คุณจะเริ่มต้น Intel ขอแนะนำอย่างยิ่งให้คุณทำความคุ้นเคยกับเนื้อหาของเอกสารต่อไปนี้:
- Intel FPGA SDK สำหรับ OpenCLIntel Cyclone V SoC คู่มือเริ่มต้นใช้งาน
- คู่มือผู้ใช้ Intel FPGA SDK สำหรับ OpenCL Custom Platform Toolkit
- คู่มืออุปกรณ์ Cyclone V เล่มที่ 3: คู่มืออ้างอิงทางเทคนิคของระบบโปรเซสเซอร์ฮาร์ด นอกจากนี้ โปรดดูที่หน้า Cyclone V SoC Development Kit และ SoC Embedded Design Suite ของ Altera webเว็บไซต์สำหรับข้อมูลเพิ่มเติม 1 2
ความสนใจ: Intel ถือว่าคุณมีความเข้าใจเชิงลึกเกี่ยวกับคู่มือผู้ใช้ Intel FPGA SDK สำหรับ OpenCL Custom Platform Toolkit คู่มือการพอร์ตแพลตฟอร์มอ้างอิงสำหรับชุดพัฒนา Cyclone V SoC ไม่ได้อธิบายถึงการใช้งานชุดเครื่องมือแพลตฟอร์มที่กำหนดเองของ SDK เพื่อใช้งานแพลตฟอร์มที่กำหนดเองสำหรับชุดพัฒนา Cyclone V SoC โดยจะอธิบายความแตกต่างระหว่างการรองรับ SDK บน Cyclone V SoC Development Kit และ Intel FPGA SDK ทั่วไปสำหรับ OpenCL Custom Platform
ลิงก์ที่เกี่ยวข้อง
- คู่มือเริ่มต้นใช้งาน Intel FPGA SDK สำหรับ OpenCL Cyclone V SoC
- คู่มือผู้ใช้ Intel FPGA SDK สำหรับ OpenCL Custom Platform Toolkit
- คู่มืออุปกรณ์ Cyclone V เล่มที่ 3: คู่มืออ้างอิงทางเทคนิคของระบบโปรเซสเซอร์ฮาร์ด
- Cyclone V SoC Development Kit และ SoC Embedded Design Suite บน Altera webเว็บไซต์
- OpenCL และโลโก้ OpenCL เป็นเครื่องหมายการค้าของ Apple Inc. ซึ่งใช้โดยได้รับอนุญาตจาก Khronos Group™
- Intel FPGA SDK สำหรับ OpenCL อิงตามข้อมูลจำเพาะของ Khronos ที่เผยแพร่ และผ่านกระบวนการทดสอบความสอดคล้องของ Khronos สามารถดูสถานะความสอดคล้องปัจจุบันได้ที่ www.khronos.org/conformance.
อินเทล คอร์ปอเรชั่น สงวนลิขสิทธิ์. Intel, โลโก้ Intel, Altera, Arria, Cyclone, Enpirion, MAX, Nios, Quartus และ Stratix เป็นเครื่องหมายการค้าของ Intel Corporation หรือบริษัทสาขาในสหรัฐอเมริกาและ/หรือประเทศอื่นๆ Intel รับประกันประสิทธิภาพของผลิตภัณฑ์ FPGA และเซมิคอนดักเตอร์ตามข้อมูลจำเพาะปัจจุบันตามการรับประกันมาตรฐานของ Intel แต่ขอสงวนสิทธิ์ในการเปลี่ยนแปลงผลิตภัณฑ์และบริการใดๆ ได้ตลอดเวลาโดยไม่ต้องแจ้งให้ทราบล่วงหน้า Intel ไม่มีส่วนรับผิดชอบหรือความรับผิดที่เกิดขึ้นจากแอปพลิเคชันหรือการใช้ข้อมูล ผลิตภัณฑ์ หรือบริการใด ๆ ที่อธิบายไว้ในที่นี้ ยกเว้นตามที่ Intel ตกลงเป็นลายลักษณ์อักษรโดยชัดแจ้ง ขอแนะนำให้ลูกค้าของ Intel ได้รับข้อมูลจำเพาะของอุปกรณ์เวอร์ชันล่าสุดก่อนที่จะใช้ข้อมูลที่เผยแพร่ใด ๆ และก่อนที่จะทำการสั่งซื้อผลิตภัณฑ์หรือบริการ
*ชื่อและยี่ห้ออื่น ๆ อาจถูกอ้างสิทธิ์โดยถือเป็นทรัพย์สินของผู้อื่น
1.1.1 Cyclone V SoC Development Kit Reference Platform Board ตัวแปร
Intel FPGA SDK สำหรับ OpenCL Cyclone V SoC Development Kit Reference Platform ประกอบด้วยบอร์ดสองรุ่น
- บอร์ด c5soc
บอร์ดเริ่มต้นนี้ให้การเข้าถึงธนาคารหน่วยความจำ DDR สองแห่ง HPS DDR สามารถเข้าถึงได้โดยทั้ง FPGA และ CPU FPGA DDR สามารถเข้าถึงได้โดย FPGA เท่านั้น - c5soc_sharedonly บอร์ด
ตัวแปรของบอร์ดนี้มีการเชื่อมต่อ HPS DDR เท่านั้น ไม่สามารถเข้าถึง FPGA DDR ได้ ตัวแปรของบอร์ดนี้มีประสิทธิภาพด้านพื้นที่มากกว่าเนื่องจากจำเป็นต้องใช้ฮาร์ดแวร์น้อยกว่าเพื่อรองรับหน่วยความจำ DDR หนึ่งธนาคาร บอร์ด c5soc_sharedonly ยังเป็นแพลตฟอร์มต้นแบบที่ดีสำหรับบอร์ดการผลิตขั้นสุดท้ายที่มีหน่วยความจำ DDR เดียว
ในการกำหนดเป้าหมายตัวแปรบอร์ดนี้เมื่อคอมไพล์เคอร์เนล OpenCL ให้รวมตัวเลือก -board c5soc_sharedonly ในคำสั่ง aoc ของคุณ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ –board ตัวเลือกของคำสั่ง aoc โปรดดูที่ Intel FPGA SDK สำหรับคู่มือการเขียนโปรแกรม OpenCL
ลิงก์ที่เกี่ยวข้อง
การรวบรวมเคอร์เนลสำหรับบอร์ด FPGA เฉพาะ (–board )
1.1.2 เนื้อหาของแพลตฟอร์มอ้างอิง Cyclone V SoC Development Kit
แพลตฟอร์มการอ้างอิง Cyclone V SoC Development Kit ประกอบด้วยสิ่งต่อไปนี้ files และไดเร็กทอรี:
File หรือไดเร็กทอรี | คำอธิบาย |
บอร์ด env.xml | ภาษามาร์กอัป eXtensible (XML) file ที่อธิบาย c5soc ถึง Intel FPGA SDK สำหรับ OpenCL |
ลินุกซ์_sd_card_image.tgz | ภาพแฟลชการ์ด SD ที่ถูกบีบอัด file ที่มีทุกอย่างที่ผู้ใช้ SDK จำเป็นต้องใช้ Cyclone V SoC Development Kit กับ SDK |
อาร์ม32 | ไดเร็กทอรีที่มีดังต่อไปนี้: |
1.1.3 คุณลักษณะที่เกี่ยวข้องของชุดพัฒนา Cyclone V SoC
รายการต่อไปนี้เน้นส่วนประกอบ Cyclone V SoC Development Kit และคุณสมบัติที่เกี่ยวข้องกับ Intel FPGA SDK สำหรับ OpenCL:
- CPU ARM Cortex-A9 แบบดูอัลคอร์ที่ใช้ Linux แบบ 32 บิต
- บัส Advanced eXtensible Interface (AXI) ระหว่าง HPS และแฟบริคหลัก FPGA
- ตัวควบคุมหน่วยความจำ DDR แบบแข็งสองตัว แต่ละตัวเชื่อมต่อกับ DDR1 SDRAM ขนาด 3 กิกะไบต์ (GB)
— คอนโทรลเลอร์ DDR หนึ่งตัวสามารถเข้าถึงได้จากคอร์ FPGA เท่านั้น (นั่นคือ FPGA DDR)
— คอนโทรลเลอร์ DDR อื่นสามารถเข้าถึงได้ทั้ง HPS และ FPGA (นั่นคือ HPS DDR) คอนโทรลเลอร์ที่ใช้ร่วมกันนี้ช่วยให้สามารถแชร์หน่วยความจำระหว่าง CPU และแกน FPGA ได้ฟรี - CPU สามารถกำหนดค่าแฟบริคหลัก FPGA ใหม่ได้
1.1.3.1 Cyclone V SoC Development Kit Reference Platform Design Goals and Decisions Intel ยึดหลักการนำ Cyclone V SoC Development Kit Reference Platform ไปใช้กับเป้าหมายและการตัดสินใจในการออกแบบหลายประการ Intel ขอแนะนำให้คุณพิจารณาเป้าหมายและการตัดสินใจเหล่านี้เมื่อคุณย้ายแพลตฟอร์มอ้างอิงนี้ไปยังบอร์ด SoC FPGA ของคุณ
ด้านล่างนี้คือเป้าหมายการออกแบบ c5soc:
- ให้แบนด์วิธสูงสุดที่เป็นไปได้ระหว่างเคอร์เนลบน FPGA และระบบหน่วยความจำ DDR
- ตรวจสอบให้แน่ใจว่าการคำนวณบน FPGA (นั่นคือเคอร์เนล OpenCL) ไม่รบกวนงาน CPU อื่นๆ ที่อาจรวมถึงบริการอุปกรณ์ต่อพ่วง
- ปล่อยให้ทรัพยากร FPGA มากที่สุดเท่าที่จะเป็นไปได้สำหรับการคำนวณเคอร์เนลแทนส่วนประกอบอินเทอร์เฟซ
ด้านล่างนี้คือการตัดสินใจในการออกแบบระดับสูงซึ่งเป็นผลโดยตรงจากเป้าหมายการออกแบบของ Intel:
- แพลตฟอร์มอ้างอิงใช้เฉพาะตัวควบคุมหน่วยความจำ DDR แบบฮาร์ดที่มีการกำหนดค่าที่กว้างที่สุด (256 บิต)
- FPGA สื่อสารกับตัวควบคุมหน่วยความจำ HPS DDR โดยตรง โดยไม่เกี่ยวข้องกับบัส AXI และสวิตช์ L3 ภายใน HPS การสื่อสารโดยตรงให้แบนด์วิธที่ดีที่สุดแก่ DDR และทำให้การคำนวณ FPGA ไม่รบกวนการสื่อสารระหว่าง CPU และอุปกรณ์ต่อพ่วง
- การเข้าถึงหน่วยความจำโดยตรงแบบกระจายรวบรวม (SG-DMA) ไม่ใช่ส่วนหนึ่งของลอจิกอินเทอร์เฟซ FPGA แทนที่จะถ่ายโอนข้อมูลจำนวนมากระหว่างระบบหน่วยความจำ DDR ให้จัดเก็บข้อมูลใน HPS DDR ที่ใช้ร่วมกัน การเข้าถึงโดยตรงไปยังหน่วยความจำ CPU โดย FPGA นั้นมีประสิทธิภาพมากกว่า DMA ช่วยประหยัดทรัพยากรฮาร์ดแวร์ (นั่นคือพื้นที่ FPGA) และทำให้ไดรเวอร์เคอร์เนล Linux ง่ายขึ้น
คำเตือน: การถ่ายโอนหน่วยความจำระหว่างระบบ HPS DDR ที่ใช้ร่วมกันและระบบ DDR ที่ FPGA เท่านั้นที่เข้าถึงได้นั้นช้ามาก หากคุณเลือกที่จะ
ถ่ายโอนหน่วยความจำในลักษณะนี้ ใช้สำหรับข้อมูลจำนวนน้อยมากเท่านั้น - โฮสต์และอุปกรณ์ทำการถ่ายโอนข้อมูลที่ไม่ใช่ DMA ระหว่างกันผ่านบริดจ์ HPS-to-FPGA (H2F) โดยใช้พอร์ต 32 บิตเพียงพอร์ตเดียว เหตุผลก็คือ หากไม่มี DMA เคอร์เนลของ Linux จะสามารถออกคำขออ่านหรือเขียนแบบ 32 บิตเดียวเท่านั้น ดังนั้นจึงไม่จำเป็นต้องมีการเชื่อมต่อที่กว้างขึ้น
- โฮสต์ส่งสัญญาณควบคุมไปยังอุปกรณ์ผ่านสะพาน H2F (LH2F) ที่มีน้ำหนักเบา
เนื่องจากสัญญาณควบคุมจากโฮสต์ไปยังอุปกรณ์เป็นสัญญาณที่มีแบนด์วิธต่ำ บริดจ์ LH2F จึงเหมาะสำหรับงานดังกล่าว
1.2 การย้ายแพลตฟอร์มอ้างอิงไปยังบอร์ด SoC FPGA ของคุณ
ในพอร์ต Cyclone V SoC Development Kit Reference Platform ไปยังบอร์ด SoC FPGA ของคุณ ให้ดำเนินการดังต่อไปนี้:
- เลือกหน่วยความจำ DDR หนึ่งรุ่นหรือหน่วยความจำ DDR สองรุ่นของแพลตฟอร์มอ้างอิง c5soc เป็นจุดเริ่มต้นของการออกแบบของคุณ
- อัปเดตตำแหน่งพินใน ALTERAOCLSDKROOT/board/c5soc/ /top.qsf fileโดยที่ ALTERAOCLSDKROOT เป็นเส้นทางไปยังตำแหน่งของ Intel FPGA SDK สำหรับการติดตั้ง OpenCL และ คือชื่อไดเร็กทอรีของตัวแปรบอร์ด ไดเร็กทอรี c5soc_sharedonly ใช้สำหรับบอร์ดที่มีระบบหน่วยความจำ DDR หนึ่งระบบ ไดเร็กทอรี c5soc ใช้สำหรับบอร์ดที่มีระบบหน่วยความจำ DDR สองระบบ
- อัปเดตการตั้งค่า DDR สำหรับบล็อก HPS และ/หรือ FPGA SDRAM ใน ALTERAOCLSDKROOT/board/c5soc/ /system.qsys file.
4. Intel FPGA SDK ทั้งหมดสำหรับการออกแบบบอร์ดที่ต้องการ OpenCL จะต้องได้รับการรับประกันการปิดตามเวลา ดังนั้นการวางตำแหน่งของการออกแบบจะต้องสะอาด ในพอร์ตพาร์ติชันบอร์ด c5soc (acl_iface_partition.qxp) ไปยังบอร์ด SoC FPGA ของคุณ ให้ดำเนินการดังต่อไปนี้:
สำหรับคำแนะนำโดยละเอียดเกี่ยวกับการปรับเปลี่ยนและการรักษาพาร์ติชันบอร์ด โปรดดูที่ Quartus
Prime Incremental Compilation for Hierarchical and Team-Based Design บทของคู่มือ Quartus Prime Standard Edition
ก. ลบ acl_iface_partition.qxp ออกจากไดเร็กทอรี ALTERAOCLSDKROOT/board/c5soc/c5soc
ข. เปิดใช้งานภูมิภาค acl_iface_region LogicLock™ โดยเปลี่ยนคำสั่ง Tcl set_global_assignment -name LL_ENABLED OFF -section_id acl_iface_region เป็น set_global_assignment -name LL_ENABLED ON -section_id acl_iface_region
ค. รวบรวมเคอร์เนล OpenCL สำหรับบอร์ดของคุณ
ง. หากจำเป็น ให้ปรับขนาดและตำแหน่งของขอบเขต LogicLock
อี เมื่อคุณพอใจว่าการจัดวางการออกแบบของคุณตรงเวลา ให้ส่งออกพาร์ติชันนั้นเป็น acl_iface_partition.qxp Quartus Prime Exported Partition File.
ตามที่อธิบายไว้ในส่วนการสร้าง Warrantyd Timing Flow ของคู่มือผู้ใช้ AIntel FPGA SDK สำหรับ OpenCL Custom Platform Toolkit โดยการนำเข้า .qxp นี้ file ในการออกแบบระดับบนสุด คุณปฏิบัติตามข้อกำหนดของการออกแบบบอร์ดที่มีการรับประกันการไหลของการปิดตามเวลา
สำหรับปัจจัยที่อาจส่งผลต่อคุณภาพของผลลัพธ์ (QoR) ของพาร์ติชันที่เอ็กซ์พอร์ตของคุณ โปรดดูส่วนการพิจารณาคุณภาพทั่วไปของผลลัพธ์สำหรับพาร์ติชันบอร์ดที่เอ็กซ์ปอร์ตในคู่มือผู้ใช้ Intel FPGA SDK สำหรับ OpenCL Custom Platform Toolkit
ฉ. ปิดใช้งานภูมิภาค acl_iface_region LogicLock โดยเปลี่ยนกลับคำสั่งในขั้นตอนที่ 2 กลับไปเป็น set_global_assignment -name LL_ENABLED OFF section_id acl_iface_region - หากบอร์ด SoC FPGA ของคุณใช้พินและอุปกรณ์ต่อพ่วงที่แตกต่างกันของบล็อก HPS ให้สร้างตัวโหลดล่วงหน้าและต้นทางแผนผังอุปกรณ์ (DTS) ใหม่ file. หากคุณเปลี่ยนการตั้งค่าตัวควบคุมหน่วยความจำ HPS DDR ให้สร้างตัวโหลดล่วงหน้าใหม่
- สร้างภาพแฟลชการ์ด SD
- สร้างแพลตฟอร์มแบบกำหนดเองของคุณ ซึ่งรวมถึงอิมเมจการ์ดแฟลช SD
- พิจารณาสร้างเวอร์ชันสภาพแวดล้อมรันไทม์ของแพลตฟอร์มแบบกำหนดเองของคุณเพื่อใช้กับ Intel FPGA Runtime Environment (RTE) สำหรับ OpenCL เวอร์ชัน RTE ของแพลตฟอร์มแบบกำหนดเองของคุณไม่มีไดเร็กทอรีฮาร์ดแวร์และอิมเมจการ์ด SD แพลตฟอร์มที่กำหนดเองนี้โหลดลงในระบบ SoC FPGA เพื่อให้แอปพลิเคชันโฮสต์ทำงาน ในทางตรงกันข้าม เวอร์ชัน SDK ของ Custom Platform นั้นจำเป็นสำหรับ SDK ในการคอมไพล์เคอร์เนล OpenCL
เคล็ดลับ: คุณสามารถใช้เวอร์ชัน SDK ของ Custom Platform สำหรับ RTE เพื่อบันทึก
ให้ลบอิมเมจการ์ด SD ออกจากเวอร์ชัน RTE ของ Custom Platform ของคุณ - ทดสอบแพลตฟอร์มที่กำหนดเองของคุณ
โปรดดูส่วนการทดสอบการออกแบบฮาร์ดแวร์ของคู่มือผู้ใช้ Intel FPGA SDK สำหรับ OpenCL Custom Platform Toolkit สำหรับข้อมูลเพิ่มเติม
ลิงก์ที่เกี่ยวข้อง
- การทดสอบการออกแบบฮาร์ดแวร์
- การรวบรวมที่เพิ่มขึ้นของ Quartus Prime สำหรับการออกแบบตามลำดับชั้นและแบบทีม
- สร้างการไหลของเวลารับประกัน
- การพิจารณาคุณภาพทั่วไปของผลลัพธ์สำหรับพาร์ติชันบอร์ดที่ส่งออก
1.2.1 การอัปเดตแพลตฟอร์มอ้างอิงที่พอร์ต
ในเวอร์ชันปัจจุบันของแพลตฟอร์มอ้างอิง Cyclone V SoC Development Kit บล็อก HPS อยู่ภายในพาร์ติชันที่กำหนดตรรกะที่ไม่ใช่เคอร์เนลทั้งหมด อย่างไรก็ตาม คุณไม่สามารถส่งออก HPS โดยเป็นส่วนหนึ่งของ .qxp file. ในการอัปเดต Custom Platform ที่มีอยู่ซึ่งคุณแก้ไขจาก c5soc เวอร์ชันก่อนหน้า ให้ใช้โฟลว์การรักษา QXP อัปเดตอิมเมจการ์ด SD เพื่อรับสภาพแวดล้อมรันไทม์ล่าสุด และอัปเดต board_spec.xml file เพื่อเปิดใช้งานการย้ายอัตโนมัติ
Altera® SDK สำหรับ OpenCL เวอร์ชัน 14.1 และเวอร์ชันที่สูงกว่าจะตรวจสอบ บอร์ด_spec.xml file สำหรับข้อมูลบอร์ดและดำเนินการอัปเดตอัตโนมัติ เนื่องจากคุณแก้ไข
ออกแบบโดยใช้โฟลว์การรักษา QXP คุณต้องอัพเดต board_spec.xml file ให้เป็นรูปแบบในเวอร์ชันปัจจุบัน กำลังปรับปรุง file อนุญาตให้ SDK แยกความแตกต่างระหว่าง Custom Platforms ที่ไม่ได้สงวนไว้และ Custom Platforms ที่ใช้ QXP ในปัจจุบัน โปรดดูข้อมูลเพิ่มเติมที่ Custom Platform Automigration for Forward Compatibility ใน Intel FPGA SDK for OpenCL Custom Platform Toolkit สำหรับข้อมูลเพิ่มเติม
- หากต้องการใช้โฟลว์การรักษา QXP ในการออกแบบฮาร์ดแวร์ Cyclone V SoC FPGA ที่พอร์ตจาก c5soc เวอร์ชันก่อนหน้า ให้ทำตามขั้นตอนต่อไปนี้เพื่อสร้างพาร์ติชันย่อยเพื่อแยก HPS จาก .qxp file:
ก. ก่อนสร้างพาร์ติชันรอบๆ ตรรกะที่ไม่ใช่เคอร์เนล ให้สร้างพาร์ติชันรอบๆ HPS ในการตั้งค่า .qsf Quartus Prime File.
เช่นampเลอ:
# แบ่งพาร์ติชันอินสแตนซ์ที่สร้างโมเดล I/O เฉพาะของ HPS set_instance_assignment -name PARTITION_HIERARCHY borde_18261 -to “system:the_system|system_acl_iface:acl_iface|system_acl_iface_hps_0:hps_0|system_acl_iface_hps_0_hps_io:hps_io| ด้วยตนเอง system_acl_iface_hps_0_hps_io_border:border” -section_id “system_acl_iface_hps_0_hps_io_border:ชายแดน”
# ตั้งค่าพาร์ติชันเป็นประเภท HPS_PARTITION เพื่อให้การประมวลผลส่วนที่เหลือของ Quartus ดำเนินการอย่างถูกต้อง
set_global_assignment -ชื่อ PARTITION_TYPE HPS_PARTITION -section_id “system_acl_iface_hps_0_hps_io_border:border”
quartus_cdb ด้านบน -c ด้านบน
–increational_compilation_export=acl_iface_partition.qxp
–increational_compilation_export_partition_name=acl_iface_partition
–incremental_compilation_export_post_synth=เปิด
–incremental_compilation_export_post_fit=เปิด
–incremental_compilation_export_routing=เปิด
–incremental_compilation_export_flatten=ปิด
หลังจากที่คุณแยก HPS ออกจากพาร์ติชันแล้ว คุณสามารถนำเข้าไฟล์ .qxp file และรวบรวมการออกแบบของคุณ - อัปเดตอิมเมจการ์ดแฟลช SD ด้วย Intel FPGA RTE เวอร์ชันปัจจุบันสำหรับ OpenCL โดยดำเนินการต่อไปนี้:
ก. ติด file ตารางการจัดสรร (fat32) และขยาย file พาร์ติชันระบบ (ext3) ในอิมเมจที่มีอยู่เป็นอุปกรณ์วนกลับ สำหรับคำแนะนำโดยละเอียด โปรดดูขั้นตอนที่ 2 ในการสร้างภาพ SD Flash Card
ข. ในไดเร็กทอรี /home/root/opencl_arm32_rte ให้ลบไฟล์ fileจาก RTE รุ่นก่อนหน้า
ค. ดาวน์โหลดและแกะ RTE เวอร์ชันปัจจุบันลงในไดเร็กทอรี /home/root/opencl_arm32_rte
ง. ใน /driver/version.h file ของ Custom Platform ของคุณ อัปเดตการกำหนด ACL_DRIVER_VERSION เป็น . (เช่นample, 16.1.x โดยที่ 16.1 คือเวอร์ชัน SDK และ x คือเวอร์ชันไดรเวอร์ที่คุณตั้งค่าไว้)
อี สร้างไดรเวอร์ใหม่
ฉ. ลบโฟลเดอร์ฮาร์ดแวร์ของ Custom Platform ของคุณ คัดลอก Custom Platform พร้อมกับไดรเวอร์ที่อัพเดตแล้ว ไปยังไดเร็กทอรี /home/root/opencl_arm_rte/board
กรัม คัดลอก Altera.icd file จากไดเร็กทอรี /home/root/opencl_arm32_rte และเพิ่มไปยังไดเร็กทอรี /etc/OpenCL/vendors
ชม. ยกเลิกการต่อเชื่อมและทดสอบอิมเมจใหม่ สำหรับคำแนะนำโดยละเอียด โปรดดูขั้นตอนที่ 8 ถึง 11 ในการสร้างภาพ SD Flash Card
ลิงก์ที่เกี่ยวข้อง
- การสร้างอิมเมจ SD Flash Card ในหน้า 14
คุณยังมีตัวเลือกในการสร้างภาพแฟลชการ์ด SD ใหม่ - การย้ายแพลตฟอร์มอัตโนมัติแบบกำหนดเองสำหรับความเข้ากันได้ของ Forward
1.3 การสนับสนุนซอฟต์แวร์สำหรับหน่วยความจำที่ใช้ร่วมกัน
หน่วยความจำฟิสิคัลที่ใช้ร่วมกันระหว่าง FPGA และ CPU เป็นหน่วยความจำที่ต้องการสำหรับเคอร์เนล OpenCL ที่ทำงานบน SoC FPGA เนื่องจาก FPGA เข้าถึงหน่วยความจำฟิสิคัลที่ใช้ร่วมกัน ซึ่งตรงข้ามกับหน่วยความจำเสมือนที่ใช้ร่วมกัน จึงไม่มีสิทธิ์เข้าถึงตารางเพจของ CPU ที่แมปที่อยู่เสมือนของผู้ใช้กับที่อยู่เพจจริง
ในส่วนของฮาร์ดแวร์ เคอร์เนล OpenCL เข้าถึงหน่วยความจำกายภาพที่ใช้ร่วมกันผ่านการเชื่อมต่อโดยตรงกับตัวควบคุมหน่วยความจำฮาร์ด HPS DDR ในส่วนของซอฟต์แวร์ การสนับสนุนสำหรับหน่วยความจำกายภาพที่ใช้ร่วมกันเกี่ยวข้องกับข้อพิจารณาต่อไปนี้:
- การใช้งานซอฟต์แวร์ทั่วไปสำหรับการจัดสรรหน่วยความจำบน CPU (เช่นample, ฟังก์ชัน malloc()) ไม่สามารถจัดสรรพื้นที่หน่วยความจำที่ FPGA อาจใช้
หน่วยความจำที่ฟังก์ชัน malloc() จัดสรรนั้นอยู่ติดกันในพื้นที่แอดเดรสของหน่วยความจำเสมือน แต่เพจทางกายภาพใดๆ ที่อยู่ภายใต้นั้นไม่น่าจะอยู่ติดกัน ด้วยเหตุนี้ โฮสต์ต้องสามารถจัดสรรพื้นที่หน่วยความจำที่อยู่ติดกันได้ อย่างไรก็ตาม ความสามารถนี้ไม่มีอยู่ในแอปพลิเคชันพื้นที่ผู้ใช้บน Linux ดังนั้นไดรเวอร์เคอร์เนลของ Linux จะต้องดำเนินการจัดสรร - ไดรเวอร์เคอร์เนล OpenCL SoC FPGA Linux มีฟังก์ชัน mmap() เพื่อจัดสรรหน่วยความจำกายภาพที่ใช้ร่วมกันและแมปลงในพื้นที่ของผู้ใช้ ฟังก์ชัน mmap() ใช้การเรียกเคอร์เนลลินุกซ์มาตรฐาน dma_alloc_coherent() เพื่อขอพื้นที่หน่วยความจำที่อยู่ติดกันทางกายภาพสำหรับการแบ่งปันกับอุปกรณ์
- ในเคอร์เนล Linux เริ่มต้น dma_alloc_coherent() จะไม่จัดสรรหน่วยความจำที่อยู่ติดกันทางกายภาพมากกว่า 0.5 เมกะไบต์ (MB) ในขนาด ในการอนุญาตให้ dma_alloc_coherent() จัดสรรหน่วยความจำที่อยู่ติดกันจำนวนมาก ให้เปิดใช้งานคุณลักษณะตัวจัดสรรหน่วยความจำที่อยู่ติดกัน (CMA) ของเคอร์เนล Linux จากนั้นคอมไพล์เคอร์เนล Linux ใหม่
สำหรับแพลตฟอร์มอ้างอิง Cyclone V SoC Development Kit นั้น CMA จะจัดการหน่วยความจำกายภาพ 512 MB จาก 1 GB คุณอาจเพิ่มหรือลดค่านี้ ขึ้นอยู่กับจำนวนหน่วยความจำที่ใช้ร่วมกันที่แอปพลิเคชันต้องการ การเรียก dma_alloc_coherent() อาจไม่สามารถจัดสรรหน่วยความจำที่อยู่ติดกันได้เต็ม 512 MB; อย่างไรก็ตาม สามารถรับหน่วยความจำได้ประมาณ 450 MB เป็นประจำ - CPU สามารถแคชหน่วยความจำที่การเรียก dma_alloc_coherent() จัดสรร โดยเฉพาะอย่างยิ่ง การดำเนินการเขียนจากแอปพลิเคชันโฮสต์จะไม่ปรากฏบนเคอร์เนล OpenCL ฟังก์ชัน mmap() ในไดรเวอร์เคอร์เนล OpenCL SoC FPGA Linux ยังมีการเรียกไปยังฟังก์ชัน pgprot_noncached() หรือ remap_pf_range() เพื่อปิดใช้งานการแคชสำหรับพื้นที่หน่วยความจำนี้อย่างชัดเจน
- หลังจากฟังก์ชัน dma_alloc_coherent() จัดสรรหน่วยความจำที่อยู่ติดกันทางกายภาพแล้ว ฟังก์ชัน mmap() จะส่งคืนที่อยู่เสมือนไปยังจุดเริ่มต้นของช่วง ซึ่งเป็นช่วงที่อยู่ของหน่วยความจำที่คุณจัดสรร แอปพลิเคชันโฮสต์ต้องการที่อยู่เสมือนนี้เพื่อเข้าถึงหน่วยความจำ ในทางกลับกัน เคอร์เนล OpenCL ต้องการที่อยู่จริง ไดรเวอร์เคอร์เนลของ Linux ติดตามการแมปที่อยู่เสมือนกับจริง คุณสามารถแมปที่อยู่ทางกายภาพที่ mmap() ส่งคืนไปยังที่อยู่จริงโดยเพิ่มการสืบค้นไปยังไดรเวอร์
การเรียก aocl_mmd_shared_mem_alloc() MMD application programming interface (API) รวมการสืบค้นต่อไปนี้:
ก. ฟังก์ชัน mmap() ที่จัดสรรหน่วยความจำและส่งคืนที่อยู่เสมือน
ข. ข้อความค้นหาเพิ่มเติมที่แมปที่อยู่เสมือนที่ส่งคืนกับที่อยู่จริง
การเรียก aocl_mmd_shared_mem_alloc() MMD API จะส่งคืนที่อยู่สองรายการ
ที่อยู่จริงที่ส่งกลับคือที่อยู่เสมือน และที่อยู่จริงไปที่ device_ptr_out
บันทึก: โปรแกรมควบคุมสามารถจับคู่ที่อยู่เสมือนที่ฟังก์ชัน mmap() ส่งคืนไปยังที่อยู่จริงเท่านั้น หากคุณขอที่อยู่ทางกายภาพของตัวชี้เสมือนอื่น ๆ โปรแกรมควบคุมจะส่งกลับค่า NULL
คำเตือน: Intel FPGA SDK สำหรับไลบรารีรันไทม์ OpenCL ถือว่าหน่วยความจำที่ใช้ร่วมกันเป็นหน่วยความจำแรกที่แสดงรายการใน board_spec.xml file. ที่อยู่ทางกายภาพที่ไดรเวอร์เคอร์เนล Linux ได้รับจะกลายเป็นที่อยู่ Avalon® ที่เคอร์เนล OpenCL ส่งไปยัง HPS SDRAM
สำหรับไลบรารีรันไทม์ ให้ใช้การเรียก clCreateBuffer() เพื่อจัดสรรหน่วยความจำที่ใช้ร่วมกันเป็นบัฟเฟอร์อุปกรณ์ในลักษณะต่อไปนี้:
- สำหรับตัวแปรบอร์ด DDR สองอันที่มีทั้งหน่วยความจำแบบแบ่งใช้และไม่แบ่งใช้ clCreateBuffer() จะจัดสรรหน่วยความจำแบบแบ่งใช้ หากคุณระบุแฟล็ก CL_MEM_USE_HOST_PTR การใช้แฟล็กอื่นทำให้ clCreateBuffer() จัดสรรบัฟเฟอร์ในหน่วยความจำที่ไม่ได้แชร์
- สำหรับตัวแปรบอร์ด DDR หนึ่งตัวที่มีเฉพาะหน่วยความจำที่ใช้ร่วมกัน clCreateBuffer() จะจัดสรรหน่วยความจำที่ใช้ร่วมกันโดยไม่คำนึงถึงแฟล็กที่คุณระบุ
ปัจจุบัน การสนับสนุน Linux แบบ 32 บิตบน ARM CPU จะควบคุมขอบเขตของการสนับสนุนหน่วยความจำที่ใช้ร่วมกันในไลบรารีรันไทม์ SDK กล่าวอีกนัยหนึ่ง ไลบรารีรันไทม์ที่รวบรวมไว้ในสภาพแวดล้อมอื่น (เช่นample, x86_64 Linux หรือ Windows 64 บิต) ไม่รองรับหน่วยความจำที่ใช้ร่วมกัน
C5soc ไม่ได้ใช้หน่วยความจำที่แตกต่างกันเพื่อแยกความแตกต่างระหว่างหน่วยความจำแบบแบ่งใช้และแบบไม่แบ่งใช้ด้วยเหตุผลดังต่อไปนี้:
1. ประวัติ—ไม่รองรับหน่วยความจำต่างกันเมื่อแรกสร้างการสนับสนุนหน่วยความจำที่ใช้ร่วมกัน
2. อินเตอร์เฟสแบบเดียวกัน—เนื่องจาก OpenCL เป็นมาตรฐานแบบเปิด Intel จึงรักษาความสอดคล้องระหว่างผู้จำหน่ายแพลตฟอร์มคอมพิวเตอร์ที่แตกต่างกัน ดังนั้น อินเตอร์เฟสเดียวกันกับสถาปัตยกรรมของผู้จำหน่ายบอร์ดรายอื่นจึงถูกใช้เพื่อจัดสรรและใช้หน่วยความจำแบบแบ่งใช้
1.4 การกำหนดค่า FPGA ใหม่
สำหรับ SoC FPGA นั้น CPU สามารถกำหนดค่าแฟบริคหลัก FPGA ใหม่ได้โดยไม่ขัดจังหวะการทำงานของ CPU บล็อกฮาร์ดแวร์ FPGA Manager ที่คร่อม HPS และแกน FPGA ดำเนินการกำหนดค่าใหม่ เคอร์เนล Linux มีไดรเวอร์ที่ช่วยให้เข้าถึง FPGA Manager ได้ง่าย
- ถึง view สถานะของแกน FPGA ให้เรียกใช้คำสั่ง cat /sys/class/fpga/fpga0/
ยูทิลิตีโปรแกรม Intel FPGA SDK สำหรับ OpenCL ที่มาพร้อมกับแพลตฟอร์มอ้างอิง Cyclone V SoC Development Kit ใช้อินเทอร์เฟซนี้เพื่อตั้งโปรแกรม FPGA เมื่อทำการโปรแกรมแกน FPGA ใหม่ด้วย CPU ที่ทำงานอยู่ ยูทิลิตีโปรแกรมจะทำงานต่อไปนี้ทั้งหมด:
1. ก่อนทำการเขียนโปรแกรมใหม่ ให้ปิดใช้งานบริดจ์การสื่อสารทั้งหมดระหว่าง FPGA และ HPS ทั้งบริดจ์ H2F และ LH2F
เปิดใช้งานสะพานเหล่านี้อีกครั้งหลังจากเสร็จสิ้นการตั้งโปรแกรมใหม่
ข้อควรสนใจ: ระบบ OpenCL ไม่ใช้บริดจ์ FPGA-to-HPS (F2H) โปรดดูส่วนอินเทอร์เฟซ HPS-FPGA ในคู่มืออุปกรณ์ Cyclone V เล่มที่ 3: คู่มืออ้างอิงทางเทคนิคของระบบโปรเซสเซอร์ฮาร์ด สำหรับข้อมูลเพิ่มเติม
2. ตรวจสอบให้แน่ใจว่าการเชื่อมโยงระหว่าง FPGA และตัวควบคุม HPS DDR ถูกปิดใช้งานระหว่างการตั้งโปรแกรมใหม่
3. ตรวจสอบให้แน่ใจว่าการขัดจังหวะ FPGA บน FPGA ถูกปิดใช้งานในระหว่างการตั้งโปรแกรมใหม่
นอกจากนี้ ให้แจ้งคนขับให้ปฏิเสธการขัดจังหวะใดๆ จาก FPGA ระหว่างการตั้งโปรแกรมใหม่
ศึกษาซอร์สโค้ดของยูทิลิตี้โปรแกรมสำหรับรายละเอียดเกี่ยวกับการใช้งานจริง
คำเตือน: อย่าเปลี่ยนการกำหนดค่าของคอนโทรลเลอร์ HPS DDR เมื่อ CPU ทำงาน
การทำเช่นนั้นอาจทำให้เกิดข้อผิดพลาดร้ายแรงของระบบ เนื่องจากคุณอาจเปลี่ยนการกำหนดค่าคอนโทรลเลอร์ DDR เมื่อมีธุรกรรมหน่วยความจำค้างจาก CPU ซึ่งหมายความว่าเมื่อ CPU ทำงาน คุณจะไม่สามารถตั้งโปรแกรมคอร์ FPGA ใหม่ด้วยอิมเมจที่ใช้ HPS DDR ในการกำหนดค่าอื่น
โปรดจำไว้ว่าระบบ OpenCL และการออกแบบอ้างอิงฮาร์ดแวร์สีทองที่มีใน Intel SoC FPGA Embedded Design Suite (EDS) ตั้งค่า HPS DDR เป็นโหมด 256 บิตเดียว
ส่วนต่างๆ ของระบบ CPU เช่น ตัวทำนายสาขาหรือตัวดึงข้อมูลล่วงหน้าของตารางเพจอาจออกคำสั่ง DDR แม้ว่าจะดูเหมือนว่าไม่มีสิ่งใดทำงานบน CPU ก็ตาม
ดังนั้น เวลาบูตเป็นเวลาเดียวที่ปลอดภัยในการตั้งค่าคอนฟิกูเรชันคอนโทรลเลอร์ HPS DDR
นอกจากนี้ยังหมายความว่า U-boot ต้องมีไบนารีดิบ file (.rbf) รูปภาพที่จะโหลดลงในหน่วยความจำ มิฉะนั้น คุณอาจเปิดใช้งาน HPS DDR ด้วยพอร์ตที่ไม่ได้ใช้บน FPGA และอาจเปลี่ยนการกำหนดค่าพอร์ตในภายหลัง ด้วยเหตุนี้ ไดรเวอร์เคอร์เนล OpenCL Linux จึงไม่มีตรรกะที่จำเป็นในการตั้งค่าคอนฟิกูเรชันคอนโทรลเลอร์ HPS DDR อีกต่อไป
สวิตช์ SW3 dual in-line package (DIP) บน Cylone V SoC Development Kit จะควบคุมรูปแบบที่คาดหวังของอิมเมจ .rbf (นั่นคือ ไม่ว่าจะเป็น file ถูกบีบอัดและ/หรือเข้ารหัส) C5soc และ Golden Hardware Reference Design ที่มีใน SoC EDS รวมอิมเมจ .rbf ที่บีบอัดแต่ไม่ได้เข้ารหัส การตั้งค่าสวิตช์ SW3 DIP ที่อธิบายไว้ใน Intel FPGA SDK สำหรับคู่มือเริ่มต้นใช้งาน OpenCL Cyclone V SoC ตรงกับการกำหนดค่าอิมเมจ .rbf นี้
ลิงก์ที่เกี่ยวข้อง
- อินเทอร์เฟซ HPS-FPGA
- การกำหนดค่าสวิตช์ SW3
1.4.1 รายละเอียดสถาปัตยกรรมระบบ FPGA
การสนับสนุนสำหรับ Cyclone V SoC Development Kit Reference Platform อิงตาม Stratix® V Reference Platform (s5_ref) ซึ่งมีอยู่ใน Intel FPGA SDK สำหรับ OpenCL
การจัดระเบียบโดยรวมของระบบ c5soc Qsys และไดรเวอร์เคอร์เนลนั้นคล้ายกับใน s5_ref มาก
ส่วนประกอบหลักของ FPGA ต่อไปนี้เหมือนกันทั้งใน c5soc และ s5_ref:
- บล็อก VERSION_ID
- กลไกการพักผ่อน
- ตัวแบ่งธนาคารหน่วยความจำ
- อินเทอร์เฟซการสอดแนมแคช
- นาฬิกาเคอร์เนล
- ควบคุมบล็อกการเข้าถึงการลงทะเบียน (CRA)
1.5 การสร้างอิมเมจแฟลชการ์ด SD
เนื่องจาก Cyclone V SoC FPGA เป็นระบบเต็มรูปแบบบนชิป คุณมีหน้าที่รับผิดชอบในการส่งมอบคำจำกัดความทั้งหมดของระบบ Intel ขอแนะนำให้คุณจัดส่งในรูปแบบของอิมเมจ SD แฟลชการ์ด ผู้ใช้ Intel FPGA SDK สำหรับผู้ใช้ OpenCL สามารถเขียนอิมเมจไปยังการ์ดแฟลช micro SD และบอร์ด SoC FPGA ก็พร้อมใช้งาน
การแก้ไขอิมเมจแฟลชการ์ด SD ที่มีอยู่ ในหน้า 13
Intel ขอแนะนำให้คุณแก้ไขอิมเมจที่มีอยู่ในแพลตฟอร์มอ้างอิง Cyclone V SoC Development Kit คุณยังมีตัวเลือกในการสร้างภาพแฟลชการ์ด SD ใหม่
การสร้างอิมเมจ SD Flash Card ในหน้า 14
คุณยังมีตัวเลือกในการสร้างภาพแฟลชการ์ด SD ใหม่
1.5.1 การแก้ไขอิมเมจ SD Flash Card ที่มีอยู่
Intel ขอแนะนำให้คุณแก้ไขอิมเมจที่มีอยู่ใน Cyclone V SoC
แพลตฟอร์มอ้างอิงชุดพัฒนา คุณยังมีตัวเลือกในการสร้างภาพแฟลชการ์ด SD ใหม่
ภาพ c5soc linux_sd_card_image.tgz file มีอยู่ในไดเร็กทอรี ALTERAOCLSDKROOT/board/c5soc โดยที่ ALTERAOCLSDKROOT ชี้ไปที่พาธของ Intel FPGA SDK สำหรับไดเร็กทอรีการติดตั้งของ OpenCL
ความสนใจ: ในการแก้ไขอิมเมจแฟลชการ์ด SD คุณต้องมีสิทธิ์รูทหรือ sudo
- เพื่อขยาย $ALTERAOCLSDKROOT/board/c5soc/linux_sd_card_image.tgz fileให้รันคำสั่ง tar xvfzlinux_sd_card_image.tgz
- คอมไพล์ hello_world OpenCL อดีตampออกแบบโดยใช้การสนับสนุน Custom Platform ของคุณ เปลี่ยนชื่อ .rbf file ที่ Intel FPGA SDK สำหรับ OpenCL Offline Compiler สร้างเป็น opencl.rbf และวางไว้บนพาร์ติชัน fat32 ภายในอิมเมจการ์ด SD
คุณสามารถดาวน์โหลด hello_world เช่นampการออกแบบไฟล์จาก OpenCL Design Exampหน้าบน Altera webเว็บไซต์. - วาง .rbf file ลงในพาร์ติชัน fat32 ของอิมเมจแฟลชการ์ด
ความสนใจ: พาร์ติชัน fat32 ต้องมีทั้ง zImage file และ .rbf file. ไม่มี .rbf fileข้อผิดพลาดร้ายแรงจะเกิดขึ้นเมื่อคุณใส่ไดรเวอร์ - หลังจากที่คุณสร้างอิมเมจการ์ด SD แล้ว ให้เขียนลงในการ์ด micro SD โดยเรียกใช้คำสั่งต่อไปนี้: sudo dd if=/path/to/sdcard/image.bin of=/dev/sdcard
- ในการทดสอบอิมเมจแฟลชการ์ด SD ของคุณ ให้ดำเนินการดังต่อไปนี้:
ก. ใส่การ์ดแฟลช micro SD ลงในบอร์ด SoC FPGA
ข. เพิ่มพลังให้กับบอร์ด
ค. เรียกใช้คำสั่งยูทิลิตี้การวินิจฉัย aocl
1.5.2 การสร้างอิมเมจ SD Flash Card
คุณยังมีตัวเลือกในการสร้างภาพแฟลชการ์ด SD ใหม่ คำแนะนำทั่วไปเกี่ยวกับการสร้างอิมเมจแฟลชการ์ด SD ใหม่และการสร้างอิมเมจแฟลชการ์ด SD ที่มีอยู่ใหม่มีอยู่ในหน้า GSRD v14.0.2 – การ์ด SD ของ RocketBoards.org webเว็บไซต์.
ขั้นตอนด้านล่างอธิบายขั้นตอนในการสร้างอิมเมจ linux_sd_card_image.tgz จากอิมเมจแฟลชการ์ด SD ของ Golden System Reference Design (GSRD):
บันทึก:
หากต้องการสร้างอิมเมจจากอิมเมจ c5soc ให้ดำเนินการที่เกี่ยวข้องทั้งหมดตามที่ระบุไว้ในโพรซีเดอร์นี้
- ดาวน์โหลดและแกะอิมเมจแฟลชการ์ด GSRD SD เวอร์ชัน 14.0 จาก Rocketboards.org
- ติดตั้ง file ตารางการจัดสรร (fat32) และขยาย file พาร์ติชันระบบ (ext3) ในรูปภาพนี้เป็นอุปกรณ์วนกลับ ในการติดตั้งพาร์ติชัน ให้ทำตามขั้นตอนต่อไปนี้:
ก. กำหนดไบต์เริ่มต้นของพาร์ติชันภายในอิมเมจโดยเรียกใช้ /sbin/fdisk -lu image_file สั่งการ.
เช่นample หมายเลขพาร์ติชัน 1 ของประเภท W95 FAT มีบล็อกออฟเซ็ตเป็น 2121728 ด้วย 512 ไบต์ต่อบล็อก ไบต์ออฟเซ็ตคือ 512 ไบต์ x 2121728 = 1086324736 ไบต์
ข. ระบุอุปกรณ์ลูปฟรี (เช่นample, /dev/loop0) โดยพิมพ์คำสั่ง losstup -f
ค. สมมติว่า /dev/loop0 เป็นอุปกรณ์ลูปฟรี ให้กำหนดอิมเมจการ์ดแฟลชของคุณให้กับอุปกรณ์บล็อกลูปโดยเรียก losstup /dev/loop0 image_file -0 1086324736 คำสั่ง
ง. เมาต์อุปกรณ์ลูปโดยเรียกใช้คำสั่งเมานต์ /dev/loop0 /media/disk1
ภายในภาพ file, /media/disk1 เป็นพาร์ติชัน fat32 ที่ติดตั้งแล้ว
อี ทำซ้ำขั้นตอน a ถึง d สำหรับพาร์ติชัน ext3 - ดาวน์โหลด Cyclone V SoC FPGA เวอร์ชันของแพ็คเกจ Intel FPGA Runtime Environment สำหรับแพ็คเกจ OpenCL จากศูนย์ดาวน์โหลดบน Altera webเว็บไซต์.
ก. คลิกปุ่มดาวน์โหลดข้างรุ่นซอฟต์แวร์ Quartus Prime
ข. ระบุรุ่นวางจำหน่าย ระบบปฏิบัติการ และวิธีการดาวน์โหลด
ค. คลิกแท็บซอฟต์แวร์เพิ่มเติม และเลือกดาวน์โหลด Intel FPGA
สภาพแวดล้อมรันไทม์สำหรับ OpenCL Linux Cyclone V SoC TGZ
ง. หลังจากที่คุณดาวน์โหลด aocl-rte- .arm32.tgz fileแกะมันออกไป
ไดเรกทอรีที่คุณเป็นเจ้าของ - วาง aocl-rte- ที่ไม่ได้แพ็ค ไดเร็กทอรี .arm32 ลงในไดเร็กทอรี /home/root/opencl_arm32_rte บนพาร์ติชัน ext3 ของอิมเมจ file.
- ลบโฟลเดอร์ฮาร์ดแวร์ของ Custom Platform ของคุณ จากนั้นวาง Custom Platform ลงในไดเร็กทอรีย่อยของบอร์ด /home/root/ opencl_arm32_rte
- สร้าง init_opencl.sh file ในไดเร็กทอรี /home/root ที่มีเนื้อหาต่อไปนี้: export ALTERAOCLSDKROOT=/home/root/opencl_arm32_rte export AOCL_BOARD_PACKAGE_ROOT=$ALTERAOCLSDKROOT/board/ ส่งออก PATH=$ALTERAOCLSDKROOT/bin:$PATH ส่งออก LD_LIBRARY_PATH=$ALTERAOCLSDKROOT/host/arm32/lib:$LD_LIBRARY_PATH insmod $AOCL_BOARD_PACKAGE_ROOT/driver/aclsoc_drv.ko
ผู้ใช้ SDK เรียกใช้คำสั่ง source ./init_opencl.sh เพื่อโหลดตัวแปรสภาพแวดล้อมและไดรเวอร์เคอร์เนล OpenCL Linux - หากคุณต้องการอัปเดตตัวโหลดล่วงหน้า DTS files หรือเคอร์เนล Linux คุณต้องใช้คอมไพเลอร์ arm-linux-gnueabihf-gcc จาก SoC EDS ทำตามคำแนะนำที่ระบุไว้ในคู่มือผู้ใช้ Intel SoC FPGA Embedded Design Suite เพื่อรับซอฟต์แวร์ คอมไพล์ใหม่ และอัปเดตซอฟต์แวร์ที่เกี่ยวข้อง files บนพาร์ติชัน fat32 ที่ติดตั้ง
ความสนใจ: เป็นไปได้มากว่าคุณจะต้องอัปเดตตัวโหลดล่วงหน้าหากแพลตฟอร์มแบบกำหนดเองของคุณมีการใช้งานพินที่แตกต่างจากใน c5soc
ข้อควรจำ: หากคุณคอมไพล์เคอร์เนล Linux ใหม่ ให้คอมไพล์ไดรเวอร์เคอร์เนล Linux ใหม่ด้วยซอร์สเคอร์เนล Linux เดียวกัน fileส. หากมีความไม่ตรงกันระหว่างไดรเวอร์เคอร์เนลของ Linux และเคอร์เนลของ Linux ไดรเวอร์จะไม่โหลด นอกจากนี้ คุณต้องเปิดใช้งาน CMA
อ้างถึงการคอมไพล์เคอร์เนล Linux ใหม่สำหรับข้อมูลเพิ่มเติม - คอมไพล์ hello_world OpenCL อดีตampออกแบบโดยใช้การสนับสนุน Custom Platform ของคุณ เปลี่ยนชื่อ .rbf file ที่ Intel FPGA SDK สำหรับ OpenCL Offline Compiler สร้างเป็น opencl.rbf และวางไว้บนพาร์ติชัน fat32 ภายในอิมเมจการ์ด SD
คุณสามารถดาวน์โหลด hello_world เช่นampการออกแบบไฟล์จาก OpenCL Design Exampหน้าบน Altera webเว็บไซต์.
9. หลังจากที่คุณเก็บของที่จำเป็นทั้งหมดแล้ว fileลงบนภาพแฟลชการ์ด ให้เรียกใช้คำสั่งต่อไปนี้:
ก. ซิงค์
ข. ยกเลิกการต่อเชื่อม /media/disk1
ค. ยกเลิกการต่อเชื่อม ที่ไหน คือชื่อไดเร็กทอรีที่คุณใช้สำหรับติดตั้งพาร์ติชัน ext3 ใน 3 ในหน้า 3 (เช่นample, /media/disk2).
ง. สูญเสีย -d /dev/loop0
อี สูญเสีย -d /dev/loop1 - บีบอัดอิมเมจแฟลชการ์ด SD โดยเรียกใช้คำสั่งต่อไปนี้: tar cvfz .tgz linux_sd_card_image
- ส่งมอบ .tgz file ภายในไดเรกทอรีรากของ Custom Platform ของคุณ
- ในการทดสอบอิมเมจแฟลชการ์ด SD ของคุณ ให้ดำเนินการดังต่อไปนี้:
ก. เขียนภาพที่ไม่มีการบีบอัดลงในการ์ดแฟลช micro SD
ข. ใส่การ์ดแฟลช micro SD ลงในบอร์ด SoC FPGA
ค. เพิ่มพลังให้กับบอร์ด
ง. เรียกใช้คำสั่งยูทิลิตี้การวินิจฉัย aocl
ลิงก์ที่เกี่ยวข้อง
- คู่มือผู้ใช้ Intel SoC FPGA Embedded Design Suite
- การออกแบบ OpenCL เช่นampหน้าบน Altera webเว็บไซต์
- การคอมไพล์เคอร์เนล Linux ใหม่อีกครั้งในหน้า 16
ในการเปิดใช้งาน CMA คุณต้องคอมไพล์เคอร์เนล Linux ใหม่ก่อน - การสอบถามชื่ออุปกรณ์ของบอร์ด FPGA ของคุณ (วินิจฉัย)
1.6 การคอมไพล์ Linux Kernel สำหรับ Cyclone V SoC FPGA
ก่อนเรียกใช้แอปพลิเคชัน OpenCL บนบอร์ด Cyclone V SoC FPGA คุณต้องคอมไพล์ซอร์สเคอร์เนล Linux และคอมไพล์และติดตั้งไดรเวอร์เคอร์เนล OpenCL Linux
- การคอมไพล์เคอร์เนล Linux ใหม่อีกครั้งในหน้า 16
ในการเปิดใช้งาน CMA คุณต้องคอมไพล์เคอร์เนล Linux ใหม่ก่อน - การคอมไพล์และการติดตั้งไดรเวอร์เคอร์เนล OpenCL Linux ในหน้า 17 คอมไพล์ไดรเวอร์เคอร์เนล OpenCL Linux กับซอร์สเคอร์เนลที่คอมไพล์แล้ว
1.6.1 การคอมไพล์ Linux Kernel ใหม่
ในการเปิดใช้งาน CMA คุณต้องคอมไพล์เคอร์เนล Linux ใหม่ก่อน
- คลิกลิงก์ GSRD v14.0 – การคอมไพล์ Linux บนหน้าทรัพยากรของ RocketBoards.org webไซต์เพื่อเข้าถึงคำแนะนำในการดาวน์โหลดและสร้างซอร์สโค้ดเคอร์เนล Linux ใหม่
สำหรับใช้กับ™ Intel FPGA SDK สำหรับ OpenCL ให้ระบุ socfpga-3.13-rel14.0 เป็น . - หมายเหตุ: กระบวนการสร้างจะสร้าง arch/arm/configs/socfpga_defconfig file. นี้ file ระบุการตั้งค่าสำหรับการกำหนดค่าเริ่มต้นของ socfpga
เพิ่มบรรทัดต่อไปนี้ที่ด้านล่างของ arch/arm/configs/socfpga_defconfig file.
CONFIG_MEMORY_ISOLATION=หน่วยความจำ
CONFIG_CMA=ใช่
CONFIG_DMA_CMA=ใช่
CONFIG_CMA_DEBUG=ใช่
ขนาดไฟล์ CONFIG_CMA_MBYTES=512
CONFIG_CMA_SIZE_SEL_MBYTES=ใช่
CONFIG_CMA_ALIGNMENT=8
พื้นที่กำหนดค่า CMA=7
ค่าคอนฟิกูเรชัน CONFIG_CMA_SIZE_MBYTES ตั้งค่าขีดจำกัดสูงสุดของจำนวนหน่วยความจำที่อยู่ติดกันที่มีอยู่ทั้งหมด คุณอาจเพิ่มค่านี้ถ้าคุณต้องการหน่วยความจำเพิ่มเติม - ความสนใจ: จำนวนหน่วยความจำกายภาพทั้งหมดที่โปรเซสเซอร์ ARM มีอยู่บนบอร์ด SoC FPGA คือ 1 GB Intel ไม่แนะนำให้คุณตั้งค่าตัวจัดการ CMA ให้ใกล้เคียงกับ 1 GB
- เรียกใช้คำสั่ง make mrproper เพื่อล้างคอนฟิกูเรชันปัจจุบัน
- รันคำสั่ง make ARCH=arm socfpga_deconfig
ARCH=arm ระบุว่าคุณต้องการกำหนดค่าสถาปัตยกรรม ARM
socfpga_defconfig ระบุว่าคุณต้องการใช้การกำหนดค่า socfpga เริ่มต้น - รันคำสั่ง export CROSS_COMPILE=arm-linux-gnueabihf-
คำสั่งนี้ตั้งค่าตัวแปรสภาพแวดล้อม CROSS_COMPILE เพื่อระบุคำนำหน้าของห่วงโซ่เครื่องมือที่ต้องการ - รันคำสั่ง make ARCH=arm zImage ภาพที่ได้จะอยู่ใน arch/arm/boot/zImage file.
- วาง zImage file ลงในพาร์ติชัน fat32 ของอิมเมจแฟลชการ์ด สำหรับคำแนะนำโดยละเอียด โปรดดูคู่มือผู้ใช้ GSRD เฉพาะสำหรับ FPGA ของ Cyclone V SoC บน Rocketboards.org
- หมายเหตุ: หากต้องการแทรกไดรเวอร์เคอร์เนล OpenCL Linux อย่างถูกต้อง ให้โหลด SDKgenerated.rbf ก่อน file เข้าสู่ FPGA
เพื่อสร้าง .rbf fileรวบรวมการออกแบบ SDK เช่นampด้วยแพลตฟอร์มอ้างอิง Cyclone V SoC Development Kit เป็นแพลตฟอร์มที่กำหนดเองที่เป็นเป้าหมาย
9. วาง .rbf file ลงในพาร์ติชัน fat32 ของอิมเมจแฟลชการ์ด
ข้อควรสนใจ: พาร์ติชัน fat32 ต้องมีทั้ง zImage file และ .rbf file. ไม่มี .rbf fileข้อผิดพลาดร้ายแรงจะเกิดขึ้นเมื่อคุณใส่ไดรเวอร์ - ใส่การ์ด micro SD ที่ตั้งโปรแกรมไว้ ซึ่งมีอิมเมจการ์ด SD ที่คุณแก้ไขหรือสร้างขึ้นก่อนหน้านี้ ลงใน Cyclone V SoC Development Kit จากนั้นเปิดบอร์ด SoC FPGA
- ตรวจสอบเวอร์ชันของเคอร์เนล Linux ที่ติดตั้งโดยรันคำสั่ง uname -r
- ในการตรวจสอบว่าคุณเปิดใช้งาน CMA ได้สำเร็จในเคอร์เนล โดยเปิดบอร์ด SoC FPGA ให้รันคำสั่ง grep init_cma /proc/kallsyms
CMA เปิดใช้งานหากเอาต์พุตไม่ว่างเปล่า - หากต้องการใช้เคอร์เนล Linux ที่คอมไพล์ใหม่กับ SDK ให้คอมไพล์และติดตั้งไดรเวอร์เคอร์เนล Linux
ลิงก์ที่เกี่ยวข้อง
- คู่มือการใช้งาน Golden System Reference Design (GSRD)
- การสร้างอิมเมจ SD Flash Card ในหน้า 13
เนื่องจาก Cyclone V SoC FPGA เป็นระบบเต็มรูปแบบบนชิป คุณมีหน้าที่รับผิดชอบในการส่งมอบคำจำกัดความทั้งหมดของระบบ
1.6.2 การคอมไพล์และติดตั้ง OpenCL Linux Kernel Driver
คอมไพล์ไดรเวอร์เคอร์เนล OpenCL Linux กับซอร์สเคอร์เนลที่คอมไพล์แล้ว
แหล่งที่มาของไดรเวอร์มีอยู่ในเวอร์ชัน Cyclone V SoC FPGA ของ Intel FPGA Runtime Environment สำหรับ OpenCL นอกจากนี้ ตรวจสอบให้แน่ใจว่าคุณได้โหลด Intel FPGA SDK สำหรับ .rbf ที่สร้างโดย OpenCL file ลงใน FPGA เพื่อป้องกันการติดตั้งโมดูลเคอร์เนล Linux อย่างไม่ถูกต้อง
- ดาวน์โหลด Cyclone V SoC FPGA เวอร์ชันของแพ็คเกจ Intel FPGA Runtime Environment สำหรับแพ็คเกจ OpenCL จากศูนย์ดาวน์โหลดบน Altera webเว็บไซต์.
ก. คลิกปุ่มดาวน์โหลดข้างรุ่นซอฟต์แวร์ Quartus Prime
ข. ระบุรุ่นวางจำหน่าย ระบบปฏิบัติการ และวิธีการดาวน์โหลด
ค. คลิกแท็บซอฟต์แวร์เพิ่มเติม และเลือกดาวน์โหลด Intel FPGA
สภาพแวดล้อมรันไทม์สำหรับ OpenCL Linux Cyclone V SoC TGZ
ง. หลังจากที่คุณดาวน์โหลด aocl-rte- .arm32.tgz fileแกะมันออกไป
ไดเรกทอรีที่คุณเป็นเจ้าของ
แหล่งที่มาของไดรเวอร์อยู่ใน aocl-rte- ไดเร็กทอรีไดรเวอร์ .arm32/board/c5soc/ - ในการคอมไพล์ไดรเวอร์เคอร์เนล OpenCL Linux ใหม่ ให้ตั้งค่า KDIR ใน Make ของไดรเวอร์file ไปยังไดเร็กทอรีที่มีซอร์สของเคอร์เนล Linux files.
- เรียกใช้คำสั่ง export CROSS_COMPILE=arm-linux-gnueabihf- เพื่อระบุคำนำหน้าของห่วงโซ่เครื่องมือของคุณ
- รันคำสั่ง make clean
- รันคำสั่ง make เพื่อสร้าง aclsoc_drv.ko file.
- ถ่ายโอนไดเร็กทอรี opencl_arm32_rte ไปยังบอร์ด Cyclone V SoC FPGA
เรียกใช้ scp -r root@your-ipaddress: คำสั่งวางสภาพแวดล้อมรันไทม์ในไดเร็กทอรี / home / root - เรียกใช้สคริปต์ init_opencl.sh ที่คุณสร้างขึ้นเมื่อคุณสร้างอิมเมจการ์ด SD
- เรียกใช้คำสั่งยูทิลิตี้การวินิจฉัย aocl ยูทิลิตีการวินิจฉัยจะส่งคืนผลการส่งผ่านหลังจากที่คุณเรียกใช้ init_opencl.sh สำเร็จ
1.7 ปัญหาที่ทราบ
ปัจจุบัน มีข้อจำกัดบางประการเกี่ยวกับการใช้งาน Intel FPGA SDK สำหรับ OpenCL กับแพลตฟอร์มอ้างอิง Cyclone V SoC Development Kit
- คุณไม่สามารถลบล้างชื่อผู้จำหน่ายและบอร์ดที่รายงานโดยสตริง CL_DEVICE_VENDOR และ CL_DEVICE_NAME ของการเรียก clGetDeviceInfo()
- หากโฮสต์จัดสรรหน่วยความจำคงที่ในระบบ DDR ที่ใช้ร่วมกัน (นั่นคือ HPS DDR) และแก้ไขหน่วยความจำคงที่หลังจากการดำเนินการเคอร์เนล ข้อมูลในหน่วยความจำอาจล้าสมัย ปัญหานี้เกิดขึ้นเนื่องจากแกน FPGA ไม่สามารถสอดแนมธุรกรรม CPU-to-HPS DDR
เพื่อป้องกันไม่ให้การดำเนินการเคอร์เนลที่ตามมาเข้าถึงข้อมูลที่ล้าสมัย ให้ใช้วิธีแก้ปัญหาต่อไปนี้อย่างใดอย่างหนึ่ง:
• อย่าแก้ไขหน่วยความจำคงที่หลังจากการเริ่มต้น
• หากคุณต้องการชุดข้อมูล __constant หลายชุด ให้สร้างบัฟเฟอร์หน่วยความจำคงที่หลายชุด
• หากมี ให้จัดสรรหน่วยความจำคงที่ใน FPGA DDR บนบอร์ดเร่งความเร็วของคุณ - ยูทิลิตี SDK บน ARM รองรับเฉพาะโปรแกรมและวินิจฉัยคำสั่งของยูทิลิตี้เท่านั้น
คำสั่งแฟลช ติดตั้ง และถอนการติดตั้งยูทิลิตี้ไม่สามารถใช้ได้กับ Cyclone V SoC Development Kit ด้วยเหตุผลดังต่อไปนี้:
ก. ยูทิลิตีการติดตั้งต้องคอมไพล์ไดรเวอร์เคอร์เนล aclsoc_drv Linux และเปิดใช้งานบน SoC FPGA เครื่องพัฒนาต้องทำการรวบรวม อย่างไรก็ตาม มันมีซอร์สของเคอร์เนล Linux สำหรับ SoC FPGA อยู่แล้ว แหล่งที่มาของเคอร์เนล Linux สำหรับเครื่องพัฒนานั้นแตกต่างจากแหล่งที่มาของ SoC FPGA ตำแหน่งของซอร์สเคอร์เนล Linux สำหรับ SoC FPGA นั้นมีแนวโน้มว่าผู้ใช้ SDK จะไม่รู้จัก ในทำนองเดียวกัน ยูทิลิตีถอนการติดตั้งยังไม่พร้อมใช้งานสำหรับ Cyclone V SoC Development Kit
นอกจากนี้ การส่ง aclsoc_drv ไปยังบอร์ด SoC เป็นสิ่งที่ท้าทาย เนื่องจากการกระจายเริ่มต้นของ Cyclone V SoC Development Kit ไม่มีเคอร์เนลของ Linux รวมอยู่ด้วย files หรือคอมไพเลอร์ GNU Compiler Collection (GCC)
ข. ยูทิลิตี้แฟลชจำเป็นต้องวาง .rbf file ของการออกแบบ OpenCL ลงบนพาร์ติชัน FAT32 ของการ์ดแฟลช micro SD ปัจจุบัน พาร์ติชันนี้ไม่ได้ติดตั้งเมื่อผู้ใช้ SDK เปิดบอร์ด ดังนั้น วิธีที่ดีที่สุดในการอัปเดตพาร์ติชันคือการใช้แฟลชการ์ดรีดเดอร์และเครื่องพัฒนา - เมื่อสลับระหว่าง Intel FPGA SDK สำหรับโปรแกรม OpenCL Offline Compiler files (.aocx) ที่สอดคล้องกับบอร์ดรุ่นต่างๆ (นั่นคือ c5soc และ c5soc_sharedonly) คุณต้องใช้ยูทิลิตีโปรแกรมของ SDK เพื่อโหลด .aocx file สำหรับบอร์ดรุ่นใหม่เป็นครั้งแรก หากคุณเพียงแค่รันแอปพลิเคชันโฮสต์โดยใช้บอร์ดใหม่ แต่ FPGA มีอิมเมจจากบอร์ดอื่น อาจเกิดข้อผิดพลาดร้ายแรงได้
- .qxp file ไม่รวมการกำหนดพาร์ติชันอินเทอร์เฟซเนื่องจากซอฟต์แวร์ Quartus Prime เป็นไปตามข้อกำหนดด้านเวลาของพาร์ติชันนี้อย่างสม่ำเสมอ
- เมื่อคุณเปิดบอร์ด ที่อยู่ Media Access Control (MAC) จะถูกตั้งค่าเป็นตัวเลขสุ่ม หากนโยบาย LAN ของคุณไม่อนุญาตการทำงานนี้ ให้ตั้งค่าที่อยู่ MAC โดยดำเนินการต่อไปนี้:
ก. ระหว่างเปิดเครื่อง U-Boot ให้กดปุ่มใดก็ได้เพื่อเข้าสู่พรอมต์คำสั่ง U-Boot
ข. พิมพ์ setenv ethaddr 00:07:ed:00:00:03 ที่พรอมต์คำสั่ง
คุณสามารถเลือกที่อยู่ MAC ใดก็ได้
ค. พิมพ์คำสั่ง saveenv
ง. รีบูทบอร์ด
1.8 ประวัติการแก้ไขเอกสาร
ตารางที่ 1.
ประวัติการแก้ไขเอกสารของ Intel FPGA SDK สำหรับ OpenCL Cyclone V SoC
คู่มือการพอร์ตแพลตฟอร์มอ้างอิงสำหรับชุดพัฒนา
วันที่ | เวอร์ชัน | การเปลี่ยนแปลง |
17 พ.ค. | 2017.05.08 | •ปล่อยการบำรุงรักษา |
ตุลาคม 2016 | 2016.10.31 | • รีแบรนด์ Altera SDK สำหรับ OpenCL เป็น Intel FPGA SDK สำหรับ OpenCL • รีแบรนด์ Altera Offline Compiler เป็น Intel FPGA SDK สำหรับ OpenCL Offline Compiler |
16 พ.ค. | 2016.05.02 | •แก้ไขคำแนะนำในการสร้างและแก้ไขภาพแฟลชการ์ด SD •แก้ไขคำแนะนำในการคอมไพล์เคอร์เนล Linux และไดรเวอร์เคอร์เนล OpenCL Linux ใหม่ |
พฤศจิกายน-15 | 2015.11.02 | •ปล่อยการบำรุงรักษา และเปลี่ยนอินสแตนซ์ของ Quartus II เป็น Quartus Prime |
15 พ.ค. | 15.0.0 | •ใน FPGA Reconfiguration ให้ลบคำสั่งเพื่อตั้งโปรแกรมแกน FPGA ใหม่ กับ . ภาพ rbf โดยเรียกแมว fileชื่อ>. rbf > /dev/ fpga0 เพราะไม่แนะนำให้ใช้วิธีนี้ |
ธันวาคม 14 | 14.1.0 | • เปลี่ยนชื่อเอกสารเป็น Altera Cyclone V SoC Development Kit Reference Platform Porting Guide • อัปเดตยูทิลิตี้ reprogram เป็นโปรแกรม aoclfileชื่อ>คำสั่งยูทิลิตี้ .aocx • อัปเดตยูทิลิตี้การวินิจฉัยเป็นการวินิจฉัย aocl และการวินิจฉัย aocl คำสั่งยูทิลิตี้ • อัปเดตขั้นตอนในหัวข้อ การย้ายแพลตฟอร์มอ้างอิงไปยังบอร์ด SoC ของคุณ เพื่อรวมคำแนะนำในการพอร์ตและการปรับเปลี่ยนพาร์ติชันบอร์ด c5soc เพื่อสร้างพาร์ติชันที่สะอาดตามเวลาสำหรับโฟลว์การปิดไทม์มิ่งที่รับประกัน • แทรกหัวข้อการอัปเดตแพลตฟอร์มอ้างอิงพอร์ตเพื่อสรุปขั้นตอนสำหรับงานต่อไปนี้: 1.ไม่รวมบล็อก hard processor system (HPS) ในพาร์ติชั่นบอร์ด 2. อัปเดตภาพการ์ดแฟลช SD • อัปเดตส่วนการสร้างภาพ SD Flash Card แนะนำให้ใช้อิมเมจ Golden System Reference Design (GSRD) เวอร์ชัน 14.0 เป็นจุดเริ่มต้นแทนอิมเมจที่มีอยู่ใน SoC Embedded Design Suite (EDS) •อัปเดตการคอมไพล์เคอร์เนล Linux ใหม่และส่วนไดรเวอร์ OpenCL Linux Kernel: 1. เพิ่มคำสั่งในการตั้งค่าตัวแปร CROSS COMPILE 2. เปลี่ยนคำสั่งที่คุณเรียกใช้เพื่อตรวจสอบว่าเปิดใช้งาน CMA สำเร็จแล้ว |
14 กรกฎาคม | 14.0.0 | •การเปิดตัวครั้งแรก |
เอกสาร / แหล่งข้อมูล
![]() |
Intel FPGA SDK สำหรับ OpenCL [พีดีเอฟ] คู่มือการใช้งาน FPGA SDK สำหรับ OpenCL, FPGA SDK, SDK สำหรับ OpenCL, SDK |