Hi,
I tried a simple convolution code but got this:
./run.sh: line 41: 5460 Floating point exception(core dumped) $opcodegen $finalnode $edge $llvmnode $llvmedge $obj prolog.sch kernel.sch epilog.sch $X $Y $R $liveoutnode $liveoutedge > cgra_instructions.txt
Simple convolution code:
#include <stdlib.h>
#include <stdio.h>
#define kernelSize 2
#define inputSize 50
int count = 0;
int *convolve(int input[inputSize][inputSize], int filter[kernelSize][kernelSize])
{
int output[inputSize-kernelSize+1][inputSize-kernelSize+1];
for (int i = 0; i < inputSize-kernelSize+1; i++)
for (int j = 0; j < inputSize-kernelSize+1; j++)
output[i][j] = 0;
for (int oj = 0; oj < inputSize-kernelSize+1; oj++)
{
#pragma CGRA
for (int oi = 0; oi < inputSize-kernelSize+1; oi++)
{
output[oi][oj] += input[oi + 0][oj + 0] * filter[0][0];
output[oi][oj] += input[oi + 0][oj + 1] * filter[0][1];
output[oi][oj] += input[oi + 1][oj + 0] * filter[1][0];
output[oi][oj] += input[oi + 1][oj + 1] * filter[1][1];
}
}
for (int oj = 0; oj < inputSize-kernelSize+1; oj++)
{
for (int oi = 0; oi < inputSize-kernelSize+1; oi++)
{
printf("%d \n",output[oi][oj]);
}
}
}
int main(int argc, char *argv[])
{
int h[inputSize][inputSize];
for (int i = 0; i < inputSize; i++)
for (int j = 0; j < inputSize; j++)
h[i][j] = i*j;
int z[kernelSize][kernelSize] = {{1, 2}, {1, 2}};
convolve(h, z);
}
Hi,
I tried a simple convolution code but got this:
Simple convolution code: