当前位置: 首页 > news >正文

网站关闭了域名备案百度搜索网页版入口

网站关闭了域名备案,百度搜索网页版入口,wordpress简约清爽主题,wordpress插件数量本笔记使用的Vitis HLS版本为2022.2#xff0c;在windows11下运行#xff0c;仿真part为xcku15p_CIV-ffva1156-2LV-e#xff0c;主要根据教程#xff1a;跟Xilinx SAE 学HLS系列视频讲座-高亚军进行学习 学习笔记#xff1a;《FPGA学习笔记》索引 FPGA学习笔记#1 HLS简介及…本笔记使用的Vitis HLS版本为2022.2在windows11下运行仿真part为xcku15p_CIV-ffva1156-2LV-e主要根据教程跟Xilinx SAE 学HLS系列视频讲座-高亚军进行学习 学习笔记《FPGA学习笔记》索引 FPGA学习笔记#1 HLS简介及相关概念 FPGA学习笔记#2 基本组件——CLB、SLICE、LUT、MUX、进位链、DRAM、存储单元、BRAM FPGA学习笔记#3 Vitis HLS编程规范、数据类型、基本运算 FPGA学习笔记#4 Vitis HLS 入门的第一个工程 FPGA学习笔记#5 Vitis HLS For循环的优化1 FPGA学习笔记#6 Vitis HLS For循环的优化2 FPGA学习笔记#7 Vitis HLS 数组优化和函数优化 FPGA学习笔记#8 Vitis HLS优化总结和案例程序的优化 目录 1.数组优化    1.1.双端口内存    1.2.数组分割        1.2.1.一维数组分割        1.2.2.多维数组分割    1.3.数组合并        1.3.1.横向合并        1.3.2.纵向合并        1.3.3.数组分割和数组合并的结合使用    1.4.数组转换reshape    1.5.数组分割、合并和转换的对比    1.6.其他数组优化        1.6.1.定义ROM        1.6.2.数组初始化        1.6.3.FPGA的复位一定要知道2.函数优化    2.1.数据类型优化    2.2.inline    2.3.Allocation    2.4.DATAFLOW 1.数组优化 数组的优化对程序性能的提升是非常重要的一个合理的内存结构可以提高程序的并行度我们要找到资源和性能的权衡点最大化FPGA使用率。 如果数组为top函数传入的参数会表现为外部memory如果设计在内部则会用内部RAM、LUTRAM、UltraRAM、寄存器等形式表示。 1.1.双端口内存 考虑如下图所示的例程top函数接收一个输入数组mem[N]N4将每三个连续数据求和输出到sum[N-2]数组中共2轮循环。 很明显在每一次循环中需要读取mem数组三次写入sum数组一次可以看到右侧的时序图完成一次写操作需要3个时钟周期。 对于这样输出只用一次、输入使用多次我们可以使用RESOURCE directive配置为双端口内存提高对内存的读取效率 #pragma HLS RESOURCE variablemem coreRAM_2P_BRAM并同时对loop进行UNROOL 对应的资源消耗和时序如下现在一个时钟周期可以读取2个数据UNROLL出的2组电路在4个时钟周期便完成计算。 1.2.数组分割 1.2.1.一维数组分割 如下图是对于一个6长度数组的不同memory分配这三种方式分别对应了一个数组对连续块进行处理常见的可以考虑前一半和后一半分别有不同的处理block/factor2、一个数组对间隔数据进行处理常见的可以考虑奇偶数据cyclic/factor2、最高效率并发处理。 Block/Factor3方式分割数组等分成三份相邻2数据为1组 #pragma HLS ARRAY_PARTITION variablemem block factor3 dim1 Cyclic/Factor3方式分割数组等分为三份03一组14一组25一组 #pragma HLS ARRAY_PARTITION variablemem cyclic factor3 dim1 Register方式分割数组等分为6份一个数据一组占一个寄存器 #pragma HLS ARRAY_PARTITION variablemem complete dim1不同分割方法的时序如下 对于上面例程中的1输出-3输入运算关系使用Block/Factor2分为2个数组再使用双端口RAM一次最多可以读取4数据完全够用无需开到Factor3。 1.2.2.多维数组分割 以多维数组My_array[10][6][4]为例10是一维6是二维4是三维使用的约束和一维数组的一样只需要改变dim的值 #pragma HLS ARRAY_PARTITION variablemem block factor3 dim? #pragma HLS ARRAY_PARTITION variablemem cyclic factor3 dim? #pragma HLS ARRAY_PARTITION variablemem complete dim?对于指定不同dimHLS会对不同的数组进行整体分割如图为dim3和dim1所针对的数据如果对dim3使用block/factor2则My_array_0和1一组2和3一组进行分配。 我们以矩阵加法为例如图有两个4*5矩阵mat_a和mat_b其相加后结果存储在sum矩阵中 我们可以三个数组采用单端口BRAM存储均对第一维使用Block/Factor4的分割即每个矩阵分割为4个长度为5的一维数组并对循环添加PIPELINE、UNROLL约束来进行优化 我们看一下Factor4和2的情况当Factor该维数据个数时会将对应数据依次拼接总之一定会将一个N维数组变为一个N-1维数组。 不同factor的时序图如下可以通过地址线确定其在内存中也是顺序排列 1.3.数组合并 将多个小数组合并为一个大数组不仅可以减少资源用量在合理使用下也能提高性能。 数组合并使用的约束是ARRAY_MAP其分为横向和纵向。 1.3.1.横向合并 横向/水平方向合并Horizontal mapping使用的约束语句如下其扩展数组长度而不扩展数组位宽。 #pragma ARRAY_MAP variableA instanceab_array horizontal #pragma ARRAY_MAP variableB instanceab_array horizontal如下图有数组A[N]和B[M]使用该约束后会合并为AB[NM]低地址为0 ~ N-1高地址为N ~ NM-1。 这一操作会扩展B数据位宽较小者的位宽拼接后的数组以所有数组中最大位宽为准长度为各个数组相加。 可以看出这一操作所针对的场景和数组分割中的Block相似。 得到的数组的内存分配如下 1.3.2.纵向合并 纵向/垂直方向合并Vertical mapping的依赖语句如下 #pragma ARRAY_MAP variableA instanceab_array vertical #pragma ARRAY_MAP variableB instanceab_array vertical如下图中NM则扩展A数组的位宽为sizeof(A[0])sizeof(B[0])将B数组的对应数据和A数组对应数据拼接A数组的长度不变。 这一操作针对的场景和数组分割中的cyclic相似。 数组合并后的内存分配如下 1.3.3.数组分割和数组合并的结合使用 ARRAY_PARTITION和ARRAY_MAP是可以结合使用的考虑如下例子 对于2个数组m_accum和v_accum我们在一个循环中分别使用其奇数下标的数据在另一个循环中分别使用其偶数下标的数据。 这是我们从单个数组角度上我们需要使用cyclic进行数据分割从2个循环的角度上我们需要将奇数据和奇数据水平拼接偶数据和偶数据水平拼接我们就可以使用如下的约束语句 #pragma HLS ARRAY_PARTITION variablem_accum cyclic factor2 dim1 #pragma HLS ARRAY_PARTITION variablev_accum cyclic factor2 dim1 #pragma HLS ARRAY_MAP variablem_accum[0] instancemv_accum horizontal #pragma HLS ARRAY_MAP variablev_accum[0] instancemv_accum horizontal #pragma HLS ARRAY_MAP variablem_accum[1] instancemv_accum_1 horizontal #pragma HLS ARRAY_MAP variablev_accum[1] instancemv_accum_1 horizontal1.4.数组转换reshape 对于单个数组如果我们想让其从数据上仍为一个数组但从结构上改变其数据排布那么可以使用ARRAY_RESHAPE约束进行数组的reshape。 以一维数组为例如下是3种reshape方法 Block/Factor2将数组一分为二然后进行拼接长度减半数据位宽翻倍 #pragma HLS ARRAY_RESHAPE dim1 factor2 typeblock variablearr Cyclic/Factor2将数据奇偶分组对2取模为组号进行拼接长度减半位宽翻倍 #pragma HLS ARRAY_RESHAPE dim1 factor2 typecyclicvariablearr Complete将所有数据拼到一个数据中长度最短位宽最长 #pragma HLS ARRAY_RESHAPE dim1 typecomplete variablearr其内存中的数据分配如下图 1.5.数组分割、合并和转换的对比 有例程如下图数组A[N] B[M]第一个循环分别处理A数组的奇偶数据第二个循环分别处理B数组的前半、后半数据第三、四个循环分别依次读取A、B并写入到pa、pb 可以发现第一个循环更适合对A启用cyclic/factor2第二个循环更适合对B启用block/factor2。 我们对A和B尝试以下这几种约束分别将A和B横向ARRAY_MAP拼接、将A和B纵向ARRAY_MAP拼接、对A启用ARRAY_RESHAPE cyclic/factor2并对B启用ARRAY_RESHAPE block/factor2。 因此我们分别指定如下约束其中最右侧为我们刚才分析的约束 最终得到结果如下可以看到使用RESHAPE的性能最高但资源消耗也远超其他约束。 1.6.其他数组优化 1.6.1.定义ROM 方法1使用const 初始化值 缺点初始值较多时较繁琐代码管理不便 方法2使用头文件将初始值放在文件中代码/工程管理较方便 该头文件内结构应如下所示 1, 2, 3, 4, 5需要注意的是使用下面的方式是不行的因为这种方法是使用了#include展开文件到声明位置的原理#include xxx.h必须是所在行唯一的语句。 方法3如果一个数据的value是通过数学计算得到的并且在程序中不被更新Vitis HLS会自动将其定义为ROM如下图的sin_table 默认情况下ROM的输出latency是2我们可以在RESOURCE directive中将其配置为自定义值。 1.6.2.数组初始化 如果想要将数组映射为RTL的memory那么需要加static进行修饰这样既可以保证数组映射为memory而且还能节省初始化的时间。 如果想要将数组映射为ROM就需要用到上面的三种定义ROM的方式。 1.6.3.FPGA的复位一定要知道 这一点在第一篇笔记中提到过这里讲到了静态变量所以再说一遍。 在 HLS 中所有静态和全局变量都会被初始化为零如果给定了初始化值则初始化为其他值。这包括 RAM其中每个元素都被清除为零。 然而这种初始化只发生在 FPGA 首次编程时。任何后续处理器复位都不会触发初始化过程。 如果需要清除设备的内部状态那么应该包含某种复位协议根据复位状态处理所需要的程序。 2.函数优化 2.1.数据类型优化 对于参数等数据使用的数据类型如果可以提前确认某一个值的上限使用ap_int等类型可以有效减少资源的使用量如下图 2.2.inline HLS中有INLINE约束给函数添加INLINE约束后在编译时会自动将inline修饰的函数展开到调用位置硬件层面上可以减少调用函数带来的开销。 #pragma HLS INLINE如下图启用INLINE后最终只产生了一个模块 同时可以在directive中关闭inline #pragma INLINE off2.3.Allocation 在上篇笔记中有过介绍使用ALLOCATION约束将Accumulator函数实例化2次 #pragma ALLOCATION instancesAccumulator limit2 function对默认、limit1、limit2的情形进行了测试可以看到limit2带来了更高的性能但会消耗更多资源 2.4.DATAFLOW 应用于函数的DATAFLOW可以将多个调用间的依赖关系形成流水线并行执行
http://www.hkea.cn/news/14571287/

