【从零开始学习计算机科学】HLS算子调度

news2025/3/9 21:10:23

算子调度

调度是HLS 中的核心问题,为无时序或部分时序的输入指定时钟边界,其对最终结果质量具有很大的影响。调度会影响时钟频率、延时、吞吐率、面积、功耗等多种因素。

调度的输入是控制数据流图,其节点表示算子/操作,有向边表示数据依赖,控制依赖,优先依赖。如果没有控制流,其基本结构就是数据流图(DFG)。

在这里插入图片描述

调度过程将算子映射到一个状态,每个时钟周期对应着 FSM 中的一个状态,这称为控制步。

在这里插入图片描述
在这里插入图片描述

无约束的调度方法

无约束的调度方法只考虑依赖,目前,有两种常用的无约束调度方法:

ASAP

一,尽可能早的调度(ASAP),即把算子安排在尽可能早的控制步。其对应的算法伪代码如下:

ASAP G(V,E):
    V’ = Topological_Sort(G)

    foreach v i v_i vi in V’:

        if v i ∈ P I s v_i \in PIs viPIs : t i t_i ti = 1; // PIs, 主输入集合

        //假设每个算子都需要一个时钟周期

        else: t i t_i ti = max( t j t_j tj + 1); // ( v j , v i ) ∈ (v_j,v_i)\in (vj,vi) E

ALAP

二,尽可能迟的调度(ALAP),即把算子安排在尽可能晚的控制步。

其对应的算法伪代码如下:

ALAP (G(V,E),L): //L 是延时上限

    V’ = Reverse_Topological_Sort(G)

    foreach v i v_i vi in V’:

        if v i v_i vi ∈ \in POs: t i t_i ti = L; // POs, 主输出集合

         //假设每个算子都需要一个时钟周期

        else: t i t_i ti = min( t j t_j tj) - 1; // ( v i , v j ) ∈ (v_i,v_j) \in (vi,vj) E

带约束调度方法

带约束调度问题一般是 NP-Hard 问题,目前,有两类问题,分别是资源约束的调度(Resource Constrained Scheduling,RCS),即给定面积或资源约束最小化延时;时间约束的调度(Time Constrained Scheduling,TCS),即给定延时边界最小化资源

对于带约束调度问题,可采用精确建模方法,比如整数线性编程(Integer Linear Programming,ILP)、针对严格约束的 Hu 算法等等;也可以采用启发式算法,包含列表调度、力量引导算法、基于SDC的调度等等。

以下以ILP方法为例,建模并求解带约束的调度问题。

ILP调度

线性编程(Linear Programming, LP)主要是解决目标函数和约束都是线性表示的问题,其在理论上和实际上都能有效求解。而整数线性编程(ILP)除了目标函数和约束都是线性组合之外,变量的取值必须是整数,其通常也是 NP-Hard 问题(0-1 ILP 除外),但是,现代 ILP 求解器可以求解一定规模的 ILP 问题。

资源约束的调度(RCS)表述为硬件功能单元(FU)资源有限,每个时钟周期每个功能单元只能执行一个算子。比如,只有 K 个加法器的时候,同一个时钟周期执行的加法数量不超过 K。

RCS问题的输入:给定每种计算类型的功能单元的数量,最小化延时。

RCS 的 ILP 建模的第一步是定义变量。

首先定义二元决策变量 x i k x_{ik} xik x i k x_{ik} xik=1表示算子 i 在控制步 k 开始执行。i = 1,2,3,…,N,N 表示算子总数,k= 1,2,3,…,L, L 表示延时的上限。
定义 t i = ∑ k = 1 L ( k x i k ) t_i = \sum_{k=1}^{L} (kx_{ik}) ti=k=1L(kxik) t i t_i ti 表示算子 i 的起始时间。

第二步是建立约束关系。主要包含以下约束:

起始时间的唯一性 ∑ k x i k = 1 , i = 1 , 2 , ⋯   , N \sum_{k}x_{ik}=1,i=1,2,\cdots,N

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2312340.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos 安装composer 教程

打开命令行 php -r "copy(https://getcomposer.org/installer, composer-setup.php);" sudo php composer-setup.php --install-dir/usr/local/bin --filenamecomposer composer --version sudo chmod us /usr/local/bin/composer Super18120/article/details/14388…

C语言_数据结构总结2:动态分配方式的顺序表

0——静态分配内存的顺序表和动态分配内存的顺序表的相同之处和不同之处 相同之处 基本操作逻辑相同:无论是静态分配还是动态分配的顺序表,其核心的操作逻辑是一致的。例如插入操作都需要将插入位置之后的元素依次后移,删除操作都需要将删除…

WSL安装及问题

1 概述 Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,开发人员可以在 Windows 计算机上同时访问 Windows 和…

基于SpringBoot的商城管理系统(源码+部署教程)

运行环境 数据库:MySql 编译器:Intellij IDEA 前端运行环境:node.js v12.13.0 JAVA版本:JDK 1.8 主要功能 基于Springboot的商城管理系统包含管理端和用户端两个部分,主要功能有: 管理端 首页商品列…

HeidiSQL:一款免费的数据库管理工具

HeidiSQL 是一款免费的图形化数据库管理工具,支持 MySQL、MariaDB、Microsoft SQL、PostgreSQL、SQLite、Interbase 以及 Firebird,目前只能在 Windows 平台使用。 HeidiSQL 的核心功能包括: 免费且开源,所有功能都可以直接使用。…

