Intel®高层次综合编译器专业版: 最佳实践指南

ID 683152
日期 6/22/2020
Public

本文档可提供新的版本。客户应 单击此处 前往查看最新版本。

文档目录

7.1. 并行执行多个循环

使用HLS任务,就可在循环嵌套语境下以流水线方式运行顺序循环。
例如,在以下代码实例中,如果 Intel® HLS Compiler Pro Edition可将调用流水线化,则第一和第二循环可执行组件foo()的不同调用:
component void foo() { // first loop for (int i
                = 0; i < n; i++) { // Do something } // second loop for (int i = 0; i < m;
                i++) { // Do something else } }
然而,组件foo()的同一调用无法并行执行两个循环。然而任务系统提供将循环移入异步任务的方法来实现该操作。在第一循环位于异步任务的情况下,第二循环可与第一循环同时运行。
void first_loop() { for (int i = 0; i < n;
                i++) { // Do something } } void second_loop() { for (int i = 0; i < m; i++) { //
                Do something else } } component void foo() {
                  ihc::launch<first_loop>(); ihc::launch<second_loop>();
                  ihc::collect<first_loop>(); ihc::collect<second_loop>();
              }

查看教程 <quartus_installdir>/hls/examples/tutorials/system_of_tasks/parallel_loop了解更多有关如何并行运行多个循环。