การออกแบบตัวอย่างนี้เรียกใช้สองอินสแตนซ์ของคลาสในเธรดสองเธรดที่แยกกัน แต่ละอินสแตนซ์ใช้เคอร์เนลที่แตกต่างกัน: อินสแตนซ์แรกดําเนินการเคอร์เนลการเพิ่มเวกเตอร์เพื่อดําเนินการ: 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