                                                        DifferenceOpT,
                                                        OffsetT,
                                                        InputT,
-                                                       OutputT,
                                                        MayAlias,
                                                        ReadLeft>,
               d_input,

      const int tile_size = AdjacentDifferencePolicyT::ITEMS_PER_TILE;
      const int num_tiles =
        static_cast<int>(DivideAndRoundUp(num_items, tile_size));

      int shmem_size = AgentDifferenceT::SHARED_MEMORY_SIZE;

      std::size_t first_tile_previous_size = MayAlias * num_tiles *
                                             sizeof(InputT);

                                MayAlias,
                                ReadLeft>;

  __shared__ typename Agent::TempStorage storage;

  Agent agent(storage,
              input,
