/** * \file dnn/src/rocm/argsort/argsort.h.hip * 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 "hcc_detail/hcc_defs_prologue.h" #include "hip_header.h" #include #include #include "megdnn/dtype.h" namespace megdnn { namespace rocm { namespace argsort { size_t get_fwd_workspace_in_bytes(uint32_t M, uint32_t N, DType dtype, bool is_ascending, bool iptr_src_given = false); template size_t cub_sort_pairs( bool is_ascending, void* workspace, size_t workspace_size, const KeyType* keys_in, KeyType* keys_out, const ValueType* values_in, ValueType* values_out, uint32_t M, uint32_t N, int begin_bit, int end_bit,hipStream_t stream); /*! * \param iptr_src pointer to indices; a range would be generated if it is null */ template void forward(const dtype* sptr, dtype* dptr, int* iptr, void* workspace, uint32_t M, uint32_t N, bool is_ascending, hipStream_t stream, const int* iptr_src = NULL); //! iterate over all supported data types #define ARGSORT_FOREACH_CTYPE(cb) \ cb(float) cb(int32_t) // DNN_INC_FLOAT16(cb(dt_float16)) } // namespace argsort } // namespace rocm } // namespace megdnn // vim: ft=cpp syntax=cpp.doxygen