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

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
简介: 目录第一讲 For循环优化的性能指标第二讲 for循环优化-循环合并第三讲 for循环优化-数据流第四讲 嵌套for循环优化第五讲 for循环优化其他方法


2. Dataflow for 'For-Loop’


在没有使用Dataflow时,三者执行顺序为A—>B—>C,没有交叠。使用Dataflow后,我们在三个循环之间加入channel(Ping-pong RAM,FIFO或Register),通道可确保不需要任务等待上一个任务完成所有操作才可以开始,此时循环之间是一个并行的关系,三者之间是有交叠的,这可以减少延迟提高数据的吞吐量。


性能展示

:默认情况下,通道是通过ping-pong RAM实现的。通过conifg_dataflow,可以将实现方法更改为FIFO。

3. Dataflow优化限制


以下代码样式使Vivado HLS无法执行DATAFLOW优化


Single-producer-consumer violations

Bypassing tasks

Feedback between tasks

Conditional execution of tasks

Loop scopes with variable bounds

Loops with multiple exit conditions




我们如何进行优化使他可以使用

Bypassing Tasks Model


我们如何进行优化使他可以使用

4. Configuring Dataflow Memory Channels

Vivado HLS根据数据producer和consumer 的访问方式,将任务之间的通道实现为ping-pong或FIFO buffers。

  • 对于标量,指针和 reference parameters以及函数返回,Vivado HLS将通道实现为FIFO。
  • 如果参数(producer和consumer )是一个数组,则Vivado HLS将该通道实现为一个ping-pong buffers或FIFO,如下所示
  1. 如果Vivado HLS确定按顺序访问数据,则Vivado HLS将存储通道实现为深度为1的FIFO通道.
  2. 如果Vivado HLS无法确定数据是按顺序访问的,或者无法确定数据是以任意方式访问的,则Vivado HLS将内存通道实现为ping-pong buffers。


5. 明确指定默认通道

使用config_dataflow配置

  • 此配置为设计中的所有通道设置默认通道。
  • 要减少通道中使用的内存大小,可以使用FIFO。
  • 要显式设置FIFO中元素的深度或数量,请使用fifo_depth选项。

6. 总结

第四讲 嵌套for循环优化

1. 三种分类



2. A Simple Example of Perfect Loop

矩阵对应元素相乘,我们对内部for循环做Pipeline和对外部for循环做Pipeline的情况对比,如下

  • Pipeline最里面for循环可为大多数应用使用更少的硬件资源(与外部for循环相比),并具有通常可接受的吞吐量。
  • 对层次结构的高层进行Pipeline,会展开所有子循环,并可以创建更多要调度的操作(这可能会影响运行时间和内存容量),但通常在吞吐量和延迟方面提供最高性能的设计。

第五讲 for循环优化其他方法

本节主要讲解为:

  • 有关循环并行性的问题
  • for循环做流水如何使用rewind
  • for循环的边界是变量时,如何处理



1. 并行性

默认情况下,Vivado HLS对for循环做顺序执行的。虽然合并这些循环可以减少等待时间,但有时循环边界是变量和常数,因此无法合并循环。


因为这两个for循环是独立存在的,我们可以定义一个函数并且调用两次,但是在默认情况下,HLS尝试通过多次使用该功能来节省资源,而不是通过并行运行两个副本来节省时间。因此结果与上文情况相同。

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

热门文章

最新文章

下一篇
无影云桌面