From 0d165399e62243abc4c89f4b1d940e988f3aee9a Mon Sep 17 00:00:00 2001 From: Megvii Engine Team Date: Thu, 1 Apr 2021 21:01:30 +0800 Subject: [PATCH] fix(mgb): fix fastrun for imperative GitOrigin-RevId: db54984b92623a406b15472111fccb0ea07575d3 --- dnn/include/megdnn/oprs/base.h | 9 ++++++--- dnn/src/cuda/conv_bias/algo.h | 2 +- dnn/src/cuda/convolution/backward_data/algo.h | 2 +- dnn/src/cuda/convolution/backward_filter/algo.h | 2 +- dnn/src/cuda/convolution3d/backward_data/algo.h | 2 +- dnn/src/cuda/convolution3d/backward_filter/algo.h | 2 +- dnn/src/cuda/convolution3d/forward/algo.h | 2 +- dnn/src/fallback/conv_bias/algos.h | 8 ++++---- dnn/src/fallback/conv_bias/common.h | 2 +- dnn/src/fallback/conv_bias/conv1x1/algos.h | 2 +- dnn/src/fallback/conv_bias/im2col/algos.h | 2 +- dnn/src/fallback/convolution/algos.h | 2 +- 12 files changed, 20 insertions(+), 17 deletions(-) diff --git a/dnn/include/megdnn/oprs/base.h b/dnn/include/megdnn/oprs/base.h index d111a0c2a..21e347947 100644 --- a/dnn/include/megdnn/oprs/base.h +++ b/dnn/include/megdnn/oprs/base.h @@ -172,7 +172,10 @@ public: template static void serialize_write_pod(const T& val, std::string& result) { - static_assert(std::is_standard_layout::value, "invalid type"); + static_assert(std::is_trivially_copyable::value, + "type should be trivially copyable"); + static_assert(!std::is_pointer::value, + "serialize pointer is unsafe in eager execution mode"); result.append(reinterpret_cast(&val), sizeof(T)); } @@ -182,7 +185,7 @@ public: template static T deserialize_read_pod(const std::string& data, size_t offset = 0) { - static_assert(std::is_standard_layout::value, "invalid type"); + static_assert(std::is_trivially_copyable::value, "invalid type"); T ret; //! A pointer to an object or incomplete type may be converted to a //! pointer to a different object or incomplete type. If the resulting @@ -197,7 +200,7 @@ public: template static T deserialize_read_pod(const char* data, size_t offset = 0) { - static_assert(std::is_standard_layout::value, "invalid type"); + static_assert(std::is_trivially_copyable::value, "invalid type"); T ret; //! A pointer to an object or incomplete type may be converted to a //! pointer to a different object or incomplete type. If the resulting diff --git a/dnn/src/cuda/conv_bias/algo.h b/dnn/src/cuda/conv_bias/algo.h index af9292173..600c540e1 100644 --- a/dnn/src/cuda/conv_bias/algo.h +++ b/dnn/src/cuda/conv_bias/algo.h @@ -439,7 +439,7 @@ public: std::string param() const override { std::string ret; - serialize_write_pod(m_impl, ret); + serialize_write_pod(m_impl->name(), ret); return ret; } diff --git a/dnn/src/cuda/convolution/backward_data/algo.h b/dnn/src/cuda/convolution/backward_data/algo.h index adf9e0a24..5e7741d8a 100644 --- a/dnn/src/cuda/convolution/backward_data/algo.h +++ b/dnn/src/cuda/convolution/backward_data/algo.h @@ -238,7 +238,7 @@ public: std::string param() const override { std::string ret; - serialize_write_pod(m_impl, ret); + serialize_write_pod(m_impl->name(), ret); return ret; } }; diff --git a/dnn/src/cuda/convolution/backward_filter/algo.h b/dnn/src/cuda/convolution/backward_filter/algo.h index 88c0255f2..24611d633 100644 --- a/dnn/src/cuda/convolution/backward_filter/algo.h +++ b/dnn/src/cuda/convolution/backward_filter/algo.h @@ -223,7 +223,7 @@ public: std::string param() const override { std::string ret; - serialize_write_pod(m_impl, ret); + serialize_write_pod(m_impl->name(), ret); return ret; } }; diff --git a/dnn/src/cuda/convolution3d/backward_data/algo.h b/dnn/src/cuda/convolution3d/backward_data/algo.h index 903c51b1a..4d743d26a 100644 --- a/dnn/src/cuda/convolution3d/backward_data/algo.h +++ b/dnn/src/cuda/convolution3d/backward_data/algo.h @@ -174,7 +174,7 @@ public: MEGDNN_DECL_ALGO_TYPE(CUDA_GROUP_CONV_GENERAL) std::string param() const override { std::string ret; - serialize_write_pod(m_impl, ret); + serialize_write_pod(m_impl->name(), ret); return ret; } }; diff --git a/dnn/src/cuda/convolution3d/backward_filter/algo.h b/dnn/src/cuda/convolution3d/backward_filter/algo.h index 844eb8150..0581a6c16 100644 --- a/dnn/src/cuda/convolution3d/backward_filter/algo.h +++ b/dnn/src/cuda/convolution3d/backward_filter/algo.h @@ -183,7 +183,7 @@ public: MEGDNN_DECL_ALGO_TYPE(CUDA_GROUP_CONV_GENERAL) std::string param() const override { std::string ret; - serialize_write_pod(m_impl, ret); + serialize_write_pod(m_impl->name(), ret); return ret; } }; diff --git a/dnn/src/cuda/convolution3d/forward/algo.h b/dnn/src/cuda/convolution3d/forward/algo.h index a27a5ad8f..cc9b3dcd8 100644 --- a/dnn/src/cuda/convolution3d/forward/algo.h +++ b/dnn/src/cuda/convolution3d/forward/algo.h @@ -135,7 +135,7 @@ public: MEGDNN_DECL_ALGO_TYPE(CUDA_GROUP_CONV_GENERAL) std::string param() const override { std::string ret; - serialize_write_pod(m_impl, ret); + serialize_write_pod(m_impl->name(), ret); return ret; } }; diff --git a/dnn/src/fallback/conv_bias/algos.h b/dnn/src/fallback/conv_bias/algos.h index 0d057e40f..eec52d0dd 100644 --- a/dnn/src/fallback/conv_bias/algos.h +++ b/dnn/src/fallback/conv_bias/algos.h @@ -67,7 +67,7 @@ public: MEGDNN_DECL_ALGO_TYPE(FB_WINOGRAD_F32) std::string param() const override { std::string ret; - serialize_write_pod(m_matmul_algo, ret); + serialize_write_pod(m_matmul_algo->name(), ret); return ret; } @@ -103,7 +103,7 @@ public: MEGDNN_DECL_ALGO_TYPE(FB_WINOGRAD_4X4_F32) std::string param() const override { std::string ret; - serialize_write_pod(m_matmul_algo, ret); + serialize_write_pod(m_matmul_algo->name(), ret); return ret; } @@ -139,7 +139,7 @@ public: MEGDNN_DECL_ALGO_TYPE(FB_WINOGRAD_QS8) std::string param() const override { std::string ret; - serialize_write_pod(m_matmul_algo, ret); + serialize_write_pod(m_matmul_algo->name(), ret); return ret; } @@ -175,7 +175,7 @@ public: MEGDNN_DECL_ALGO_TYPE(FB_WINOGRAD_8X8_QS8) std::string param() const override { std::string ret; - serialize_write_pod(m_matmul_algo, ret); + serialize_write_pod(m_matmul_algo->name(), ret); return ret; } diff --git a/dnn/src/fallback/conv_bias/common.h b/dnn/src/fallback/conv_bias/common.h index cba6509f9..d297492b4 100644 --- a/dnn/src/fallback/conv_bias/common.h +++ b/dnn/src/fallback/conv_bias/common.h @@ -157,7 +157,7 @@ using BiasMode = ConvBiasForward::BiasMode; } \ std::string param() const override { \ std::string ret; \ - serialize_write_pod(m_matmul_algo, ret); \ + serialize_write_pod(m_matmul_algo->name(), ret); \ serialize_write_pod(m_tile_size, ret); \ return ret; \ } \ diff --git a/dnn/src/fallback/conv_bias/conv1x1/algos.h b/dnn/src/fallback/conv_bias/conv1x1/algos.h index 18f98900f..e777fd957 100644 --- a/dnn/src/fallback/conv_bias/conv1x1/algos.h +++ b/dnn/src/fallback/conv_bias/conv1x1/algos.h @@ -65,7 +65,7 @@ public: MEGDNN_DECL_ALGO_TYPE(FB_WINOGRAD_8X8_QS8) std::string param() const override { std::string ret; - serialize_write_pod(m_matmul_algo, ret); + serialize_write_pod(m_matmul_algo->name(), ret); serialize_write_pod(m_oc_block_size, ret); return ret; } diff --git a/dnn/src/fallback/conv_bias/im2col/algos.h b/dnn/src/fallback/conv_bias/im2col/algos.h index be255df67..d87e4b526 100644 --- a/dnn/src/fallback/conv_bias/im2col/algos.h +++ b/dnn/src/fallback/conv_bias/im2col/algos.h @@ -74,7 +74,7 @@ public: std::string param() const override { std::string ret; - serialize_write_pod(m_matmul_algo, ret); + serialize_write_pod(m_matmul_algo->name(), ret); serialize_write_pod(m_ohw_tile_size, ret); return ret; } diff --git a/dnn/src/fallback/convolution/algos.h b/dnn/src/fallback/convolution/algos.h index fa8dde279..7da12fcbb 100644 --- a/dnn/src/fallback/convolution/algos.h +++ b/dnn/src/fallback/convolution/algos.h @@ -157,7 +157,7 @@ public: std::string param() const override { std::string ret; - serialize_write_pod(m_algorithm, ret); + serialize_write_pod(m_algorithm->name(), ret); return ret; } -- GitLab