 {
         int j = threadIdx.x;
         int lane_id = getLaneId();
+	int warp_id = threadIdx.x/32;
         __shared__ int  *Q_row;
         __shared__ int *Q2_row;
 

                                k+=blockDim.x;
                                if(k < Q_len)
                                {
                                        v = Q_row[k];
                                        r = R[v];
                                        r_end = R[v+1];
                                }

                                        r_end = 0;
                                }

                                if((k-(lane_id*WARP_SIZE)) >= Q_len) //If thread 0 doesn't have work, the entire warp is done
                                {
                                        break;
                                }
