Research Article

A Triply Selective MIMO Channel Simulator Using GPUs

Listing 4

Convolution code.
VEX_FUNCTION_D(cl_double2, convolution2,
(size_t, i) (cl_double2, x)
(cl_double2, y)(int, tRc)(int, nD)
(int, uS)(int, nT)(int, nR),(cmul)
(csum),
double2 sum = 0.0,0.0;
int tmp1 = inD;
int tmp2 = i/nD;
int  ext = uS   tRc;
int  limt = tRc;
if(tmp1 < tRc)
limt = tmp1 + 1;
for(size_t k=0; k<nT; k++)
for(size_t j=0; j<limt; j++)
sum = csum(sum, cmul(
x[tmp1-j+knD],
y[tmp1+juS+ext(knR+tmp2)]
));
return sum;
);