Vivado HLS
矩阵乘法
先通过不加优化指令实现一个矩阵乘法
void Matrix_Mul (float A[4][4], float B[4][4], float C[4][4])
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
C[i][j]=0;
for(int k=0;k<4;k++)
{
C[i][j] += A[i][k] * B[k][i];
}
}
}
};
先看一下时间和资源消耗
- 开始添加优化指令进行加速
通过unroll指令进行展开 factor设置为4
void Matrix_Mul (float A[4][4], float B[4][4], float C[4][4])
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
double sum=0;
for(int k=0;k<4;k++)
{
#pragma HLS UNROLL factor=4
sum += A[i][k] * B[k][i];