// Copyright © Advanced Micro Devices, Inc., or its affiliates. // SPDX-License-Identifier: MIT #pragma once #include #include #include #include namespace miopen_plugin { class MiopenConvDescriptor { public: MiopenConvDescriptor() = default; MiopenConvDescriptor( size_t spatialDimCount, const hipdnn_flatbuffers_sdk::data_objects::ConvolutionFwdAttributes& attributes, int groupCount, bool deterministicEnabled = false); MiopenConvDescriptor( size_t spatialDimCount, const hipdnn_flatbuffers_sdk::data_objects::ConvolutionBwdAttributes& attributes, int groupCount, bool deterministicEnabled = false); MiopenConvDescriptor( size_t spatialDimCount, const hipdnn_flatbuffers_sdk::data_objects::ConvolutionWrwAttributes& attributes, int groupCount, bool deterministicEnabled = false); MiopenConvDescriptor(const MiopenConvDescriptor&) = delete; MiopenConvDescriptor& operator=(const MiopenConvDescriptor&) = delete; MiopenConvDescriptor(MiopenConvDescriptor&& other) noexcept; MiopenConvDescriptor& operator=(MiopenConvDescriptor&& other) noexcept; ~MiopenConvDescriptor(); miopenConvolutionDescriptor_t convDescriptor() const; private: miopenConvolutionDescriptor_t _descriptor = nullptr; void createDescriptorInternal(size_t spatialDimCount, const flatbuffers::Vector* attrPrePadding, const flatbuffers::Vector* attrPostPadding, const flatbuffers::Vector* attrStride, const flatbuffers::Vector* attrDilation, hipdnn_flatbuffers_sdk::data_objects::ConvMode convMode, int groupCount, bool deterministicEnabled); }; }