Other Parts Discussed in Thread: SPRC122
Hi,
I'm wondering whether we can afford to do some floating-point calculations on our C6455 and have been looking at C_fastRTS.
I created my own example based on inline_usage.c and found that it would "software pipeline" the multiple loop but not the add loop and wondered why(?).
But I was pretty impressed with it doing 16 floating-point multiples in 140 cycles.
My general question is:
Is it possible to get this kind of performance doing matrix maths (probably matrix multiplies)? Or does it get too complicated for the software pipelining to work?
Does anyone know of any more complex examples of using C_fastRTS?
Thanks,
Matt
P.S.
Here's what I did:
Void inline_usage()
{
float left [N] = { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8,
0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6};
float right [N] = { 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9,
1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7};
float add_res[N], mult_res[N];
int i;
STS_set(&inlineAddSts, CLK_gethtime());
for(i = 0; i < N; i++){
add_res[i] = addsp_i(left[i], right[i]);
}
STS_delta(&inlineAddSts, CLK_gethtime());
STS_set(&inlineMultiplySts, CLK_gethtime());
for(i = 0; i < N; i++){
mult_res[i] = mpysp_i(left[i], right[i]);
}
STS_delta(&inlineMultiplySts, CLK_gethtime());
}