You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

handle.cpp 3.5 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. /**
  2. * \file dnn/src/x86/handle.cpp
  3. * MegEngine is Licensed under the Apache License, Version 2.0 (the "License")
  4. *
  5. * Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
  6. *
  7. * Unless required by applicable law or agreed to in writing,
  8. * software distributed under the License is distributed on an
  9. * "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. */
  11. #include "src/common/handle_impl.h"
  12. #include "src/common/version_symbol.h"
  13. #include "src/x86/handle.h"
  14. #include "src/x86/add_update/opr_impl.h"
  15. #include "src/x86/conv_bias/opr_impl.h"
  16. #include "src/x86/cvt_color/opr_impl.h"
  17. #include "src/x86/elemwise/opr_impl.h"
  18. #include "src/x86/elemwise_multi_type/opr_impl.h"
  19. #include "src/x86/gaussian_blur/opr_impl.h"
  20. #include "src/x86/local/opr_impl.h"
  21. #include "src/x86/lrn/opr_impl.h"
  22. #include "src/x86/matrix_mul/opr_impl.h"
  23. #include "src/x86/pooling/opr_impl.h"
  24. #include "src/x86/resize/opr_impl.h"
  25. #include "src/x86/separable_conv/opr_impl.h"
  26. #include "src/x86/separable_filter/opr_impl.h"
  27. #include "src/x86/type_cvt/opr_impl.h"
  28. #include "src/x86/utils.h"
  29. #include "src/x86/warp_affine/opr_impl.h"
  30. #include "src/x86/warp_perspective/opr_impl.h"
  31. #if MEGDNN_X86_WITH_MKL
  32. #include <mkl.h>
  33. #define STR_HELPER(x) #x
  34. #define STR(x) STR_HELPER(x)
  35. #define MKL_VERSION_STR \
  36. STR(__INTEL_MKL__) \
  37. "." STR(__INTEL_MKL_MINOR__) "." STR(__INTEL_MKL_UPDATE__) " (build date " STR( \
  38. __INTEL_MKL_BUILD_DATE) ")"
  39. #pragma message "compile with Intel MKL " MKL_VERSION_STR "."
  40. #endif
  41. namespace megdnn {
  42. namespace x86 {
  43. template <typename Opr>
  44. std::unique_ptr<Opr> HandleImpl::create_operator() {
  45. return fallback::HandleImpl::create_operator<Opr>();
  46. }
  47. HandleImpl::HandleImpl(megcoreComputingHandle_t computing_handle, HandleType type)
  48. : fallback::HandleImpl::HandleImpl(computing_handle, type) {
  49. disable_denorm();
  50. #if MEGDNN_X86_WITH_MKL
  51. vmlSetMode(VML_LA | VML_FTZDAZ_ON | VML_ERRMODE_ERRNO);
  52. #endif
  53. #if MEGDNN_X86_WITH_MKL_DNN
  54. m_mkldnn_engine = dnnl::engine(dnnl::engine::kind::cpu, 0);
  55. m_mkldnn_stream = dnnl::stream(m_mkldnn_engine);
  56. #endif
  57. }
  58. size_t HandleImpl::alignment_requirement() const {
  59. // AVX-512 requires 64byte alignment; we use this max value here
  60. return 64;
  61. }
  62. MEGDNN_SPECIALIZE_CREATE_OPERATOR(SeparableConv)
  63. MEGDNN_SPECIALIZE_CREATE_OPERATOR(SeparableFilter)
  64. MEGDNN_SPECIALIZE_CREATE_OPERATOR(Pooling)
  65. MEGDNN_SPECIALIZE_CREATE_OPERATOR(Local)
  66. MEGDNN_SPECIALIZE_CREATE_OPERATOR(LRN)
  67. MEGDNN_SPECIALIZE_CREATE_OPERATOR(MatrixMul)
  68. MEGDNN_SPECIALIZE_CREATE_OPERATOR(Elemwise)
  69. MEGDNN_SPECIALIZE_CREATE_OPERATOR(ElemwiseMultiType)
  70. MEGDNN_SPECIALIZE_CREATE_OPERATOR(CvtColor)
  71. MEGDNN_SPECIALIZE_CREATE_OPERATOR(WarpAffine)
  72. MEGDNN_SPECIALIZE_CREATE_OPERATOR(GaussianBlur)
  73. MEGDNN_SPECIALIZE_CREATE_OPERATOR(Resize)
  74. MEGDNN_SPECIALIZE_CREATE_OPERATOR(WarpPerspective)
  75. MEGDNN_SPECIALIZE_CREATE_OPERATOR(AddUpdate)
  76. MEGDNN_SPECIALIZE_CREATE_OPERATOR(TypeCvt)
  77. MEGDNN_SPECIALIZE_CREATE_OPERATOR(ConvBias)
  78. #pragma GCC diagnostic push
  79. #pragma GCC diagnostic ignored "-Wpragmas"
  80. #pragma GCC diagnostic ignored "-Winstantiation-after-specialization"
  81. MEGDNN_FOREACH_OPR_CLASS(MEGDNN_INST_CREATE_OPERATOR)
  82. #pragma GCC diagnostic pop
  83. } // namespace x86
  84. } // namespace megdnn
  85. MEGDNN_VERSION_SYMBOL3(MKL, __INTEL_MKL__, __INTEL_MKL_MINOR__, __INTEL_MKL_UPDATE__);
  86. // vim: syntax=cpp.doxygen