跟Xilinx SAE 学HLS系列视频讲座笔记(4)——For循环优化(上)

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 目录第一讲 For循环优化的性能指标第二讲 for循环优化-循环合并第三讲 for循环优化-数据流第四讲 嵌套for循环优化第五讲 for循环优化其他方法

第一讲 For循环优化的性能指标

本节主要讲解为:

  • 与for循环相关的基本概念
  • Pipelining的for循环
  • for循环的展开
  • for循环的循环变量的数据类型,是否对综合后结果的资源有所影响。


1. 衡量指标

loop trip count :循环执行了几次

loop interation latency :循环一次用了几个cycle

loop interation latency(Loop II) :两次循环直接间隔了几个cycle

loop latency:整个for循环的latency

function latency

function initial interval(II)

2. 流水线优化

设置比较简单


采用Pipeline前后对比我们可以发现,在不采用流水线的时候是过程化运行(有时间的先后顺序进行);当采用流水线后,当在读数据的时候,下一个Fou循环就开始读地址,会有并行(椭圆标记的位置)的效果。

3. For循环展开

默认情况下,C函数中的For循环是被折叠的,即每次循环均采用同一套电路,它是分时复用的;所谓的展开是复制了多个相同的电路,从而允许所有迭代并行发生。


我们也可以把For循环部分展开,如下例所示,将For循环拆解成了3部分,被复制后(0,3),(1,4)和(2,5)分别共用一套逻辑资源。


4. i的数据类型

通常情况下i的数据类型是不会对资源的分配产生影响。

如下例子,Vivado HLS考虑到迭代次数被限制为6次,并为每个列出的数据类型使用最少的FPGA资源。因此,每种数据类型对资源使用情况都相同。

5. 总结

  • 清楚地了解Il和loop/function latency
  • Pipelining是减少循环延迟的一种非常流行的方法
  • 展开允许循环主体并行运行
  • 部分展开可以在并行性和资源之间进行折中
  • 迭代类型不影响面积结果
  • 循环变量的数据类型,对最终的资源消耗量没有影响。

第二讲 for循环优化-循环合并

1. 例子引入

这个例子有两个for循环,这两个for循环分别执行的是加法和减法。他们是可以并行执行的,我们所期望的计算方式为图右所示。

但实际的的处理方式,是按顺序执行的,所以latency就会比较的长,这不符号我们预期的结果。


在Vivado HLS提供了一种方式,将for循环进行合并,我们也因此引入了一个新的概念叫做region(下图绿线框对应的部分),这样循环合并部分就是region这一部分。

合并之后

由此我们可以得出合并可以在某种程度上帮助减少延迟。

2. 循环边界为不同的常数

如果循环界限是不同常量,则将最大常数值用作合并循环的界限。

3. 变量边界和常数边界


在没有合并时候,我们会发现Trip Count为0~15,这是因为k的变量类型为ap_uint<4>,其数据上限位15。当我们实施循环合并时会报错(无法合并)。这说明变量边界和常数边界无法合并。

4. 循环边界均为变量

当我们实施合并循环也会产生错误信息



5. 循环合并规则

我们可以通过修改代码去解决。

情况 合并结果
固定常数 将最大常数值用作合并循环的边界
均为变量 不能进行直接合并,可以通过更改代码去解决(保证边界大小相同)
一个常数一个变量 没有办法合并

6. 总结

第三讲 for循环优化-数据流

1. 例子引入


这个例子有3个循环,分别是Task A,Task B和Task C,数据流如图右所示,可以发现Task B依赖于Task A,Task C依赖于Task B。我们可以采取什么措施来减少延迟?我们可以采用Pipeline,for循环的合并是不可以的。

相关实践学习
1分钟部署经典小游戏
本场景介绍如何使用Serverless应用引擎SAE 1分钟快速部署经典小游戏。
SAE的功能与使用入门
欢迎来到《SAE的功能与使用入门》,本课程是“云原生Serverless Clouder认证“系列中的第三阶段。课程将向您介绍阿里云Serverless应用引擎(SAE)服务相关的概念、特性与使用方式。通过课程将带您逐步深入探索Serverless世界,借助SAE服务,即使没有丰富的云计算和IT经验,也能够让开发人员在实际业务场景中便捷的掌握如何构建和部署应用程序,快速拥抱Serverless架构,将精力聚焦在应用代码和业务逻辑的实现上。 学习完本课程后,您将能够: 掌握Serverless应用引擎(SAE)的基本概念与核心优势 了解Serverless应用引擎(SAE)的核心功能 掌握使用Serverless应用引擎(SAE)的开发和部署流程 了解Serverless应用引擎(SAE)的适用场景和最佳实践 &nbsp;
相关文章
跟Xilinx SAE 学HLS系列视频讲座笔记(6)—— 函数优化
1. 函数层面的优化 从函数这个角度来说代码风格,主要是看参数的数据类型,C++中的数据类型是以8为边界的,而实际硬件中我们可能会遇到任意精度的数据类型,因此我们一定在C++中定义为任意精度的数据类型;
110 0
跟Xilinx SAE 学HLS系列视频讲座笔记(6)—— 函数优化
跟Xilinx SAE 学HLS系列视频讲座笔记(5)—— 数组优化(下)
第一讲 数组分割 第二讲 数组映射与重组 第三讲 其他优化方法
104 0
跟Xilinx SAE 学HLS系列视频讲座笔记(5)—— 数组优化(下)
跟Xilinx SAE 学HLS系列视频讲座笔记(5)—— 数组优化(上)
第一讲 数组分割 第二讲 数组映射与重组 第三讲 其他优化方法
180 0
跟Xilinx SAE 学HLS系列视频讲座笔记(5)—— 数组优化(上)
跟Xilinx SAE 学HLS系列视频讲座笔记(4)——For循环优化(下)
目录 第一讲 For循环优化的性能指标 第二讲 for循环优化-循环合并 第三讲 for循环优化-数据流 第四讲 嵌套for循环优化 第五讲 for循环优化其他方法
125 0
跟Xilinx SAE 学HLS系列视频讲座笔记(4)——For循环优化(下)
|
5月前
|
运维 Serverless 应用服务中间件
Serverless 应用引擎产品使用合集之关于OSS映射目录的大小限制,如何可以跳过
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之关于OSS映射目录的大小限制,如何可以跳过
|
5月前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之通过 API 调用 /tagger/v1/interrogate 时,出现unsupported protocol scheme "" 错误,如何处理
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
缓存 运维 监控
Serverless 应用引擎产品使用合集之在使用函数计算 FC 部署 stable-diffusion 应用时,选了 tagger 扩展插件却拿不到提示词,还报错“Error”,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
运维 Kubernetes Java
Serverless 应用引擎产品使用合集之如何设置能让应用定时启停
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
运维 监控 Serverless
Serverless 应用引擎产品使用合集之需要上传多个文件,该如何处理
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
关系型数据库 MySQL Serverless
Serverless 应用引擎产品使用合集之在SAE2.0上的应用如何访问云原生数据库PolarDB MySQL版集群
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。

热门文章

最新文章