   __syncthreads();
 
   if (warpId > 0) val += shdata[warpId - 1];
+
   __syncthreads();
   if ((1 << BLOCKDIM2) - 1 == idx) shdata[0] = val;
   __syncthreads();


    }     //end while
  }

          n_bodies     -= nb;                                   //subtract from n_bodies number of bodies that have been extracted
          nl_pre       += nl;                                   //increase the number of leaves that where processed
          direct [tid] -= nb;                                   //subtract the number of extracted bodies in this pass
          prefix0[tid] = max(prefix0[tid] - nb, 0);             //same here, but do not let the number be negative (GT200 bug!?)
          n_direct     += nb;                                  //increase the number of bodies to be procssed

          while(n_direct >= DIM) 
