      data_buff[i] = (i < inner) ? input[(i * box_size) + 4] : std::numeric_limits<T>::max();
      index_buff[i] = i;
    }
  };
  CPUKernelUtils::ParallelFor(task1, ceil_power2);

  for (size_t i = 2; i <= static_cast<size_t>(ceil_power2); i <<= 1) {
    for (size_t j = (i >> 1); j > 0; j >>= 1) {
      auto task2 = [&](size_t start, size_t end) {
        for (size_t tid = start; tid < end; tid++) {
          size_t tid_comp = tid ^ j;
          if (tid_comp > tid) {