/** * \file dnn/src/x86/handle.cpp * 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. */ #include "src/common/handle_impl.h" #include "src/common/version_symbol.h" #include "src/x86/handle.h" #include "src/x86/add_update/opr_impl.h" #include "src/x86/conv_bias/opr_impl.h" #include "src/x86/cvt_color/opr_impl.h" #include "src/x86/elemwise/opr_impl.h" #include "src/x86/elemwise_multi_type/opr_impl.h" #include "src/x86/gaussian_blur/opr_impl.h" #include "src/x86/local/opr_impl.h" #include "src/x86/lrn/opr_impl.h" #include "src/x86/matrix_mul/opr_impl.h" #include "src/x86/pooling/opr_impl.h" #include "src/x86/resize/opr_impl.h" #include "src/x86/separable_conv/opr_impl.h" #include "src/x86/separable_filter/opr_impl.h" #include "src/x86/type_cvt/opr_impl.h" #include "src/x86/utils.h" #include "src/x86/warp_affine/opr_impl.h" #include "src/x86/warp_perspective/opr_impl.h" #if MEGDNN_X86_WITH_MKL #include #define STR_HELPER(x) #x #define STR(x) STR_HELPER(x) #define MKL_VERSION_STR \ STR(__INTEL_MKL__) \ "." STR(__INTEL_MKL_MINOR__) "." STR(__INTEL_MKL_UPDATE__) " (build date " STR( \ __INTEL_MKL_BUILD_DATE) ")" #pragma message "compile with Intel MKL " MKL_VERSION_STR "." #endif namespace megdnn { namespace x86 { template std::unique_ptr HandleImpl::create_operator() { return fallback::HandleImpl::create_operator(); } HandleImpl::HandleImpl(megcoreComputingHandle_t computing_handle, HandleType type) : fallback::HandleImpl::HandleImpl(computing_handle, type) { disable_denorm(); #if MEGDNN_X86_WITH_MKL vmlSetMode(VML_LA | VML_FTZDAZ_ON | VML_ERRMODE_ERRNO); #endif #if MEGDNN_X86_WITH_MKL_DNN m_mkldnn_engine = dnnl::engine(dnnl::engine::kind::cpu, 0); m_mkldnn_stream = dnnl::stream(m_mkldnn_engine); #endif } size_t HandleImpl::alignment_requirement() const { // AVX-512 requires 64byte alignment; we use this max value here return 64; } MEGDNN_SPECIALIZE_CREATE_OPERATOR(SeparableConv) MEGDNN_SPECIALIZE_CREATE_OPERATOR(SeparableFilter) MEGDNN_SPECIALIZE_CREATE_OPERATOR(Pooling) MEGDNN_SPECIALIZE_CREATE_OPERATOR(Local) MEGDNN_SPECIALIZE_CREATE_OPERATOR(LRN) MEGDNN_SPECIALIZE_CREATE_OPERATOR(MatrixMul) MEGDNN_SPECIALIZE_CREATE_OPERATOR(Elemwise) MEGDNN_SPECIALIZE_CREATE_OPERATOR(ElemwiseMultiType) MEGDNN_SPECIALIZE_CREATE_OPERATOR(CvtColor) MEGDNN_SPECIALIZE_CREATE_OPERATOR(WarpAffine) MEGDNN_SPECIALIZE_CREATE_OPERATOR(GaussianBlur) MEGDNN_SPECIALIZE_CREATE_OPERATOR(Resize) MEGDNN_SPECIALIZE_CREATE_OPERATOR(WarpPerspective) MEGDNN_SPECIALIZE_CREATE_OPERATOR(AddUpdate) MEGDNN_SPECIALIZE_CREATE_OPERATOR(TypeCvt) MEGDNN_SPECIALIZE_CREATE_OPERATOR(ConvBias) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wpragmas" #pragma GCC diagnostic ignored "-Winstantiation-after-specialization" MEGDNN_FOREACH_OPR_CLASS(MEGDNN_INST_CREATE_OPERATOR) #pragma GCC diagnostic pop } // namespace x86 } // namespace megdnn MEGDNN_VERSION_SYMBOL3(MKL, __INTEL_MKL__, __INTEL_MKL_MINOR__, __INTEL_MKL_UPDATE__); // vim: syntax=cpp.doxygen