Part Number: TMS320C6678
Tool/software: TI-RTOS
I am profiling the performance of complex SVD provided in DSPLIB with this piece of simple code below:
#include <ti/dsplib/dsplib.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <xdc/runtime/System.h> /* header files for System_printf, TSCL and cache function calls, AKM */
#include "c6x.h"
#define N 12
float a[N * N * 2], aU[N * N * 2], aV[N * N * 2], aU1[N * N * 2], adiag[N * N * 2], asuper[N * N * 2];
float b[N * N * 2], bU[N * N * 2], bV[N * N * 2], bU1[N * N * 2], bdiag[N * N * 2], bsuper[N * N * 2];
int main(void) {
int i, j;
for (i = 0; i < N; ++i) {
for (j = 0; j < N; ++j) {
float real = (j - i + N) % N + 1;
float imag = (j - (N - 1 - i) + N) % N + 1;
a[i * N * 2 + j * 2] = real;
b[i * N * 2 + j * 2] = real;
a[i * N * 2 + j * 2 + 1] = imag;
b[i * N * 2 + j * 2 + 1] = imag;
}
}
DSPF_sp_svd_cmplx(N, N, b, bU, bV, bU1, bdiag, bsuper);
long long start = _itoll(TSCH, TSCL);
DSPF_sp_svd_cmplx(N, N, a, aU, aV, aU1, adiag, asuper);
long long end = _itoll(TSCH, TSCL);
long long span = end - start;
printf("%f\n", span * 0.0008);
return 0;
}
It gives me 0.00000. I tracked the code step by step and I found after calling the routine the value did not change.