 
 #define HP5_WARP_COUNT 5
 #define HP5_WARP_SIZE 32
-
-#define HP5_EXTRACT_BLOCKSIZE 128
-#define HP5_EXTRACT_BLOCKS (22*16)
 
 namespace {
 

    }
  }

  void scratchLayout(std::vector<uint32_t>& levels, std::vector<uint32_t>& offsets, uint32_t N)
  {
    if (N == 0) return;




 

  // No readback, no dynamic parallelism approach: Create enough blocks s.t. all multiprocessors have enough warps,
  // but let problem size beyond this be handled by looping. 

  switch (L)
  {
  case 0: ::runExtract<0>(out_d, offsets, scratch_d, N, stream); break;
  case 1: ::runExtract<1>(out_d, offsets, scratch_d, N, stream); break;
  case 2: ::runExtract<2>(out_d, offsets, scratch_d, N, stream); break;
  case 3: ::runExtract<3>(out_d, offsets, scratch_d, N, stream); break;
  case 4: ::runExtract<4>(out_d, offsets, scratch_d, N, stream); break;
  case 5: ::runExtract<5>(out_d, offsets, scratch_d, N, stream); break;
  case 6: ::runExtract<6>(out_d, offsets, scratch_d, N, stream); break;
  case 7: ::runExtract<7>(out_d, offsets, scratch_d, N, stream); break;
  case 8: ::runExtract<8>(out_d, offsets, scratch_d, N, stream); break;
  case 9: ::runExtract<9>(out_d, offsets, scratch_d, N, stream); break;
  case 10: ::runExtract<10>(out_d, offsets, scratch_d, N, stream); break;
  case 11: ::runExtract<11>(out_d, offsets, scratch_d, N, stream); break;
  case 12: ::runExtract<12>(out_d, offsets, scratch_d, N, stream); break;
  default:
    abort();
    break;
