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

2019-07-15 22:26发布


设计一个高性能的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];
         }
      }
   }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
超级开发板
1楼-- · 2019-07-16 02:57
您的这种算法用浮点运算效率来衡量已经很高了,建议加大缓冲池,并在编译时使用单进程多线程并行运行于多个处理器来提高效率
mabey
2楼-- · 2019-07-16 06:33
感谢分享

一周热门 更多>