From 3925716297387188dd5c71e3ba11f68de3864c28 Mon Sep 17 00:00:00 2001 From: zk <694972388@qq.com> Date: Mon, 8 Mar 2021 11:27:18 +0800 Subject: [PATCH] Transdata --- .../format_transfer_fractal_z.cc | 18 +++++++++++++++++- .../format_transfer_fractal_z.h | 1 + ge/host_kernels/transdata_kernel.cc | 14 ++++++++++++-- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/ge/common/formats/format_transfers/format_transfer_fractal_z.cc b/ge/common/formats/format_transfers/format_transfer_fractal_z.cc index 348a84c4..dcb2cf70 100644 --- a/ge/common/formats/format_transfers/format_transfer_fractal_z.cc +++ b/ge/common/formats/format_transfers/format_transfer_fractal_z.cc @@ -317,7 +317,7 @@ Status TransFormatHwcnToFzWithGroups(const TransArgs &args, TransResult &result) h * w_dim * c_dim * n_dim + w * c_dim * n_dim + c * n_dim + src_co; char *dst_data = reinterpret_cast(dst.get() + dst_inx * data_size); - const char *src_data = reinterpret_cast(args.data + src_idx * data_size); + const char *src_data = reinterpret_cast(args.data + srx_inx * data_size); for (int64_t index = 0; index < data_size; index++) { *dst_data++ = *src_data++; } @@ -481,6 +481,22 @@ Status TransFormatNhwcToFz(const TransArgs &args, TransResult &result) { } } // namespace +Status FormatTransferFractalZ::TransFormat(const TransArgs &args, TransResult &result, + int64_t groups) { + GELOGD("Begin to trans format from %s to %s, src shape %s, data type %s, dst shape %s", + TypeUtils::FormatToSerialString(args.src_format).c_str(), + TypeUtils::FormatToSerialString(args.dst_format).c_str(), ShapeToString(args.src_shape).c_str(), + TypeUtils::DataTypeToSerialString(args.src_data_type).c_str(), ShapeToString(args.dst_shape).c_str()); + std::vector expect_shape; + auto ret = TransShape(args.src_format, args.src_shape, args.src_data_type, args.dst_format, expect_shape); + if (ret != SUCCESS) { + return ret; + } + if (!IsTransShapeDstCorrect(args, expect_shape)) { + return PARAM_INVALID; + } + return TransFormatHwcnToFzWithGroups(args, result); +} Status FormatTransferFractalZ::TransFormat(const TransArgs &args, TransResult &result) { GELOGD("Begin to trans format from %s to %s, src shape %s, data type %s, dst shape %s", TypeUtils::FormatToSerialString(args.src_format).c_str(), diff --git a/ge/common/formats/format_transfers/format_transfer_fractal_z.h b/ge/common/formats/format_transfers/format_transfer_fractal_z.h index d640eb60..3d286135 100755 --- a/ge/common/formats/format_transfers/format_transfer_fractal_z.h +++ b/ge/common/formats/format_transfers/format_transfer_fractal_z.h @@ -26,6 +26,7 @@ namespace formats { class FormatTransferFractalZ : public FormatTransfer { public: Status TransFormat(const TransArgs &args, TransResult &result) override; + Status TransFormat(const TransArgs &args, TransResult &result, int64_t groups) override; Status TransShape(Format src_format, const std::vector &src_shape, DataType data_type, Format dst_format, std::vector &dst_shape) override; }; diff --git a/ge/host_kernels/transdata_kernel.cc b/ge/host_kernels/transdata_kernel.cc index 2b16b075..8d9785cf 100644 --- a/ge/host_kernels/transdata_kernel.cc +++ b/ge/host_kernels/transdata_kernel.cc @@ -82,16 +82,17 @@ Status TransdataKernel::Compute(const OpDescPtr op_desc_ptr, const std::vectorGetShape().GetDims(); const auto &data_format = op_desc->GetFormat(); const auto &data_type = op_desc->GetDataType(); + const in64_t groups = op_desc_ptr->GetAttr("groups", groups) GELOGD( "current node %s, format %s, input shape %s, data type %s, weight format %s, shape %s, data type %s. " - "output format %s, shape %s, data type %s", + "output format %s, shape %s, data type %s, groups %d", op_desc_ptr->GetName().c_str(), TypeUtils::FormatToSerialString(src_format).c_str(), formats::ShapeToString(src_shape).c_str(), TypeUtils::DataTypeToSerialString(src_data_type).c_str(), TypeUtils::FormatToSerialString(const_weight_ptr->GetTensorDesc().GetFormat()).c_str(), formats::ShapeToString(const_weight_ptr->GetTensorDesc().GetShape()).c_str(), TypeUtils::DataTypeToSerialString(const_weight_ptr->GetTensorDesc().GetDataType()).c_str(), TypeUtils::FormatToSerialString(data_format).c_str(), formats::ShapeToString(data_shape).c_str(), - TypeUtils::DataTypeToSerialString(data_type).c_str()); + TypeUtils::DataTypeToSerialString(data_type).c_str(), groups); const uint8_t *src_data = const_weight_ptr->GetData().data(); const formats::TransArgs trans_args{src_data, src_format, data_format, src_shape, data_shape, src_data_type}; @@ -113,6 +114,15 @@ Status TransdataKernel::Compute(const OpDescPtr op_desc_ptr, const std::vector