镇江外贸型网站建设寻找网站制作公司
2026/6/19 3:45:08 网站建设 项目流程
镇江外贸型网站建设,寻找网站制作公司,公司网站主要几方面,wordpress 4.8 表情一、循环优化 1.循环可以流水线化#xff0c;可以展开#xff0c;可以部分展开#xff0c;可以扁平化#xff0c;可以合并。 2.对于循环的索引index变量#xff0c;避免使用全局变量#xff0c;这个不利于优化。二、变量循环边界 1.循环的边界如果是变量#xff0c;将禁…一、循环优化1.循环可以流水线化可以展开可以部分展开可以扁平化可以合并。2.对于循环的索引index变量避免使用全局变量这个不利于优化。二、变量循环边界1.循环的边界如果是变量将禁止执行vivado hls可应用的某些最优化操作2.如果循环的边界是顶层函数的参数传入过来的那么认为循环边界是变量3.如果循环的边界是变量那么会阻止工具去判断循环的时延时延将是问号解决办法使用tripcount行程来约束说明或者将c语言代码中使用assert宏定义。4.由于变量边界循环无法展开因此不仅阻止应用展开 (unroll) 指令而且还会阻止将循环上层的层次流水线化5.当循环或函数实现流水线化后Vivado HLS 即可将函数或循环下层层级中的所有循环展开。如果在此层级中存在具有变量边界的循环它就会阻止流水线化。三、对含有变量边界的循环的解决办法对于含变量边界的循环解决方案是通过循环内部的条件执行来将循环迭代次数设置为固定值。可重写变量循环边界示例中的代码如以下代码示例所示。此处循环边界显式设置为变量宽度的最大值循环主体则以有条件方式来执行#include ap_cint.h#define N 32typedef int8 din_t;typedef int13 dout_t;typedef uint5 dsel_t;dout_t loop_max_bounds(din_t A[N], dsel_t width) {dout_t out_accum0;dsel_t x;LOOP_X:for (x0;xN; x) {if (xwidth) {out_accum A[x];}}return out_accum;}以上示例中的 for 循环 (LOOP_X) 可展开。由于此循环的上限固定因此 Vivado HLS 知晓需创建的硬件数量。在 RTL设计中包含 N(32) 份循环主体副本。每份循环主体副本都包含与之关联的条件逻辑并根据变量宽度值来执行。四、循环流水化1.当循环或函数流水线化时所在层级比流水线化的循环或函数层级更低的所有循环都必须展开五、循环流水化示例说明#include loop_pipeline.hdout_t loop_pipeline(din_t A[N]) {int i,j;static dout_t acc;LOOP_I:for(i0; i 20; i){LOOP_J: for(j0; j 20; j){acc A[i] * j;}}return acc;}1.上述代码中如果对loop_pipeline函数进行流水化设计dout_t loop_pipeline(din_t A[N]) {int i,j;static dout_t acc;#pragram pipeline II 1LOOP_I:for(i0; i 20; i){LOOP_J: for(j0; j 20; j){acc A[i] * j;}}return acc;}如果上面是这样优化那么LOOP_I和LOOP_J都需要被展开2.如果对LOOP_I进行pipeline流水化设计dout_t loop_pipeline(din_t A[N]) {int i,j;static dout_t acc;LOOP_I:for(i0; i 20; i){#pragram pipeline II 1LOOP_J: for(j0; j 20; j){acc A[i] * j;}}return acc;}如果代码是这么设计的化那么LOOP_J循环被全部展开unroll3.如何对LOOP_J进行pipeline优化dout_t loop_pipeline(din_t A[N]) {int i,j;static dout_t acc;LOOP_I:for(i0; i 20; i){LOOP_J: for(j0; j 20; j){#pragram pipeline II 1acc A[i] * j;}}return acc;}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询