Intel® FPGA SDK for OpenCL™ - Trung tâm hỗ trợ
Thông báo ngừng sản xuất sản phẩm
Intel ngừng cung cấp SDK Intel® FPGA OpenCL,™ bạn có thể tìm thêm thông tin trong thông báo ngừng cung cấp sản phẩm (PDN2219).
Trang hỗ trợ SDK Intel® FPGA cho OpenCL cung cấp thông tin về cách mô phỏng, biên dịch và lập hồ sơ hạt nhân của bạn. Ngoài ra còn có các hướng dẫn về cách tối ưu hóa hạt nhân của bạn cũng như thông tin về cách gỡ lỗi hệ thống của bạn trong khi chạy ứng dụng máy chủ. Trang này được sắp xếp thành hai danh mục chính dựa trên nền tảng phát triển—nhà phát triển hạt nhân cho FPGA và nhà phát triển mã máy chủ cho CPU.
Yêu cầu phần mềm
Bạn phải có đặc quyền quản trị viên trên hệ thống phát triển để cài đặt các gói và trình điều khiển cần thiết cho việc phát triển phần mềm máy chủ.
Hệ thống máy chủ phải đang chạy một trong các hệ điều hành Windows* và Linux* được hỗ trợ sau được liệt kê trên trang Hỗ trợ Hệ điều hành .
Phát triển ứng dụng máy chủ của bạn cho SDK Intel® FPGA cho OpenCL™ bằng cách sử dụng một trong các môi trường phát triển sau:
Hệ điều hành Windows
- Intel FPGA SDK cho OpenCL
- Gói hỗ trợ bo mạch (BSP)
- Microsoft* Visual Studio Professional phiên bản 2010 trở lên.
Hệ điều hành Linux
- Intel FPGA SDK cho OpenCL
- BSP
- RPM (Trình quản lý gói RPM; ban đầu là Trình quản lý gói Red Hat)
- Trình biên dịch C đi kèm với GCC
- Lệnh Perl phiên bản 5 trở lên
1. Nhà phát triển Kernel
Giao diện người dùng SDK
Intel® FPGA SDK cho OpenCL™ cung cấp hai chế độ trải nghiệm phát triển cho người dùng. Đối với các nhà xây dựng mã, tất cả các công cụ được tích hợp vào GUI, cho phép họ thiết kế, biên dịch và gỡ lỗi hạt nhân. Mặt khác, các tùy chọn dòng lệnh dành cho người dùng thông thường.
- GUI / trình tạo mã: Hiện tại không có sẵn
- Tùy chọn dòng lệnh:
Dưới đây là một số lệnh hữu ích cho các nhà phát triển kernel:
AOC kernel.cl -o bin/kernel.aocx –board=<board_name>
- Biên dịch tệp nguồn kernel.cl thành tệp lập trình FPGA (kernel.aocx) cho bo mạch do <board_name> chỉ định; -o được sử dụng để chỉ định tên tệp đầu ra và vị trí
AOC kernel.cl -o bin/kernel.aocx –board=<board_name> -march=emulator
- Xây dựng một tệp aocx để mô phỏng có thể được sử dụng để kiểm tra chức năng của hạt nhân
AOC -list-boards
- In danh sách các bảng và lối ra có sẵn
AOC -trợ giúp
- In danh sách đầy đủ các tùy chọn lệnh aoc và thông tin trợ giúp cho từng tùy chọn này
Phiên bản AOCL
- Hiển thị thông tin phiên bản cho phiên bản đã cài đặt của Intel FPGA SDK cho OpenCL
Cài đặt AOCL
- Cài đặt trình điều khiển cho bo mạch của bạn vào hệ thống máy chủ hiện tại
Chẩn đoán AOCL
- Chạy chương trình thử nghiệm của nhà cung cấp bo mạch cho bo mạch
Chương trình AOCL
- Định cấu hình hình ảnh FPGA mới lên bảng
Đèn flash AOCL
- Khởi tạo FPGA với cấu hình khởi động được chỉ định
Trợ giúp AOCL
- In danh sách đầy đủ các tùy chọn lệnh aocl và thông tin trợ giúp cho từng tùy chọn này
Đặc điểm kỹ thuật OpenCL
Khả năng tương thích Khronos
Intel® FPGA SDK cho OpenCL™ dựa trên Đặc tả Khronos đã xuất bản và được hỗ trợ bởi nhiều nhà cung cấp là một phần của nhóm Khronos. Intel FPGA SDK cho OpenCL đã vượt qua Quy trình kiểm tra sự phù hợp Khronos. Nó phù hợp với tiêu chuẩn OpenCL 1.0 và cung cấp cả tiêu đề OpenCL 1.0 và OpenCL 2.0 của Nhóm Khronos.
Sự chú ý: SDK hiện không hỗ trợ tất cả các giao diện lập trình ứng dụng (API) OpenCL 2.0. Nếu bạn sử dụng tiêu đề OpenCL 2.0 và thực hiện lệnh gọi đến một API không được hỗ trợ, lệnh gọi sẽ trả về mã lỗi cho biết API không được hỗ trợ đầy đủ.
SDK Intel FPGA cho thời gian chạy máy chủ OpenCL tuân thủ lớp nền tảng OpenCL và API với một số giải thích và ngoại lệ, có thể được tìm thấy tại phần Trạng thái hỗ trợ của các tính năng OpenCL của SDK Intel FPGA cho Hướng dẫn lập trình OpenCL.
Các liên kết liên quan khác:
- Để biết thêm thông tin về OpenCL, hãy truy cập trang Tổng quan về OpenCL của Kronos Group .
- Tình trạng tuân thủ hiện tại có thể được tìm thấy tại trang Chương trình Người chấp nhận Kronos Group .
- Để biết thêm thông tin về tiêu chuẩn OpenCL 1.0, hãy tham khảo Đặc điểm kỹ thuật OpenCL của Khronos.
Tiện ích mở rộng OpenCL
Kênh (I/O hoặc Kernel)
SDK Intel® FPGA cho phần mở rộng kênh OpenCL™ cung cấp cơ chế truyền dữ liệu đến hạt nhân và đồng bộ hóa hạt nhân với hiệu quả cao và độ trễ thấp. Sử dụng các liên kết sau để biết thêm thông tin về cách triển khai, sử dụng và mô phỏng các kênh:
- Triển khai SDK Intel FPGA cho Mở rộng Kênh OpenCL
- Sử dụng các kênh với bản sao hạt nhân
- Báo cáo HTML: Khái niệm thiết kế hạt nhân - Kênh
- Truyền dữ liệu qua SDK Intel FPGA cho các kênh OpenCL hoặc đường ống OpenCL
- Yêu cầu đối với nhiều hàng đợi lệnh trong việc triển khai kênh hoặc đường ống
Lưu ý: Nếu bạn muốn tận dụng khả năng của các kênh nhưng có khả năng chạy chương trình hạt nhân của mình bằng các SDK khác, hãy triển khai các đường ống OpenCL. Để biết thêm thông tin về đường ống, hãy xem phần sau về đường ống.
Ống
Intel FPGA SDK cho OpenCL cung cấp hỗ trợ sơ bộ cho các chức năng đường ống OpenCL, là một phần của Đặc tả OpenCL phiên bản 2.0. Chúng cung cấp một cơ chế để truyền dữ liệu đến hạt nhân và đồng bộ hóa hạt nhân với hiệu quả cao và độ trễ thấp.
SDK Intel FPGA để triển khai OpenCL của các đường ống không hoàn toàn phù hợp với Đặc tả OpenCL phiên bản 2.0. Mục tiêu của việc triển khai đường ống của SDK là cung cấp một giải pháp hoạt động liền mạch trên một thiết bị tuân thủ OpenCL 2.0 khác. Để kích hoạt đường ống cho các sản phẩm Intel FPGA, thiết kế của bạn phải đáp ứng các yêu cầu nhất định.
Xem các liên kết sau để biết thêm thông tin về cách triển khai OpenCL pipes:
- Triển khai OpenCL Pipes
- Truyền dữ liệu qua SDK Intel FPGA cho các kênh OpenCL hoặc đường ống OpenCL
- Yêu cầu đối với nhiều hàng đợi lệnh trong việc triển khai kênh hoặc đường ống
Emulator
Trong quy trình thiết kế nhiều bước, bạn có thể đánh giá chức năng của nhân OpenCL™ bằng cách thực thi nó trên một hoặc nhiều thiết bị mô phỏng trên máy chủ x86-64 Windows* hoặc Linux*. Việc biên dịch thiết kế để mô phỏng mất vài giây để tạo tệp .aocx và cho phép bạn lặp lại thiết kế của mình hiệu quả hơn mà không phải trải qua nhiều giờ cần thiết để biên dịch đầy đủ.
Đối với các hệ thống Linux, trình giả lập cung cấp hỗ trợ gỡ lỗi tượng trưng. Gỡ lỗi tượng trưng cho phép bạn xác định nguồn gốc của các lỗi chức năng trong mã kernel của bạn.
Liên kết bên dưới có tổng quan về quy trình thiết kế cho hạt nhân OpenCL và minh họa các giai đoạn khác nhau mà bạn có thể mô phỏng hạt nhân của mình.
SDK Intel® FPGA nhiều bước cho dòng thiết kế OpenCL
Phần Mô phỏng và gỡ lỗi hạt nhân OpenCL của bạn từ Hướng dẫn lập trình chứa thêm chi tiết về sự khác biệt giữa hoạt động của hạt nhân trên phần cứng và mô phỏng.
Các liên kết liên quan khác:
- Mô phỏng và gỡ lỗi hạt nhân OpenCL của bạn
- Mô phỏng các kênh I/O
- Xác minh chức năng thời gian chạy máy chủ thông qua mô phỏng (Windows)
- Xác minh chức năng thời gian chạy máy chủ thông qua mô phỏng (Linux)
Tối ưu hóa
Với SDK Intel® FPGA cho công nghệ Trình biên dịch Ngoại tuyến OpenCL™, bạn không cần phải thay đổi hạt nhân của mình để phù hợp tối ưu với kiến trúc phần cứng cố định. Thay vào đó, trình biên dịch ngoại tuyến tự động tùy chỉnh kiến trúc phần cứng để đáp ứng các yêu cầu hạt nhân của bạn.
Nói chung, trước tiên bạn nên tối ưu hóa một hạt nhân nhắm mục tiêu đến một đơn vị tính toán duy nhất. Sau khi bạn tối ưu hóa đơn vị điện toán này, hãy tăng hiệu suất bằng cách mở rộng phần cứng để lấp đầy phần còn lại của FPGA. Dấu chân phần cứng của hạt nhân tương quan với thời gian cần thiết để biên dịch phần cứng. Do đó, bạn càng có thể thực hiện nhiều tối ưu hóa với diện tích nhỏ hơn (nghĩa là một đơn vị tính toán duy nhất), bạn càng có thể thực hiện nhiều biên dịch phần cứng trong một khoảng thời gian nhất định.
Tối ưu hóa OpenCL cho Intel FPGAs
Để tối ưu hóa việc thực hiện thiết kế của bạn và có được hiệu suất tối đa, hãy hiểu hiệu suất tối đa lý thuyết của bạn và hiểu những hạn chế của bạn là gì. Hãy làm theo các bước sau:
- Bắt đầu với một triển khai chức năng tốt được biết đến đơn giản.
- Sử dụng trình giả lập để xác thực chức năng.
- Loại bỏ hoặc thu nhỏ các gian hàng quy trình được báo cáo bằng báo cáo tối ưu hóa.
- Lập kế hoạch truy cập bộ nhớ để có băng thông bộ nhớ tối ưu.
- Sử dụng profiler để gỡ lỗi các vấn đề về hiệu suất.
Profiler cung cấp cái nhìn sâu sắc hơn về hiệu suất hệ thống, cung cấp cho bạn hướng để tối ưu hóa hơn nữa thuật toán trong việc sử dụng bộ nhớ.
Hãy nhớ rằng đối với FPGAs, càng nhiều tài nguyên có thể được phân bổ, thì càng có thể đạt được nhiều unrolling, song song hóa và hiệu suất cao hơn.
Báo cáo và tài nguyên hữu ích để tối ưu hóa
Có một số báo cáo do hệ thống tạo ra có sẵn cho người dùng. Các báo cáo này cung cấp thông tin chi tiết về mã, cách sử dụng tài nguyên và gợi ý về nơi cần tập trung để cải thiện hơn nữa hiệu suất:
- Báo cáo phân tích vòng lặp của một ví dụ thiết kế OpenCL
- Xác minh thông tin về sao chép và đình trệ bộ nhớ
- Xem xét thông tin khu vực
- Báo cáo HTML: Thông báo báo cáo khu vực
Tối ưu hóa bộ nhớ
Hiểu hệ thống bộ nhớ là rất quan trọng để triển khai hiệu quả một ứng dụng bằng OpenCL.
Kết nối bộ nhớ toàn cầu
Không giống như GPU, FPGA có thể xây dựng bất kỳ đơn vị lưu trữ tải tùy chỉnh (LSU) nào tối ưu nhất cho ứng dụng của bạn. Do đó, khả năng viết mã OpenCL chọn các loại LSU lý tưởng cho ứng dụng của bạn có thể giúp cải thiện đáng kể hiệu suất thiết kế của bạn.
Để biết thêm thông tin, hãy tham khảo phần Kết nối bộ nhớ toàn cầu của SDK Intel FPGA để biết Hướng dẫn thực hành tốt nhất OpenCL.
Bộ nhớ cục bộ
Bộ nhớ cục bộ là một hệ thống phức tạp. Không giống như kiến trúc GPU thông thường nơi có các mức bộ nhớ đệm khác nhau, FPGA triển khai bộ nhớ cục bộ trong các khối bộ nhớ chuyên dụng bên trong FPGA. Để biết thêm thông tin, hãy tham khảo phần Bộ nhớ cục bộ của SDK Intel FPGA cho Hướng dẫn thực hành tốt nhất về OpenCL.
Có một số cách bộ nhớ được sử dụng có thể được tối ưu hóa để cải thiện hiệu suất tổng thể. Để biết thêm thông tin về một số kỹ thuật chính, hãy tham khảo phần Phân bổ bộ nhớ được căn chỉnh của SDK Intel FPGA cho Hướng dẫn thực hành tốt nhất về OpenCL.
Để biết thêm thông tin về các chiến lược nhằm cải thiện hiệu quả truy cập bộ nhớ, hãy tham khảo phần Chiến lược cải thiện hiệu quả truy cập bộ nhớ của SDK Intel FPGA cho Hướng dẫn thực tiễn tốt nhất về OpenCL.
Đường ống
Hiểu quy trình là rất quan trọng để tận dụng hiệu suất triển khai tốt nhất của bạn. Sử dụng hiệu quả quy trình trực tiếp cải thiện thông lượng hiệu suất. Để biết thêm chi tiết, hãy tham khảo phần Quy trình của SDK Intel FPGA cho Hướng dẫn thực tiễn tốt nhất về OpenCL.
Để biết thêm thông tin về truyền dữ liệu, hãy tham khảo phần Truyền dữ liệu qua SDK Intel FPGA cho Kênh OpenCL hoặc OpenCL Pipes trong Hướng dẫn Thực tiễn Tốt nhất về SDK Intel FPGA cho OpenCL .
Gian hàng, Công suất phòng, Băng thông
Lập hồ sơ hạt nhân của bạn để xác định các tắc nghẽn hiệu suất. Để biết thêm thông tin về cách lập hồ sơ thông tin giúp bạn xác định bộ nhớ kém hoặc hành vi kênh dẫn đến hiệu suất hạt nhân không đạt yêu cầu, hãy tham khảo phần Lập hồ sơ hạt nhân của bạn để xác định tắc nghẽn hiệu suất trong Hướng dẫn thực tiễn tốt nhất về SDK Intel FPGA cho OpenCL.
Tối ưu hóa vòng lặp
Một số kỹ thuật để tối ưu hóa các vòng lặp là:
Để biết một số mẹo về cách loại bỏ các phụ thuộc mang vòng lặp trong các tình huống khác nhau cho một hạt nhân mục công việc duy nhất, hãy tham khảo phần Loại bỏ phụ thuộc mang vòng lặp của SDK Intel FPGA cho Hướng dẫn thực hành tốt nhất về OpenCL.
Để biết thêm thông tin về cách tối ưu hóa các phép toán dấu phẩy động, hãy tham khảo phần Tối ưu hóa hoạt động dấu phẩy động của SDK Intel FPGA cho Hướng dẫn thực hành tốt nhất về OpenCL.
Tối ưu hóa khu vực
Diện tích sử dụng là một cân nhắc thiết kế quan trọng nếu hạt nhân OpenCL của bạn có thể thực thi trên FPGAs có kích thước khác nhau. Khi bạn thiết kế ứng dụng OpenCL của mình, Intel khuyên bạn nên tuân theo các chiến lược thiết kế nhất định để tối ưu hóa việc sử dụng diện tích phần cứng.
Tối ưu hóa hiệu năng hạt nhân thường yêu cầu thêm tài nguyên FPGA. Ngược lại, tối ưu hóa diện tích thường dẫn đến giảm hiệu suất. Trong quá trình tối ưu hóa hạt nhân, Intel khuyên bạn nên chạy nhiều phiên bản của hạt nhân trên bo mạch FPGA để xác định chiến lược lập trình hạt nhân tạo ra kích thước tốt nhất so với sự đánh đổi hiệu suất.
Để biết thêm thông tin về các chiến lược tối ưu hóa việc sử dụng khu vực FPGA, hãy tham khảo phần Chiến lược tối ưu hóa việc sử dụng khu vực FPGA trong Hướng dẫn thực hành tốt nhất về Intel FPGA SDK cho OpenCL.
Ví dụ thiết kế tham khảo
Một số ví dụ thiết kế minh họa các kỹ thuật tối ưu hóa như sau:
Ví dụ thiết kế phép nhân ma trận
Ví dụ này cho thấy việc tối ưu hóa phép toán nhân ma trận cơ bản bằng cách sử dụng gạch vòng lặp để tận dụng việc tái sử dụng dữ liệu vốn có trong tính toán.
Ví dụ này minh họa:
- Tối ưu hóa dấu phẩy động có độ chính xác đơn
- Bộ đệm bộ nhớ cục bộ
- Tối ưu hóa biên dịch (vòng lặp unrolling, num_simd_work_items thuộc tính)
- Tối ưu hóa dấu phẩy động
- Thực thi nhiều thiết bị
Ví dụ thiết kế bộ lọc FIR miền thời gian
Ví dụ thiết kế này triển khai điểm chuẩn bộ lọc đáp ứng xung hữu hạn (FIR) miền thời gian từ Bộ điểm chuẩn thách thức HPEC.
Thiết kế này là một ví dụ tuyệt vời về cách FPGAs có thể cung cấp hiệu suất tốt hơn nhiều so với kiến trúc GPU cho các bộ lọc FIR dấu phẩy động.
Ví dụ này minh họa:
- Tối ưu hóa dấu phẩy động có độ chính xác đơn
- Thực hiện bộ đệm cửa sổ trượt 1D hiệu quả
- Các phương pháp tối ưu hóa hạt nhân hạng mục công việc đơn lẻ
Ví dụ thiết kế giảm tỷ lệ video
Ví dụ thiết kế này triển khai bộ giảm tỷ lệ video lấy video đầu vào 1080p và xuất video 720p ở tốc độ 110 khung hình / giây. Ví dụ này sử dụng nhiều hạt nhân để đọc và ghi vào bộ nhớ toàn cầu một cách hiệu quả.
Ví dụ này minh họa
- Kênh hạt nhân
- Nhiều hạt nhân đồng thời
- Các kênh kernel-to-kernel
- Mẫu thiết kế cửa sổ trượt
- Tối ưu hóa mẫu truy cập bộ nhớ
Ví dụ thiết kế lưu lượng quang học
Ví dụ thiết kế này là một triển khai OpenCL của thuật toán luồng quang Lucas Kanade. Một phiên bản dày đặc, không lặp lại và không kim tự tháp với kích thước cửa sổ 52x52 được hiển thị để chạy ở tốc độ hơn 80 khung hình mỗi giây trên Bộ phát triển SoC Cyclone® V.
Ví dụ này minh họa:
- Nhân mục công việc đơn
- Mẫu thiết kế cửa sổ trượt
- Kỹ thuật giảm sử dụng tài nguyên
- Đầu ra trực quan
Đào tạo
Đào tạo trực tuyến cụ thể về tối ưu hóa OpenCL với các ví dụ thiết kế có sẵn tại:
- Kỹ thuật tối ưu hóa OpenCL: Ví dụ về thuật toán xử lý hình ảnh
- Kỹ thuật tối ưu hóa OpenCL: Ví dụ về thuật toán băm an toàn
Tham khảo
Profiling
Trong quy trình thiết kế nhiều bước, nếu hiệu năng hạt nhân ước tính từ mô phỏng được chấp nhận, bạn có thể chọn thu thập thông tin về cách thiết kế của bạn hoạt động trong khi thực thi trên FPGA.
Bạn có thể hướng dẫn SDK Intel® FPGA cho OpenCL™ Offline Compiler đến bộ đếm hiệu suất công cụ trong mã Verilog trong tệp .aocx với tùy chọn -profile. Trong quá trình thực thi, SDK Intel FPGA cho OpenCL Profiler đo lường và báo cáo dữ liệu hiệu suất được thu thập trong quá trình thực thi nhân OpenCL trên FPGA. Sau đó, bạn có thể xem lại dữ liệu hiệu suất trong GUI Profiler.
Phần Hồ sơ hạt nhân OpenCL của bạn trong Intel FPGA SDK cho Hướng dẫn lập trình OpenCL chứa thêm thông tin về cách lập hồ sơ hạt nhân của bạn .
Cách phân tích dữ liệu hồ sơ
Thông tin hồ sơ giúp bạn xác định bộ nhớ kém hoặc hành vi kênh dẫn đến hiệu suất hạt nhân không đạt yêu cầu. Phần Hồ sơ hạt nhân của bạn để xác định tắc nghẽn hiệu suất trong Hướng dẫn thực tiễn tốt nhất về SDK Intel FPGA cho OpenCL chứa thông tin chuyên sâu hơn về GUI Dynamic Profiler và cách diễn giải dữ liệu hồ sơ như gian hàng, băng thông, lần truy cập bộ nhớ cache, v.v. Nó cũng chứa phân tích Profiler của một số kịch bản ví dụ thiết kế OpenCL.
2. Nhà phát triển mã máy chủ
Thư viện máy chủ thời gian chạy
Intel® FPGA SDK for OpenCL cung cấp trình biên dịch và công cụ để bạn xây dựng và chạy các ứng dụng OpenCL™ nhắm mục tiêu đến các sản phẩm Intel FPGA.
Nếu bạn chỉ yêu cầu SDK Intel FPGA cho chức năng triển khai hạt nhân của OpenCL, hãy tải xuống và cài đặt Intel FPGA Runtime Environment (RTE) cho OpenCL.
RTE là một tập hợp con của SDK Intel FPGA cho OpenCL. Không giống như SDK, cung cấp môi trường cho phép phát triển và triển khai các chương trình nhân OpenCL, RTE cung cấp các công cụ và thành phần thời gian chạy cho phép bạn xây dựng và thực thi chương trình máy chủ và thực thi các chương trình nhân OpenCL được biên dịch sẵn trên bảng tăng tốc mục tiêu.
Không cài đặt SDK và RTE trên cùng một hệ thống máy chủ. SDK đã chứa RTE.
Tiện ích và thư viện thời gian chạy máy chủ
RTE cho OpenCL cung cấp các tiện ích, lưu trữ thư viện thời gian chạy, trình điều khiển và các thư viện và tệp dành riêng cho RTE.
- Tiện ích RTE bao gồm các lệnh bạn có thể gọi để thực hiện các tác vụ cấp cao. Các tiện ích RTE là một tập hợp con của SDK Intel FPGA cho các tiện ích OpenCL
- Thời gian chạy máy chủ cung cấp API nền tảng máy chủ OpenCL và API thời gian chạy cho ứng dụng máy chủ OpenCL của bạn
Thời gian chạy máy chủ bao gồm các thư viện sau:
- Các thư viện được liên kết tĩnh cung cấp API máy chủ OpenCL, trừu tượng hóa phần cứng và thư viện trợ giúp
- Thư viện liên kết động (DLL) cung cấp sự trừu tượng hóa phần cứng và thư viện trợ giúp
Để biết thêm thông tin về các tiện ích và thư viện thời gian chạy máy chủ, hãy tham khảo phần Nội dung của Intel FPGA RTE cho OpenCL của Intel FPGA RTE cho Hướng dẫn Bắt đầu OpenCL.
Truyền dữ liệu (Kênh máy chủ)
Giờ đây, bạn có thể giảm đáng kể độ trễ hệ thống của hệ thống bằng cách sử dụng các kênh máy chủ cho phép truyền dữ liệu từ máy chủ để truyền trực tiếp vào nhân FPGA thông qua giao diện PCIe* trong khi bỏ qua bộ điều khiển bộ nhớ. Nhân FPGA có thể bắt đầu xử lý dữ liệu ngay lập tức và không phải đợi quá trình truyền dữ liệu hoàn tất. Các kênh máy chủ được hỗ trợ trong giao diện lập trình ứng dụng thời gian chạy OpenCL (API) và bao gồm hỗ trợ mô phỏng.
Để biết thêm chi tiết về các kênh máy chủ lưu trữ và hỗ trợ mô phỏng, hãy tham khảo phần Mô phỏng kênh I/O của SDK Intel® FPGA cho Hướng dẫn lập trình OpenCL™.
Làm đầy
Hồ sơ cho phép bạn tìm hiểu chương trình của bạn đã dành thời gian ở đâu và các chức năng khác nhau được gọi là gì. Thông tin này cho bạn biết phần nào của chương trình đang chạy chậm hơn bạn mong đợi có thể cần viết lại để thực thi chương trình nhanh hơn. Nó cũng có thể cho bạn biết chức năng nào đang được gọi thường xuyên hơn hoặc ít hơn bạn mong đợi.
Giáo sư
gprof là một công cụ mã nguồn mở có sẵn trong các hệ điều hành Linux* để lập hồ sơ mã nguồn. Nó hoạt động trên lấy mẫu dựa trên thời gian. Trong các khoảng thời gian, bộ đếm chương trình được thẩm vấn để quyết định tại thời điểm nào trong mã thực thi đã đến.
Để sử dụng gprof, biên dịch lại mã nguồn bằng cách sử dụng cờ hồ sơ trình biên dịch -pg
Chạy các tệp thực thi để tạo các tệp chứa thông tin hồ sơ:
Một tệp cụ thể có tên "gmon.out" chứa tất cả thông tin mà công cụ gprof yêu cầu để tạo dữ liệu hồ sơ có thể đọc được của con người được tạo. Vì vậy, bây giờ hãy sử dụng công cụ gprof theo cách sau:
$ gprof mã nguồn gmon.out > profile_data.txt
profile_data.txt là tệp chứa thông tin mà công cụ gprof sử dụng để tạo dữ liệu hồ sơ mà con người có thể đọc được. Điều này bao gồm hai phần: hồ sơ phẳng và biểu đồ cuộc gọi.
Cấu hình phẳng cho biết chương trình của bạn đã dành bao nhiêu thời gian cho mỗi hàm và số lần hàm đó được gọi.
Biểu đồ cuộc gọi hiển thị, đối với mỗi hàm, hàm nào đã gọi nó, hàm nào khác được gọi và bao nhiêu lần. Ngoài ra còn có một ước tính về lượng thời gian đã được dành cho các chương trình con của mỗi hàm.
Thông tin thêm về việc sử dụng gprof để lập hồ sơ có sẵn trên trang web của GNU.
Bộ khuếch đại VTune™ Intel®
Bộ khuếch đại Intel® VTune™ được sử dụng để lập hồ sơ giúp bạn tăng tốc và tối ưu hóa việc thực thi mã của mình trên các nền tảng nhúng Linux, hệ thống Android* hoặc Windows* cung cấp các loại phân tích sau:
- Phân tích hiệu suất: Tìm các tắc nghẽn mã nối tiếp và song song, phân tích các lựa chọn thuật toán và mức sử dụng công cụ GPU, đồng thời hiểu vị trí và cách ứng dụng của bạn có thể hưởng lợi từ các tài nguyên phần cứng sẵn có
- Intel Energy Profiler phân tích: Phân tích các sự kiện năng lượng và xác định những sự kiện lãng phí năng lượng
Để biết thêm thông tin về Bộ khuếch đại Intel V-tune, hãy truy cập trang web Bắt đầu với Bộ khuếch đại Intel VTune 2018 cho Hệ điều hành Linux .
Đa luồng
OpenCL™ host pipelined multithread cung cấp một khuôn khổ để đạt được thông lượng cao cho các thuật toán trong đó một số lượng lớn dữ liệu đầu vào cần được xử lý và quy trình cho mỗi dữ liệu cần được thực hiện theo thứ tự tuần tự. Một trong những ứng dụng tốt nhất của khung này là trong các nền tảng không đồng nhất, nơi phần cứng hoặc nền tảng thông lượng cao được sử dụng để tăng tốc phần tốn thời gian nhất của ứng dụng. Các phần còn lại của thuật toán phải chạy theo thứ tự tuần tự trên các nền tảng khác như CPU, để chuẩn bị dữ liệu đầu vào cho tác vụ được tăng tốc hoặc sử dụng đầu ra của tác vụ đó để chuẩn bị đầu ra cuối cùng. Trong trường hợp này, mặc dù hiệu suất của thuật toán được tăng tốc một phần, tổng thông lượng hệ thống thấp hơn nhiều do tính chất tuần tự của thuật toán gốc.
Trong AN 831: Intel FPGA SDK dành cho ứng dụng đa luồng liên tục máy chủ OpenCL Lưu ý, một khung đường ống mới cho thiết kế thông lượng cao được đề xuất. Khung này tối ưu để xử lý dữ liệu đầu vào lớn thông qua các thuật toán trong đó sự phụ thuộc dữ liệu buộc phải thực hiện tuần tự tất cả các giai đoạn hoặc nhiệm vụ của thuật toán.
FPGA Khởi đầu từ Máy chủ
FPGAs được sử dụng nhiều trong không gian tăng tốc. OpenCL có một cách cụ thể được CPU sử dụng để giảm tải tác vụ cho FPGA. Tệp đính kèm bên dưới chứa các bước khởi tạo phổ biến cần thiết để mã máy chủ khởi chạy nhân FPGA. Tải xuống tệp chứa các bước khởi tạo tại đây.
Hàm init() có thể được gọi từ hàm main() để khởi tạo FPGA. Mã đầu tiên tìm thiết bị mà hạt nhân sẽ chạy, sau đó lập trình nó với aocx được cung cấp trong cùng thư mục với tệp thực thi của máy chủ. Sau các bước khởi tạo trong mã, người dùng phải đặt các đối số kernel theo nhu cầu thiết kế của họ.
Ngoài ra còn có một hàm cleanup() giải phóng tài nguyên sau khi thực thi kernel.
3. Gỡ lỗi
Mô phỏng
SDK Intel® FPGA cho OpenCL™ Emulator có thể được sử dụng để kiểm tra chức năng của kernel. Người dùng cũng có thể gỡ lỗi chức năng nhân OpenCL như một phần của ứng dụng máy chủ trên hệ thống Linux*. Tính năng gỡ lỗi được cung cấp với SDK Intel FPGA cho Trình giả lập OpenCL cho phép bạn làm như vậy.
Để biết thêm thông tin, hãy tham khảo các phần này trong Hướng dẫn lập trình Intel FPGA SDK for OpenCL:
Profiling
Để biết thêm thông tin về lập hồ sơ, hãy tham khảo các phần này trong Hướng dẫn lập trình Intel® FPGA SDK cho OpenCL™:
Biến gỡ lỗi thời gian chạy |
|
---|---|
Có một số biến môi trường nhất định có thể được đặt để lấy thêm thông tin gỡ lỗi trong khi chạy ứng dụng máy chủ. Đây là Intel® FPGA SDK cho các biến môi trường cụ thể của OpenCL™, có thể giúp chẩn đoán sự cố với thiết kế nền tảng tùy chỉnh. Bảng sau liệt kê tất cả các biến môi trường này cũng như mô tả chúng một cách chi tiết. | |
Tiêu đề biến môi trường | Mô tả |
ACL_HAL_GỠ LỖI |
Đặt biến này thành giá trị từ 1 đến 5 để tăng đầu ra gỡ lỗi từ lớp trừu tượng phần cứng (HAL), giao tiếp trực tiếp với lớp MMD. |
ACL_PCIE_DEBUG |
Đặt biến này thành giá trị từ 1 đến 10.000 để tăng kết quả gỡ lỗi từ MMD. Cài đặt biến này rất hữu ích để xác nhận rằng đăng ký ID phiên bản đã được đọc chính xác và lõi IP UniPHY được hiệu chỉnh. |
ACL_PCIE_JTAG_CABLE |
Đặt biến này để ghi đè đối số quartus_pgm mặc định chỉ định số cáp. Mặc định là cáp 1. Nếu có nhiều cáp tải xuống Intel® FPGA, bạn có thể chỉ định một loại cáp cụ thể bằng cách đặt biến này. |
ACL_PCIE_JTAG_DEVICE_INDEX |
Đặt biến này để ghi đè đối số quartus_pgm mặc định chỉ định chỉ mục thiết bị FPGA. Theo mặc định, biến này có giá trị là 1. Nếu FPGA không phải là thiết bị đầu tiên trong chuỗi JTAG, bạn có thể tùy chỉnh giá trị. |
ACL_PCIE_USE_JTAG_PROGRAMMING |
Đặt biến này để buộc MMD lập trình lại FPGA bằng cáp JTAG thay vì cấu hình lại một phần. |
ACL_PCIE_DMA_USE_MSI |
Đặt biến này nếu bạn muốn sử dụng MSI để truyền truy cập bộ nhớ trực tiếp (DMA) trên HĐH Windows*. |
Công cụ chẩn đoán cho SDK Intel® FPGA cho OpenCL™
Công cụ chẩn đoán cho SDK Intel FPGA cho OpenCL giúp chẩn đoán và giải quyết các sự cố cài đặt/thiết lập khác nhau, các sự cố phần cứng và phần mềm xảy ra khi làm việc với SDK Intel FPGA cho OpenCL. Công cụ này thực hiện kiểm tra cài đặt, kiểm tra thiết bị và kiểm tra liên kết. Để biết thêm thông tin về công cụ, hãy tham khảo bản trình bày này. Để sử dụng công cụ, hãy tải xuống từ đây.
Các kỹ thuật gỡ lỗi khác
Do một vòng lặp trong chương trình máy chủ, người dùng có thể gặp phải hệ thống OpenCL™ chậm lại trong khi chạy nó. Để biết thêm chi tiết về một kịch bản như vậy, hãy tham khảo phần Gỡ lỗi hệ thống OpenCL của bạn đang dần chậm lại trong SDK Intel® FPGA cho Hướng dẫn lập trình OpenCL.
Intel Code Builder for OpenCL là một công cụ phát triển phần mềm có sẵn như một phần của Intel FPGA SDK for OpenCL. Nó cung cấp một tập hợp các trình cắm Microsoft* Visual Studio và Eclipse cho phép khả năng tạo, xây dựng, gỡ lỗi và phân tích các ứng dụng Windows* và Linux* được tăng tốc với OpenCL. Để biết thêm thông tin, hãy tham khảo phần Phát triển/Gỡ lỗi ứng dụng OpenCL bằng cách sử dụng Intel Code Builder cho OpenCL của Intel FPGA SDK cho Hướng dẫn lập trình OpenCL.
Giải pháp cơ sở dữ liệu tri thức
Intel® Arria® 10 thiết bị
Intel® Stratix® 10 thiết bị
Tài nguyên bổ sung
Dưới đây là một số liên kết bổ sung từ Cộng đồng Intel FPGA cho các vấn đề cụ thể liên quan đến giai đoạn thiết kế và chạy:
4. Đào tạo có sẵn
Các khóa đào tạo
Xem các khóa đào tạo OpenCL™ sau:
- Giới thiệu về Điện toán song song với OpenCL™ trên Intel® FPGAs
- Viết OpenCL trên Intel FPGAs
- Chạy OpenCL trên Intel FPGAs
- Các khóa đào tạo OpenCL khác
- Xây dựng mô-đun RTL cho SDK Intel® FPGA cho OpenCL™
- Xây dựng nền tảng tùy chỉnh cho Intel® FPGA SDK cho OpenCL:™ Kiến thức cơ bản về BSP
- Xây dựng nền tảng tùy chỉnh cho Intel® FPGA SDK cho OpenCL™: Sửa đổi nền tảng tham chiếu
Video nhanh OpenCL™ |
|
---|---|
Tiêu đề video |
Mô tả video |
Video này mô tả quy trình sẵn dùng để chạy hai ứng dụng, OpenCL HelloWorld và OpenCL™ fast Fourier transform (FFT) trên SoC Cyclone® V bằng máy Windows*. |
|
Cách chạy Hello World và (Các chương trình khác) với OpenCL trên SoC Cyclone V bằng Windows Phần 2 |
Video này mô tả quy trình sẵn dùng để chạy hai ứng dụng, OpenCL HelloWorld và OpenCL FFT trên SoC Cyclone V bằng máy Windows. |
Cách chạy Hello World và (Các chương trình khác) với OpenCL trên SoC Cyclone V bằng Windows Phần 3 |
Video này mô tả quy trình sẵn dùng để chạy hai ứng dụng, OpenCL HelloWorld và OpenCL FFT trên SoC Cyclone V bằng máy Windows. |
Cách chạy Hello World và (Các chương trình khác) với OpenCL trên SoC Cyclone V bằng Windows Phần 4 |
Video này mô tả quy trình sẵn dùng để chạy hai ứng dụng, OpenCL HelloWorld và OpenCL FFT trên SoC Cyclone V bằng máy Windows. |
Cách chạy Hello World và (Các chương trình khác) với OpenCL trên SoC Cyclone V bằng Windows Phần 5 |
Video này mô tả quy trình sẵn dùng để chạy hai ứng dụng, OpenCL HelloWorld và OpenCL FFT trên SoC Cyclone V bằng máy Windows. |
Cách đóng gói các mô-đun / thiết kế Verilog tùy chỉnh dưới dạng thư viện OpenCL |
Video thảo luận về lý do tại sao khách hàng có thể sử dụng tính năng này để có các khối xử lý tùy chỉnh (RTL) của họ trong mã nhân OpenCL. Video giải thích ví dụ thiết kế, chẳng hạn như makefiles và tệp cấu hình, đồng thời giải thích quy trình biên dịch. Video cũng cho thấy bản demo của ví dụ thiết kế. |
OpenCL trên SoC Altera® FPGA (Máy chủ Linux *) - Phần 1 - Tải xuống và thiết lập công cụ |
Video này hướng dẫn bạn cách tải xuống, cài đặt và định cấu hình các công cụ cần thiết để phát triển nhân OpenCL và mã máy chủ nhắm mục tiêu Altera® FPGAs SoC. |
OpenCL trên SoC Altera FPGA (Máy chủ Linux) - Phần 2 - Chạy Vector Thêm ví dụ với Trình giả lập |
Video này hướng dẫn bạn cách tải xuống và biên dịch một ứng dụng OpenCL mẫu nhắm mục tiêu đến trình giả lập được tích hợp trong OpenCL. |
OpenCL trên Altera SoC FPGA (Máy chủ Linux) - Phần 3 - Biên dịch mã hạt nhân và máy chủ cho SoC FPGA |
Video này hướng dẫn bạn cách biên dịch nhân OpenCL và mã máy chủ nhắm mục tiêu đến FPGA và bộ xử lý của FPGA SoC Cyclone V. |
OpenCL trên Altera SoC FPGA (Máy chủ Linux) - Phần 4 - Thiết lập môi trường thời gian chạy |
Video này hướng dẫn bạn cách thiết lập bo mạch SoC Cyclone V để chạy ví dụ OpenCL và thực thi mã máy chủ và hạt nhân trên bo mạch. |
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.