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

ทําไม #pragma ivdep ไม่ทํางานอย่างถูกต้องในเวอร์ชัน aocl 17.0

สิ่งแวดล้อม

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

ใน 16.1 รหัสนี้ทํางานตามที่คาดหวังเมื่อลูปด้านนอกถูกอนุกรมเนื่องจากการขึ้นต่อกันและการขึ้นต่อกันของลูปด้านในถูกลบโดย ivdep #pragma

ลูปนี้จะถูกอนุกรมเนื่องจากการขึ้นต่อกันอย่างแท้จริงกับลูปด้านใน

สําหรับ (อักขระไม่มีลายเซ็น x = 0; x < 4; x ) {

ลูปด้านในไม่มีการอ้างอิงระหว่างการคํานวณซ้ํา แต่ขึ้นอยู่กับลูปด้านนอก

ivdep #pragma

สําหรับ (อักขระ y ที่ไม่มีการรับรอง = 0; y<64; y ) {

ใน 17.0 ตอนนี้ #pragma ivdep จะถูกนําไปใช้กับทั้งลูปด้านในและภายนอกดังนั้นการขึ้นต่อกันในลูปด้านนอกจะไม่ได้รับการลงบัญชีโดยคอมไพเลอร์  ส่งผลให้รหัสที่คล้ายกันอาจทํางานไม่ถูกต้องในฮาร์ดแวร์ที่ทํางานในการจําลอง

ความละเอียด

แก้ ปัญหา:

1. เพิ่ม "dummy" ที่เพิ่มเข้ามาในเคอร์เนลเพิ่มเติม  ในด้านโฮสต์ ให้ส่ง 1 สําหรับข้อสรุปของหุ่นนี้เสมอ

ก่อน

my_kernelเป็นโมฆะ__kernel(
อินพุตจํากัด__global cpx_t*
ผลลัพธ์การจํากัด __global cpx_t*)

หลัง

my_kernelเป็นโมฆะ__kernel(
อินพุตจํากัด__global cpx_t*
ผลลัพธ์การจํากัด __global cpx_t*
    int dummy)

2. ในลูปที่ตรงกลาง ให้ห่อหุ้มลูปด้านในใน "if (dummy)":

ลูปนี้จะถูกอนุกรมเนื่องจากการขึ้นต่อกันอย่างแท้จริง

สําหรับ (อักขระไม่มีลายเซ็น x = 0; x < 4; x ) {

if (dummy) {

ไม่มีการขึ้นต่อกันภายในแต่ละชุดของ 64 ครั้ง

ivdep #pragma

สําหรับ (อักขระ y ที่ไม่มีการรับรอง = 0; y<64; y ) {

 

ปัญหานี้ได้รับการกําหนดเวลาให้แก้ไขใน Intel© OpenCL™ เวอร์ชันในอนาคตสําหรับ SDK FPGA

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

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

Intel® Arria® 10 FPGA และ SoC FPGA
Intel® Stratix® 10 FPGA และ SoC FPGA
Cyclone® V FPGA และ SoC FPGA
Arria® V FPGA และ SoC FPGA
Stratix® V FPGA

1

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