                                 k+=blockDim.x;
                                 if(k < Q_len)
                                 {
-                                        v = Q_row[k];
+					v = Q_row[k];
+					//v = Q_row[lane_id*WARP_SIZE + warp_id]; //strided access into the queue to provide better load balancing across warps
                                         r = R[v];
                                         r_end = R[v+1];
                                 }

                                        r_end = 0;
                                }

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

                {
                        //Listing 9: Warp-based, strip-mined neighbor gathering
                        int v, r, r_end;
                        int k = lane_id*WARP_SIZE + warp_id;

                        if(k < Q_len)
                        {
                                v = Q_row[k];
				//v = Q_row[lane_id*WARP_SIZE + warp_id]; //strided access into the queue to provide better load balancing across warps
                                r = R[v];
                                r_end = R[v+1];
                        }
