This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6670函数分四核处理问题耗时问题



下面是函数,单核跑耗时0.26ms,分到四核跑耗时0.21ms,为什么会节约这么少的时间呢?一般函数分到四核跑至少要降低一半的时间啊?

#pragma CODE_SECTION(DSPF_sp_dotp_vec_cplx, ".text:optimized");

#include "DSPF_sp_dotp_vec_cplx.h"

void DSPF_sp_dotp_vec_cplx(const float * x, const float * y, int nx,
float * z)
{
int i;
double x0_re_im, y0_re_im, result0 = 0;
double x1_re_im, y1_re_im, result1 = 0;
double x2_re_im, y2_re_im, result2 = 0;
double x3_re_im, y3_re_im, result3 = 0;


_nassert(nx % 4 == 0);
_nassert(nx > 0);
_nassert((int)x % 8 == 0);
_nassert((int)y % 8 == 0);

for(i = 0; i < 2 * nx; i += 8)
{
/* load 4 sets of input data */
x0_re_im = _amemd8((void*)&x[i]);
y0_re_im = _amemd8((void*)&y[i]);

x1_re_im = _amemd8((void*)&x[i+2]);
y1_re_im = _amemd8((void*)&y[i+2]);

x2_re_im = _amemd8((void*)&x[i+4]);
y2_re_im = _amemd8((void*)&y[i+4]);

x3_re_im = _amemd8((void*)&x[i+6]);
y3_re_im = _amemd8((void*)&y[i+6]);

/* calculate 4 running sums */
result0 = _complex_mpysp(x0_re_im, y0_re_im);
result1 = _complex_mpysp(x1_re_im, y1_re_im);
result2 = _complex_mpysp(x2_re_im, y2_re_im);
result3 = _complex_mpysp(x3_re_im, y3_re_im);
z[i]=_hif(result0);
z[i+1] = _lof(result0);
z[i+2]=_hif(result1);
z[i+3] = _lof(result1);
z[i+4]=_hif(result2);
z[i+5] = _lof(result2);
z[i+6]=_hif(result3);
z[i+7] = _lof(result3);

}
}