/**
 * \file dnn/src/cuda/roi_pooling/roi_pooling.cuh
 * MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
 *
 * Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 */
#pragma once
#include <cuda_runtime_api.h>

namespace megdnn {
namespace cuda {
namespace roi_pooling {

template <typename T, typename Pooler>
void forward_proxy(const int nthreads, const T* bottom_data,
        const float spatial_scale, const int channels, const int height,
        const int width, const int pooled_height, const int pooled_width,
        const T* bottom_rois, T* top_data, int* argmax_data,
        cudaStream_t stream);

template <typename T, typename BwdPooler>
void backward_proxy(const int nthreads, const T* top_diff,
        const int* argmax_data, const int num_rois, const float spatial_scale,
        const int channels, const int height, const int width,
        const int pooled_height, const int pooled_width, T* bottom_diff,
        const T* bottom_rois,
        cudaStream_t stream);

} // namespace roi_pooling
} // namespace cuda
} // namespace megdnn

// vim: syntax=cpp.doxygen

