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.1 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include "src/common/handle_impl.h"
  2. #include "src/common/version_symbol.h"
  3. #include "src/x86/handle.h"
  4. #include "src/x86/add_update/opr_impl.h"
  5. #include "src/x86/conv_bias/opr_impl.h"
  6. #include "src/x86/cvt_color/opr_impl.h"
  7. #include "src/x86/elemwise/opr_impl.h"
  8. #include "src/x86/elemwise_multi_type/opr_impl.h"
  9. #include "src/x86/gaussian_blur/opr_impl.h"
  10. #include "src/x86/local/opr_impl.h"
  11. #include "src/x86/lrn/opr_impl.h"
  12. #include "src/x86/matrix_mul/opr_impl.h"
  13. #include "src/x86/pooling/opr_impl.h"
  14. #include "src/x86/resize/opr_impl.h"
  15. #include "src/x86/separable_conv/opr_impl.h"
  16. #include "src/x86/separable_filter/opr_impl.h"
  17. #include "src/x86/type_cvt/opr_impl.h"
  18. #include "src/x86/utils.h"
  19. #include "src/x86/warp_affine/opr_impl.h"
  20. #include "src/x86/warp_perspective/opr_impl.h"
  21. #if MEGDNN_X86_WITH_MKL
  22. #include <mkl.h>
  23. #define STR_HELPER(x) #x
  24. #define STR(x) STR_HELPER(x)
  25. #define MKL_VERSION_STR \
  26. STR(__INTEL_MKL__) \
  27. "." STR(__INTEL_MKL_MINOR__) "." STR(__INTEL_MKL_UPDATE__) " (build date " STR( \
  28. __INTEL_MKL_BUILD_DATE) ")"
  29. #pragma message "compile with Intel MKL " MKL_VERSION_STR "."
  30. #endif
  31. namespace megdnn {
  32. namespace x86 {
  33. template <typename Opr>
  34. std::unique_ptr<Opr> HandleImpl::create_operator() {
  35. return fallback::HandleImpl::create_operator<Opr>();
  36. }
  37. HandleImpl::HandleImpl(megcoreComputingHandle_t computing_handle, HandleType type)
  38. : fallback::HandleImpl::HandleImpl(computing_handle, type) {
  39. disable_denorm();
  40. #if MEGDNN_X86_WITH_MKL
  41. vmlSetMode(VML_LA | VML_FTZDAZ_ON | VML_ERRMODE_ERRNO);
  42. #endif
  43. #if MEGDNN_X86_WITH_MKL_DNN
  44. m_mkldnn_engine = dnnl::engine(dnnl::engine::kind::cpu, 0);
  45. m_mkldnn_stream = dnnl::stream(m_mkldnn_engine);
  46. #endif
  47. }
  48. size_t HandleImpl::alignment_requirement() const {
  49. // AVX-512 requires 64byte alignment; we use this max value here
  50. return 64;
  51. }
  52. MEGDNN_SPECIALIZE_CREATE_OPERATOR(SeparableConv)
  53. MEGDNN_SPECIALIZE_CREATE_OPERATOR(SeparableFilter)
  54. MEGDNN_SPECIALIZE_CREATE_OPERATOR(Pooling)
  55. MEGDNN_SPECIALIZE_CREATE_OPERATOR(Local)
  56. MEGDNN_SPECIALIZE_CREATE_OPERATOR(LRN)
  57. MEGDNN_SPECIALIZE_CREATE_OPERATOR(MatrixMul)
  58. MEGDNN_SPECIALIZE_CREATE_OPERATOR(Elemwise)
  59. MEGDNN_SPECIALIZE_CREATE_OPERATOR(ElemwiseMultiType)
  60. MEGDNN_SPECIALIZE_CREATE_OPERATOR(CvtColor)
  61. MEGDNN_SPECIALIZE_CREATE_OPERATOR(WarpAffine)
  62. MEGDNN_SPECIALIZE_CREATE_OPERATOR(GaussianBlur)
  63. MEGDNN_SPECIALIZE_CREATE_OPERATOR(Resize)
  64. MEGDNN_SPECIALIZE_CREATE_OPERATOR(WarpPerspective)
  65. MEGDNN_SPECIALIZE_CREATE_OPERATOR(AddUpdate)
  66. MEGDNN_SPECIALIZE_CREATE_OPERATOR(TypeCvt)
  67. MEGDNN_SPECIALIZE_CREATE_OPERATOR(ConvBias)
  68. #pragma GCC diagnostic push
  69. #pragma GCC diagnostic ignored "-Wpragmas"
  70. #pragma GCC diagnostic ignored "-Winstantiation-after-specialization"
  71. MEGDNN_FOREACH_OPR_CLASS(MEGDNN_INST_CREATE_OPERATOR)
  72. #pragma GCC diagnostic pop
  73. } // namespace x86
  74. } // namespace megdnn
  75. MEGDNN_VERSION_SYMBOL3(MKL, __INTEL_MKL__, __INTEL_MKL_MINOR__, __INTEL_MKL_UPDATE__);
  76. // vim: syntax=cpp.doxygen