news 2026/8/27 11:29:15

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/8/27 2:30:55

Open-AutoGLM表情数据采集困局破解(行业首份全流程方案)

第一章&#xff1a;Open-AutoGLM表情包收集在人工智能与自然语言处理快速融合的背景下&#xff0c;Open-AutoGLM作为一款基于多模态大模型的表情包自动化生成与收集框架&#xff0c;正逐渐成为社区创作者的重要工具。它不仅支持从公开社交平台智能抓取图文内容&#xff0c;还能…

作者头像 李华
网站建设 2026/8/27 15:43:26

Excalidraw版本升级迁移注意事项

Excalidraw 版本升级迁移注意事项 在远程协作日益成为主流工作模式的今天&#xff0c;可视化工具早已不再是“锦上添花”的辅助手段&#xff0c;而是产品设计、架构讨论乃至跨团队沟通的核心载体。Excalidraw 凭借其极简的手绘风格、零门槛的使用体验和强大的可扩展性&#xf…

作者头像 李华
网站建设 2026/8/27 3:56:35

Excalidraw与Obsidian集成:构建个人知识图谱

Excalidraw与Obsidian集成&#xff1a;构建个人知识图谱 在技术人写文档的日常中&#xff0c;有没有过这样的瞬间——明明脑中有清晰的系统架构&#xff0c;可一动笔就成了“先有A服务调用B模块……再通过中间件转发……”&#xff0c;越写越乱&#xff1f;文字擅长线性叙述&am…

作者头像 李华
网站建设 2026/8/26 22:46:40

【Open-AutoGLM适配提速秘诀】:3步实现应用更新零延迟

第一章&#xff1a;Open-AutoGLM适配提速的核心价值在大模型应用落地过程中&#xff0c;推理效率直接影响用户体验与部署成本。Open-AutoGLM作为面向AutoGLM架构的开源适配框架&#xff0c;其核心价值在于通过模型压缩、计算图优化与硬件感知调度等手段&#xff0c;显著提升推理…

作者头像 李华
网站建设 2026/8/27 4:46:13

Pytest 测试用例自动生成:接口自动化进阶实践

引言&#xff1a;为什么我们要抛弃 “手写用例”&#xff1f; 在接口自动化实践中&#xff0c;当项目规模扩大、用例数量激增时&#xff0c;传统“手写Pytest用例”的模式往往会陷入瓶颈。 做接口自动化的同学&#xff0c;大概率都踩过这样的硬编码坑&#xff1a;写一条 “新…

作者头像 李华
网站建设 2026/8/27 9:57:25

Open-AutoGLM权限配置避坑大全(20年专家实战经验总结)

第一章&#xff1a;Open-AutoGLM权限体系核心认知Open-AutoGLM作为新一代自动化大语言模型管理平台&#xff0c;其权限体系设计遵循最小权限原则与角色分离机制&#xff0c;确保系统安全与操作合规。平台通过细粒度的访问控制策略&#xff0c;实现对用户、模型、任务及数据资源…

作者头像 李华