微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 用vivado HLS优化设计大规模矩阵相乘,求详细具体的优化策略

用vivado HLS优化设计大规模矩阵相乘,求详细具体的优化策略

时间:10-02 整理:3721RD 点击:

设计一个高性能的HLS, 可以用任何优化策略,在保持函数功能的同时尽可能提高性能。希望论坛里的大神给予具体优化的指导,最近几天调试太费劲了,希望大神给予保罗loop unroll, pipeline, dataflow, memory partition在内的多种优化策略具体怎么在这段代码里摆放优化,以及输入输出矩阵的interface, resource设置。要详细具体的策略,不是泛泛而谈的。
有重谢,多谢!
void matrixmul(
      mat_a_t a[1024][1024],    //a[1024][1024]
      mat_b_t b[1024][1024],    //b[1024][1024]
      result_t res[1024][1024]) //res[1024][1024]
{
  // Iterate over the rows of the A matrix
   Row: for(int i = 0; i < 1024; i++) {
      // Iterate over the columns of the B matrix
      Col: for(int j = 0; j < 1024; j++) {
         res[i][j] = 0;
         // Do the inner product of a row of A and col of B
         Product: for(int k = 0; k < 1024; k++) {
            res[i][j] += a[i][k] * b[k][j];
         }
      }
   }
}

您的这种算法用浮点运算效率来衡量已经很高了,建议加大缓冲池,并在编译时使用单进程多线程并行运行于多个处理器来提高效率

感谢分享

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top