ID bài viết: 000086372 Loại nội dung: Xử lý sự cố Lần duyệt cuối: 04/08/2017

Tại sao #pragma ivdep không hoạt động chính xác trong aocl phiên bản 17.0?

Môi Trường

  • Intel® Quartus® Prime Phiên bản Pro
  • SDK FPGA Intel® cho OpenCL™
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Mô tả

    Trong 16.1, mã này hoạt động như mong đợi trong đó vòng lặp ngoài được đăng ký do sự phụ thuộc và các phụ thuộc của vòng lặp vòng lặp được xóa bởi #pragma ivdep.

    Vòng lặp này được đăng ký do sự phụ thuộc thực sự vào vòng lặp của vòng lặp

    cho (char chưa ký x = 0; x < 4; x) {

    Vòng lặp vòng lặp không có sự phụ thuộc giữa các lần lặp lại, nhưng phụ thuộc vào vòng lặp ngoài

    #pragma ivdep

    for (char y chưa ký = 0; y

    Trong 17.0, #pragma ivdep hiện được áp dụng cho cả vòng lặp nội dung và vòng ngoài, vì vậy các phụ thuộc trong vòng lặp ngoài không được trình biên dịch tính vào.  Do đó, mã tương tự có thể không hoạt động chính xác trong phần cứng hoạt động trong mô phỏng.

    Độ phân giải

    Workaround:

    1. Thêm một tham số bổ sung "giả" vào kernel.  Ở phía máy chủ, luôn vượt qua 1 cho đối số giả này.

    TRƯỚC

    __kernel vô hiệu cho my_kernel(
    __global cpx_t* hạn chế đầu vào,
    __global cpx_t* kết quả hạn chế)

    SAU

    __kernel vô hiệu cho my_kernel(
    __global cpx_t* hạn chế đầu vào,
    __global cpx_t* kết quả hạn chế,
        giả int)

    2. Trong vòng lặp, bọc vòng lặp trong "if (dummy)":

    Vòng lặp này được đăng ký do phụ thuộc thực sự

    cho (char chưa ký x = 0; x < 4; x) {

    nếu (giả) {

    Không phụ thuộc vào mỗi tập hợp 64 lần iterations

    #pragma ivdep

    for (char y chưa ký = 0; y

     

    Vấn đề này được lên lịch sẽ được khắc phục trong phiên bản tương lai của Intel© OpenCL™ cho FPGA SDK.

    Các sản phẩm liên quan

    Bài viết này áp dụng cho 5 sản phẩm

    FPGA Intel® Arria® 10 và FPGA SoC
    FPGA Intel® Stratix® 10 và FPGA SoC
    FPGA Cyclone® V và FPGA SoC
    FPGA Arria® V và FPGA SoC
    FPGA Stratix® V

    Nội dung gốc bằng tiếng Anh trên trang này vừa do con người vừa do máy dịch. Nội dung này chỉ để cung cấp thông tin chung và giúp quý vị thuận tiện. Quý vị không nên tin đây là thông tin hoàn chỉnh hoặc chính xác. Nếu có bất kỳ mâu thuẫn nào giữa bản tiếng Anh và bản dịch của trang này, thì bản tiếng Anh sẽ chi phối và kiểm soát. Xem phiên bản tiếng Anh của trang này.