ตัวอย่างการออกแบบ Vector Operation แบบมัลติเธรด

แนะนําสําหรับ:

  • อุปกรณ์: ไม่ทราบ

  • Quartus®: v16.1

author-image

โดย

การออกแบบตัวอย่างนี้เรียกใช้สองอินสแตนซ์ของคลาสในเธรดสองเธรดที่แยกกัน แต่ละอินสแตนซ์ใช้เคอร์เนลที่แตกต่างกัน: อินสแตนซ์แรกดําเนินการเคอร์เนลการเพิ่มเวกเตอร์เพื่อดําเนินการ: C = A + B โดยที่ A, B และ C เป็นเวกเตอร์ N-element อินสแตนซ์ที่สองดําเนินการเคอร์เนลการคูณเวกเตอร์แบบสมาชิก: C = A * B (สมาชิก) เคอร์เนลจะถูกเก็บไว้อย่างง่ายและไม่ได้รับการปรับแต่ง

เนื่องจากไม่สามารถตั้งโปรแกรมอุปกรณ์ให้ใช้สองโปรแกรมแยกได้พร้อมกัน ทั้งสองกรณีปัญหาจึงแชร์โปรแกรม OpenCL™ เดียวกัน (จึงทํางานในบริบทเดียวกัน) อย่างไรก็ตาม ในกรณีของตัวอย่างนี้ เธรดทั้งสองสามารถมีคิวคําสั่งแยกต่างหากได้ เพื่อความเรียบง่าย ทั้งสองเธรดจะทํางานบนสองอินสแตนซ์ของโค้ดเดียวกัน โดยมีความแตกต่างระหว่างกัน แต่โดยทั่วไปสามารถรันสองคลาสแยกกันได้

นอกเหนือจากการสาธิตอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน OpenCL พื้นฐาน (API) แล้ว ตัวอย่างนี้ยังรองรับการแบ่งพาร์ติชันปัญหาระหว่างอุปกรณ์ OpenCL ต่างๆ หากมี หากมีอุปกรณ์ M อยู่ ปัญหาจะถูกแบ่งออกเพื่อให้อุปกรณ์แต่ละเครื่องทํางานบนจุด N/M โปรแกรมโฮสต์จะถือว่าอุปกรณ์ทั้งหมดมีประเภทเดียวกัน (กล่าวคือสามารถใช้ไบนารีเดียวกันได้ แต่โดยทั่วไปแล้วจะรองรับอุปกรณ์ประเภทต่างๆ ได้อย่างง่ายดาย)

ดาวน์โหลด

ตัวอย่างการออกแบบให้ซอร์สโค้ดสําหรับอุปกรณ์ OpenCL (.cl) และแอปพลิเคชันโฮสต์ สําหรับการคอมไพล์แอปพลิเคชันโฮสต์ แพ็คเกจ Linux* ประกอบด้วย Makefile และแพคเกจ Windows* ประกอบด้วยโครงการ Microsoft* Visual Studio 2010

การดาวน์โหลดต่อไปนี้มีให้สําหรับตัวอย่างนี้:

การใช้การออกแบบนี้อยู่ภายใต้และอยู่ภายใต้ข้อกําหนดและเงื่อนไขของข้อตกลงสิทธิ์การใช้งานการออกแบบที่อ้างอิงฮาร์ดแวร์

ข้อกําหนดซอฟต์แวร์และฮาร์ดแวร์

ตัวอย่างการออกแบบนี้ต้องใช้เครื่องมือต่อไปนี้:

  • ซอฟต์แวร์ Intel® FPGA v17.1 หรือใหม่กว่า
  • Intel FPGA SDK สําหรับ OpenCL™ v17.1 หรือใหม่กว่า
  • บน Linux: GNU Make and gcc
  • บน Windows: Microsoft Visual Studio 2010

หากต้องการดาวน์โหลดเครื่องมือการออกแบบของ Intel® ให้ไปที่ หน้า ดาวน์โหลด OpenCL ข้อกําหนดสําหรับระบบปฏิบัติการพื้นฐานนั้นเหมือนกับของ Intel FPGA SDK สําหรับ OpenCL

โลโก้ OpenCL และ OpenCL เป็นเครื่องหมายการค้าของ Apple Inc. ซึ่งใช้งานโดยได้รับอนุญาตจาก Khronos

* ผลิตภัณฑ์อ้างอิงตามข้อมูลจําเพาะของ Khronos ที่เผยแพร่และผ่านกระบวนการทดสอบความสอดคล้องของ Khronos สามารถดูสถานะความสอดคล้องในปัจจุบันได้ที่www.khronos.org/conformance

เนื้อหาในหน้านี้เป็นการผสมผสานระหว่างการแปลเนื้อหาต้นฉบับภาษาอังกฤษโดยมนุษย์และคอมพิวเตอร์ เนื้อหานี้จัดทำขึ้นเพื่อความสะดวกของคุณและเพื่อเป็นข้อมูลทั่วไปเท่านั้นและไม่ควรอ้างอิงว่าสมบูรณ์หรือถูกต้อง หากมีความขัดแย้งใด ๆ ระหว่างเวอร์ชันภาษาอังกฤษของหน้านี้กับคำแปล เวอร์ชันภาษาอังกฤษจะมีผลเหนือกว่าและควบคุม ดูเวอร์ชันภาษาอังกฤษของหน้านี้