diff --git a/psrdada_cpp/effelsberg/edd/src/SpectralKurtosisCuda.cu b/psrdada_cpp/effelsberg/edd/src/SpectralKurtosisCuda.cu index eca2fa020b4ccaec79bec57d3afe8605b8503201..456e147f53172ceba6a4a9270aecddd2765de4f0 100755 --- a/psrdada_cpp/effelsberg/edd/src/SpectralKurtosisCuda.cu +++ b/psrdada_cpp/effelsberg/edd/src/SpectralKurtosisCuda.cu @@ -54,11 +54,10 @@ __global__ void compute_sk_kernel(thrust::complex<float> *data, std::size_t samp } __syncthreads(); - for(int s = 1; s < blockDim.x; s *= 2){ - int index = 2 * s * l_index; - if(index < blockDim.x){ - s1[index] += s1[index + s]; - s2[index] += s2[index + s]; + for(int s = blockDim.x / 2; s > 0; s >>= 1){ + if(l_index < s){ + s1[l_index] += s1[l_index + s]; + s2[l_index] += s2[l_index + s]; } __syncthreads(); }