ID บทความ: 000073934 ประเภทข้อมูล: การแก้ไขปัญหา การตรวจสอบครั้งล่าสุด: 02/10/2019

ทําไม SDK FPGA สําหรับคอมไพเลอร์ OpenCL™ ค้างและไม่เคยสิ้นสุดด้วยเคอร์เนล NDRange ที่มีโฟลว์การควบคุมหรือการทํางานของช่องสัญญาณที่ขึ้นอยู่กับเธรด

สิ่งแวดล้อม

  • Intel® Quartus® Prime Pro Edition
  • เอฟพีจีเอ Intel® SDK สำหรับ OpenCL™
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    คำอธิบาย

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

    การทํางานของช่องสัญญาณอาจทําให้เกิดคอกนี้ได้

    แสดงด้านล่างเป็นตัวอย่างของ "การสร้างขั้นตอนการควบคุมที่ขึ้นอยู่กับเธรด":


    รับ ID เธรดทั่วโลก

    id int = get_global_id(0);

    ตรวจสอบให้แน่ใจว่าเราไม่ได้ก้าวออกจากขอบเขต

    หาก (ID < n)

    c[id] = a[id] b[id];

    ที่นี่, ถ้าคําสั่งเป็นการสร้างขั้นตอนการควบคุมที่ขึ้นอยู่กับเธรด, เช่นสิ่งที่มันขึ้นอยู่กับว่าเธรดที่ดําเนินการมัน.

    ความละเอียด

    เขียนเคอร์เนล NDRange ใหม่เพื่อไม่ให้มีการทํางานของช่องสัญญาณหรือการสร้างโฟลว์การควบคุมที่ขึ้นกับเธรด

    ผลิตภัณฑ์ที่เกี่ยวข้อง

    บทความนี้จะนำไปใช้กับ 1 ผลิตภัณฑ์

    อุปกรณ์ที่ตั้งโปรแกรมได้ Intel®

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