相关文章:

  • 代发关键词包收录网站如何seo推广
  • centos6.3 网站开发服务器网站访问慢
  • 网站如何推广引流网站如何做数据分析
  • 网站建设贵吗python源码分享网站
  • 做一元夺宝网站需要什么条件企业建站wordpress
  • 济南手机网站建设公司排名网址查询网站名称
  • 福州企业网站建站系统番禺网站开发哪家强
  • 网站建设毅文科技室内设计需要学哪些软件
  • 网站做下载wordpress织梦末班和dw建设网站哪个方便优化
  • 搜索引擎营销的方法有哪些外贸seo是啥
  • 怒江网站建设企业工商登记信息查询系统
  • 网站界面设计规则有源码怎么在本地网站搭建
  • 服装公司 网站怎么做学院加强网站建设
  • 商务网站开发流程有哪三个阶段网络管理系统的每个节点都包含一组与管理有关的软件
  • aspcms企业网站模板专门做三国战纪的网站叫什么
  • 做网站还是app省钱软件开发包括哪些
  • 网站建设费用是否资本化西部数码备案域名购买
  • 网站建设与维护的论述题关键词优化工具
  • 安什么网站建设动漫设计与游戏制作学什么
  • 红色php企业网站模板下载合肥市城乡建设局2019网站
  • 个人网站备案名字重要吗专业企业网站设计服务公司
  • 威海相亲网站北京朝阳区有哪些小区
  • 湖南网站备案要多少天厦门营销型网站
  • 免费中英文网站模板给个免费资源
  • 成都手机网站淘宝搜索关键词查询工具
  • seo优化网站网页教学广州市 网站建设 有限公司
  • 汕头网站外包运营商网站服务密码
  • seo流量排名工具建设网站如何优化关键词
  • 网站开发预算编制网站建设入什么科目
  • 网站ui设计收费tp5网站开发逻辑架构