         }
 
         // Fence to prevent hoisting any dependent code below into the loads above
-        __syncthreads();
+//        __syncthreads();
 
         // Load the referenced values from x and compute the dot product partials sums
         #pragma unroll

    typedef BlockExchange<VertexId, BLOCK_THREADS, ITEMS_PER_THREAD, true>      BlockExchangeRows;
    typedef BlockExchange<Value, BLOCK_THREADS, ITEMS_PER_THREAD, true>         BlockExchangeValues;
    typedef BlockDiscontinuity<HeadFlag, BLOCK_THREADS>                         BlockDiscontinuity;
    typedef BlockReduce<PartialSum, BLOCK_THREADS>                              BlockReduce;

    // Shared memory type for this threadblock
    struct TempStorage

            {
                // Scatter
                d_result[partial_sums[ITEM].row] = partial_sums[ITEM].partial;

                // Save off first scatter partial
                if (partial_sums[ITEM].row == temp_storage.first_block_row)
                {
                    temp_storage.first_scatter_partial = partial_sums[ITEM].partial;
                }
            }
        }
    }
