     device_prop_t dev;
     dev.print();
 
-    const size_t num = 2000;
+    const size_t num = 3000;
     int32_t*  h_ptr;
     int32_t*  d_ptr_in;
     int32_t*  d_ptr_out;

    }
    cout << endl;

    SumEqualityBlock
        <<<1,block>>>
        ( grid_divide( num_in, 32*32 ),
          d_intermediate_block_total,
          d_intermediate_block_sum,
          num_in );

    cout << "Intermediate block sum:" << endl;
    for( int i=0; i<block_count; i++ ) {
        cout << h_ptr_intermediate_2[i] << " ";
        if( i%16==15 ) cout << endl;
    }
    cout << endl;

    return threadValue;
}

template<typename T>
__device__
T PrefixSumWarpExclusive( T threadValue, T& total )
{
    T n;
