 // TODO Update the create_input function to ensure all keys are actually unique
 TYPED_TEST(GroupByTest, AggregationTestDeviceAllUnique)
 {
-  const int num_keys = 1<<16;
+  const int num_keys = 1<<12;
   const int num_values_per_key = 1;
   auto input = this->create_input(num_keys, num_values_per_key, 1000, 1000);
   this->build_aggregation_table_device(input);


TYPED_TEST(GroupByTest, GroupBy)
{
  const int num_keys = 1<<16;
  const int num_values_per_key = 1;
  auto input = this->create_input(num_keys, num_values_per_key, 1000, 1000);
  const unsigned int result_size = this->groupby(input.first, input.second);

// to nest multiple types inside of the KeyValueTypes struct above
// KeyValueTypes<type1, type2> implies key_type = type1, value_type = type2
// This list is the types across which Google Test will run our tests
typedef ::testing::Types< 
                            KeyValueTypes<int32_t, int32_t, max_op>,
                            KeyValueTypes<int32_t, float, max_op>,
                            KeyValueTypes<int32_t, double, max_op>,
                            KeyValueTypes<int32_t, int64_t, max_op>,
                            KeyValueTypes<int32_t, uint64_t, max_op>,
                            KeyValueTypes<int64_t, int32_t, max_op>,
                            KeyValueTypes<int64_t, float, max_op>,
                            KeyValueTypes<int64_t, double, max_op>,
                            KeyValueTypes<int64_t, int64_t, max_op>,
                            KeyValueTypes<int64_t, uint64_t, max_op>,
                            KeyValueTypes<uint64_t, int32_t, max_op>,
                            KeyValueTypes<uint64_t, float, max_op>,
                            KeyValueTypes<uint64_t, double, max_op>,
                            KeyValueTypes<uint64_t, int64_t, max_op>,
                            KeyValueTypes<uint64_t, uint64_t, max_op>,
                            KeyValueTypes<int32_t, int32_t, min_op>,
                            KeyValueTypes<int32_t, float, min_op>,
                            KeyValueTypes<int32_t, double, min_op>,
                            KeyValueTypes<int32_t, int64_t, min_op>,
                            KeyValueTypes<int32_t, uint64_t, min_op>,
                            KeyValueTypes<uint64_t, int32_t, min_op>,
                            KeyValueTypes<uint64_t, float, min_op>,
                            KeyValueTypes<uint64_t, double, min_op>,
                            KeyValueTypes<uint64_t, int64_t, min_op>,
                            KeyValueTypes<uint64_t, uint64_t, min_op>,
                            KeyValueTypes<int32_t, int32_t, count_op>,
                            KeyValueTypes<int32_t, float, count_op>,
                            KeyValueTypes<int32_t, double, count_op>,
                            KeyValueTypes<int32_t, int64_t, count_op>,
                            KeyValueTypes<int32_t, uint64_t, count_op>,
                            KeyValueTypes<uint64_t, int32_t, count_op>,
                            KeyValueTypes<uint64_t, float, count_op>,
                            KeyValueTypes<uint64_t, double, count_op>,
                            KeyValueTypes<uint64_t, int64_t, count_op>,
                            KeyValueTypes<uint64_t, uint64_t, count_op>,
                            KeyValueTypes<int32_t, int32_t, sum_op>,
                            KeyValueTypes<unsigned int32_t, unsigned int32_t, sum_op>,
                            //KeyValueTypes<int32_t, float, sum_op>, // TODO: single precision floats don't current work due to numerical stability issues
                            KeyValueTypes<int32_t, double, sum_op>,
                            KeyValueTypes<int32_t, int64_t, sum_op>,
                            KeyValueTypes<int32_t, uint64_t, sum_op>,
                            KeyValueTypes<uint64_t, double, sum_op>,
                            KeyValueTypes<uint64_t, double, sum_op>,
                            KeyValueTypes<uint64_t, int64_t, sum_op>,
                            KeyValueTypes<uint64_t, uint64_t, sum_op>
                            > Implementations;

  TYPED_TEST_CASE(GroupByTest, Implementations);

TYPED_TEST(GroupByTest, DISABLED_AggregationTestHost)
{
