 #include <stdio.h>
 #include <limits>
 #include <string>
+#include <typeinfo>
 
 #include <cub/block/block_histogram.cuh>
 #include <cub/block/block_load.cuh>

#ifdef QUICK_TEST

    // Compile/run quick tests
    Test<unsigned char, 256, 128, 4, BLOCK_HISTO_SORT>(RANDOM, "unsigned char");
    Test<unsigned char, 256, 128, 4, BLOCK_HISTO_ATOMIC>(RANDOM, "unsigned char");

#else

    // Compile/run thorough tests
    for (int i = 0; i <= g_repeat; ++i)
    {
        Test<unsigned char, 32>("unsigned char");
        Test<unsigned char, 256>("unsigned char");
        Test<unsigned short, 1024>("unsigned short");
    }

#endif

    int                         BLOCK_THREADS,
    int                         ITEMS_PER_THREAD,
    BlockHistogramAlgorithm     ALGORITHM>
void Test()
{
    Test<SampleT, BINS, BLOCK_THREADS, ITEMS_PER_THREAD, ALGORITHM>(UNIFORM);
    Test<SampleT, BINS, BLOCK_THREADS, ITEMS_PER_THREAD, ALGORITHM>(INTEGER_SEED);