Ae 效果详解:VR 色差

Ae菜单:效果/沉浸式视频/VR 色差 Immersive Video/VR Chromatic Aberrations VR 色差 VR Chromatic Aberrations效果用于模拟镜头色散现象,在 VR 视频中制造 RGB 通道错位的色彩偏移,以增强视觉风格或创造数字失真效果。 本效果适用于所有色深…

计算机毕业设计SpringBoot+Vue.js制造装备物联及生产管理ERP系统(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

【Linux内核系列】:深入解析输出以及输入重定向

🔥 本文专栏:Linux 🌸作者主页:努力努力再努力wz ★★★ 本文前置知识: 文件系统以及文件系统调用接口 用c语言简单实现一个shell外壳程序 内容回顾 那么在此前的学习中,我们对于Linux的文件系统已经有了…

PyTorch系列教程:Tensor.view() 方法详解

这篇简明扼要的文章是关于PyTorch中的tensor.view()方法的介绍与应用,与reshape()方法的区别,同时给出示例进行详细解释。 Tensor基础 Tensor(张量)的视图是一个新的Tensor,它与原始Tensor共享相同的底层数据,但具有不同的形状或…

软件测试的基础入门(二)

文章目录 一、软件(开发)的生命周期什么是生命周期软件(开发)的生命周期需求分析计划设计编码测试运行维护 二、常见的开发模型瀑布模型流程优点缺点适应的场景 螺旋模型流程优点缺点适应的场景 增量模型和迭代模型流程适应的场景…

地下变电站如何实现安全智能运营-以110kV站为例看环境监测与设备联控

1、地下变电站简介 在经济发达的地区,由于城市中心土地资源紧张、征地拆迁费用昂贵,因此采用地下变电站来解决这些问题不失为一个好的途径和思路。地下变电站一般采用室内全封闭式组合电气设备,220&#x…

windows无界面后台定时任务 (重启自启动,ODBS为例)

一、前言 mdb(Microsoft Database)是Microsoft Access中使用的一种数据存储格式,可以通过ODBC驱动程序进行访问和操作,在Python中也可以安装相应模块打开。 这是我在项目中更新bs数据的一个实践记录,结合windows定时一起记录一下,方便以后照搬~ 二、安装 Python安装库…

FPGA 实验报告:四位全加器与三八译码器仿真实现

目录 安装Quartus软件 四位全加器 全加器、半加器 半加器: 全加器: 四位全加器电路图 创建项目 半加器 全加器 四位全加器 代码实现 半加器 全加器 四位全加器 三八译码器 创建项目 代码展示 modelsim仿真波形图 四位全加器 三八译码…

win11 Visual Studio 17 2022源码编译 opencv4.11.0 + cuda12.6.3 启用GPU加速

win11 Visual Studio 17 2022 源码编译 opencv4.11.0 cuda12.6.3 启用GPU加速 配置: 生成 opencv 生成 opencv-python 1 下载源码和安装软件 win11 x64 系统 安装Visual Studio 17 2022 下载opencv4.11.0 源码 https://github.com/opencv/opencv/releases/tag/4.11.0 下载…

Ribbon实现原理

文章目录 概要什么是Ribbon客户端负载均衡 RestTemplate核心方法GET 请求getForEntitygetForObject POST 请求postForEntitypostForObjectpostForLocation PUT请求DELETE请求 源码分析类图关系 与Eureka结合重试机制 概要 什么是Ribbon Spring Cloud Ribbon是一个基于HTTP和T…

MuMu-LLaMA:通过大型语言模型进行多模态音乐理解和生成(Python代码实现+论文)

MuMu-LLaMA 模型是一种音乐理解和生成模型,能够进行音乐问答以及从文本、图像、视频和音频生成音乐,以及音乐编辑。该模型利用了用于音乐理解的 MERT、用于图像理解的 ViT 和用于视频理解的 ViViT 等编码器,以及作为音乐生成模型(…

2025最新比较使用的ai工具都有哪些,分别主要用于哪些方面?

文章目录 一、AI对话与交互工具二、AI写作与内容生成工具三、AI绘画与设计工具四、AI视频生成工具五、办公与效率工具六、其他实用工具选择建议 根据2025年最新行业动态和用户反馈,以下AI工具在多个领域表现突出,覆盖对话、写作、设计、视频生成等场景&a…

在ArcMap中通过Python编写自定义工具(Python Toolbox)实现点转线工具

文章目录 一、需求二、实现过程2.1、创建Python工具箱(.pyt)2.2、使用catalog测试代码2.3、在ArcMap中使用工具 三、测试 一、需求 通过插件的形式将点转线功能嵌入ArcMap界面,如何从零开始创建一个插件,包括按钮的添加、工具的实…

后智能体时代的LLM和Agent

文章目录 1. 关于AI重塑的哲学体系2. 关于AI大模型体系的认知3. 关于AI大模型体系的畅想4. 关于人和AI大模型体系的共处5. 写在最后 随着OpenAI、Deepseek、Manus等等智能体的爆火,人们茶前饭后、插科打诨的话题都离不开这些智能体,现状也正如《人民日报…

景联文科技:以精准数据标注赋能AI进化,构筑智能时代数据基石

在人工智能技术席卷全球的浪潮中,高质量数据已成为驱动AI模型进化的核心燃料。作为全球领先的AI数据服务解决方案提供商,景联文科技深耕数据标注领域多年,以技术为基、以专业为本,致力于为全球客户提供全场景、高精度、多模态的数…