FPGA SDK สําหรับคอมไพเลอร์ OpenCL™ ให้การรับประกันว่าคําสั่งในเคอร์เนล NDRange จะดําเนินการโดยเธรดตามลําดับตัวระบุเธรด เพื่อให้แน่ใจว่าการรับประกันเป็นไปตามโปรแกรมที่มีขั้นตอนการควบคุมที่ขึ้นอยู่กับเธรดอุปสรรคการสั่งซื้อใหม่จะถูกแทรกโดยคอมไพเลอร์ที่จุดเข้าร่วมของเส้นทางการควบคุมที่ขึ้นอยู่กับเธรด ข้อผิดพลาดในการกําหนดค่าของอุปสรรคดังกล่าวทําให้การคํานวณแผงกั้นไม่มีความเป็นไปได้ของความก้าวหน้าไปข้างหน้า
การทํางานของช่องสัญญาณอาจทําให้เกิดคอกนี้ได้
แสดงด้านล่างเป็นตัวอย่างของ "การสร้างขั้นตอนการควบคุมที่ขึ้นอยู่กับเธรด":
รับ ID เธรดทั่วโลก
id int = get_global_id(0);
ตรวจสอบให้แน่ใจว่าเราไม่ได้ก้าวออกจากขอบเขต
หาก (ID < n)
c[id] = a[id] b[id];
ที่นี่, ถ้าคําสั่งเป็นการสร้างขั้นตอนการควบคุมที่ขึ้นอยู่กับเธรด, เช่นสิ่งที่มันขึ้นอยู่กับว่าเธรดที่ดําเนินการมัน.
เขียนเคอร์เนล NDRange ใหม่เพื่อไม่ให้มีการทํางานของช่องสัญญาณหรือการสร้างโฟลว์การควบคุมที่ขึ้นกับเธรด