news 2026/6/10 21:47:05

HLS用于应用加速

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HLS用于应用加速


一、why FPGA
1.FPGA可以自定义数据类型
2.FPGA可以自定义数据路径,dataflow or pipeline
3.有效的memory访问,可以random access,FIFO,stack
4.parallelism并行化没有限制

二、FPGA开发趋于简单化
1.可以使用c/c++/system c,opencl,python来开发FPGA
2.tenssorflow

三、HLS代码结构
1.top-level函数定义
2.interface接口定义
3.dataflow the processing
4.internal streaming variable变量声明
5.synchronize to start of frame帧同步开始
6.covert from axi stream to xf::Mat

四、HLS让FPGA开发变得简单

五、并行化
并行化有两种
1.data-level parallesim
2.task-level parallelism
3.Instruction(operator) level parallelsim
在HLS设计中需要考虑的data-level和task-level的并行化,
不需要考虑指令或者操作的并行化,指令和操作的并行化是HLS帮我们做了。

六、CPU和FPGA
1.cpu使用得地址空间都是虚拟的地址空间
2.FPGA使用的地址空间都是physical address space

七、组合逻辑 + 时序逻辑模型设计

1.单个组合逻辑+时序逻辑设计模型


void comb_sequential_top
(
ap_uint<32> in1,
ap_uint<32> in2,
ap_uint<32> *out
){
#pragma HLS INTERFACE ap_ctrl_none port=return
#pragma HLS INTERFACE ap_none port=in1
#pragma HLS INTERFACE ap_none port=in2
#pragma HLS INTERFACE ap_none port=out
static int L;//flip-flop

*out = in1 * L;//read current-L
L = in2 + L;//assign next-L
}

2.多个组合逻辑+时序逻辑模型

void sub1_func(
ap_uint<32> in1,
ap_uint<32> in2,
ap_uint<32> *out
){
#pragma HLS INLINE off
static int L;//flip-flop

*out = in1 * L;//read current-L
L = in2 + L;//assign next-L
}

void sub2_func(
ap_uint<32> in1,
ap_uint<32> in2,
ap_uint<32> *out
){
#pragma HLS INLINE off
static int L;//flip-flop

*out = in1 * L;//read current-L
L = in2 + L;//assign next-L
}


void comb_sequential_top
(
ap_uint<32> in1,
ap_uint<32> *out
){
#pragma HLS INTERFACE ap_ctrl_none port=return
#pragma HLS INTERFACE ap_none port=in1
#pragma HLS INTERFACE ap_none port=out

ap_uint<32> tmp1;
ap_uint<32> tmp2;

sub1_func(in1,tmp2,&tmp1);

sub2_func(tmp1,tmp1,&tmp2);

*out = tmp2;

}

上述这个代码综合设计,发现综合的rtl代码,并没有实现两次组合逻辑+时序逻辑模块,为什么??

template<int N>
void sub1_func(
ap_uint<32> in1,
ap_uint<32> in2,
ap_uint<32> *out
){
#pragma HLS INLINE off
static int L;//flip-flop

*out = in1 * L;//read current-L
L = in2 + L;//assign next-L
}

template<int N>
void sub2_func(
ap_uint<32> in1,
ap_uint<32> in2,
ap_uint<32> *out
){
#pragma HLS INLINE off
static int L;//flip-flop

*out = in1 * L;//read current-L
L = in2 + L;//assign next-L
}


void comb_sequential_top
(
ap_uint<32> in1,
ap_uint<32> *out
){
#pragma HLS INTERFACE ap_ctrl_none port=return
#pragma HLS INTERFACE ap_none port=in1
#pragma HLS INTERFACE ap_none port=out

ap_uint<32> tmp1;
ap_uint<32> tmp2;

sub1_func<1>(in1,tmp2,&tmp1);

sub1_func<2>(tmp1,tmp1,&tmp2);

*out = tmp2;

}
使用模板函数好像实现的功能也不太对!!!

这个后续专门对这块设计进行说明!!!

3.two-module

void comb_sequential_top
(
ap_uint<32> in1,
ap_uint<32> *out
){
#pragma HLS INTERFACE ap_ctrl_none port=return
#pragma HLS INTERFACE ap_none port=in1
#pragma HLS INTERFACE ap_none port=out

ap_uint<32> tmp1;
ap_uint<32> tmp2;

sub1_func(in1,in1,&tmp1);

sub1_func(tmp1,tmp1,&tmp2);

*out = tmp2;

}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:56:49

【Open-AutoGLM实战指南】:3步实现跨团队模型权限与数据安全共享

第一章&#xff1a;Open-AutoGLM团队共享方案概述Open-AutoGLM 是一个面向自动化机器学习与大语言模型协同训练的开源框架&#xff0c;其团队共享方案旨在实现多成员间的高效协作、资源统一管理与模型版本可控同步。该方案基于分布式架构设计&#xff0c;支持权限分级、任务调度…

作者头像 李华
网站建设 2026/6/10 0:24:33

旧版本淘汰倒计时,你的Open-AutoGLM适配方案准备好了吗?

第一章&#xff1a;Open-AutoGLM 应用更新快速适配在现代AI应用开发中&#xff0c;Open-AutoGLM 作为一款支持自动化语言建模与推理优化的开源框架&#xff0c;其版本迭代频繁。为确保生产环境中的服务稳定性和功能先进性&#xff0c;快速适配其应用更新成为关键运维能力。更新…

作者头像 李华
网站建设 2026/6/10 15:59:15

为什么90%的AI项目都缺表情数据?Open-AutoGLM采集避坑指南

第一章&#xff1a;为什么90%的AI项目都缺表情数据&#xff1f;在人工智能快速发展的今天&#xff0c;情感识别与人机交互正成为关键应用场景。然而&#xff0c;尽管面部表情数据在客服、心理健康、自动驾驶等领域具有巨大潜力&#xff0c;绝大多数AI项目仍面临严重的表情数据短…

作者头像 李华
网站建设 2026/6/10 11:07:44

数据科学家不愿公开的秘密:Open-AutoGLM表情采集的5大高效技巧

第一章&#xff1a;数据科学家为何对Open-AutoGLM表情采集讳莫如深在人工智能驱动的情感计算领域&#xff0c;Open-AutoGLM作为一款开源的多模态语言模型框架&#xff0c;理论上具备解析人类面部微表情并映射至语义情感空间的能力。然而&#xff0c;尽管其技术潜力巨大&#xf…

作者头像 李华
网站建设 2026/6/10 16:58:36

表锁问题全解析,深度解读MySQL表锁问题及解决方案

第一章&#xff1a;表锁问题全解析&#xff0c;深度解读MySQL表锁问题及解决方案MySQL中的表锁是数据库并发控制的重要机制之一&#xff0c;尤其在使用MyISAM存储引擎时表现尤为明显。当多个会话同时访问同一张表时&#xff0c;表锁可能引发阻塞、性能下降甚至死锁问题。理解其…

作者头像 李华
网站建设 2026/6/10 19:46:31

用Carsim+Simulink搞懂ACC与主动避撞控制

18b基于模型预测控制&#xff08;自带的mpc模块&#xff09;和最优控制理论的Carsim与Matlab/simulink联合仿真实现汽车主动避撞和跟车功能&#xff08;acc自适应巡航&#xff09;&#xff0c;包含simulink模型&#xff08;其中有车辆逆纵向动力学模型、逆发动机模型、切换控制…

作者头像 李华