已合并
as_strided/dynamic_partition/mem_set/unpack modify codecheck #3280
csz创建于 6月11日
as_strided/dynamic_partition/mem_set/unpack modify codecheck #3280
已合并
共 6 个文件变更+47-36
| @@ -26,13 +26,8 @@ constexpr int64_t BLOCK_BYTES = 32; | |||
| 26 | 26 | ||
| 27 | struct AxisInf { | 27 | struct AxisInf { |
| 28 | AxisInf(int64_t dim_, int64_t stride_, int64_t idx_, gert::TilingContext* context) | 28 | AxisInf(int64_t dim_, int64_t stride_, int64_t idx_, gert::TilingContext* context) |
| 29 | + : context_(context), dim(dim_), stride(stride_), idx(idx_), code(1 << idx_), conter(0) | ||
| 29 | { | 30 | { |
| 30 | - context_ = context; | ||
| 31 | - this->dim = dim_; | ||
| 32 | - this->stride = stride_; | ||
| 33 | - this->idx = idx_; | ||
| 34 | - this->code = 1 << idx_; | ||
| 35 | - this->conter = 0; | ||
| 36 | } | 31 | } |
| 37 | 32 | ||
| 38 | void PrintDebug() | 33 | void PrintDebug() |
| @@ -310,10 +305,10 @@ void DualCutAxisSeeker::GenTilingData() | |||
| 310 | } | 305 | } |
| 311 | // update cut outer axis | 306 | // update cut outer axis |
| 312 | for (int i = 0; i < this->cutAxisNums; i++) { | 307 | for (int i = 0; i < this->cutAxisNums; i++) { |
| 313 | - uint32_t idx = this->gmAxis[this->outerAxisNums - 1 - i].idx; | 308 | + uint32_t idx = this->gmAxis[static_cast<size_t>(this->outerAxisNums - 1 - i)].idx; |
| 314 | for (auto tmpAxis : this->ubAxis) { | 309 | for (auto tmpAxis : this->ubAxis) { |
| 315 | if (tmpAxis.idx == idx) { | 310 | if (tmpAxis.idx == idx) { |
| 316 | - this->gmOutStride[this->outerAxisNums - 1 - i] *= tmpAxis.dim; | 311 | + this->gmOutStride[static_cast<size_t>(this->outerAxisNums - 1 - i)] *= tmpAxis.dim; |
| 317 | break; | 312 | break; |
| 318 | } | 313 | } |
| 319 | } | 314 | } |
| @@ -358,7 +353,7 @@ bool DualCutAxisSeeker::FindDualCutAxis(int ubSize, int bufferNum) | |||
| 358 | } | 353 | } |
| 359 | for (int findLoops = SHAPE_ARRAY_LEN; findLoops >= 0; findLoops--) { | 354 | for (int findLoops = SHAPE_ARRAY_LEN; findLoops >= 0; findLoops--) { |
| 360 | int64_t remainUB = this->ComputeRemainUB(ubNum, ubAxisSet); | 355 | int64_t remainUB = this->ComputeRemainUB(ubNum, ubAxisSet); |
| 361 | - ubBound = std::floor(std::sqrt(remainUB)); | 356 | + ubBound = static_cast<int>(std::floor(std::sqrt(remainUB))); |
| 362 | if (ubBound <= 0) { | 357 | if (ubBound <= 0) { |
| 363 | OP_LOGI(context_, "ubBound is invalid."); | 358 | OP_LOGI(context_, "ubBound is invalid."); |
| 364 | break; | 359 | break; |
| @@ -65,6 +65,7 @@ constexpr int64_t LAST_STRIDE_THRESHOLD = 64; | |||
| 65 | constexpr uint16_t MAX_UINT16 = 65535; | 65 | constexpr uint16_t MAX_UINT16 = 65535; |
| 66 | constexpr uint16_t GATHER_AXES_LIMIT = 3; | 66 | constexpr uint16_t GATHER_AXES_LIMIT = 3; |
| 67 | constexpr uint16_t GATHER_UB_SIZE_LOWER_LIMIT = 2048; | 67 | constexpr uint16_t GATHER_UB_SIZE_LOWER_LIMIT = 2048; |
| 68 | +constexpr size_t WORKSPACE_SIZE_8MB = 8 * 1024 * 1024; | ||
| 68 | 69 | ||
| 69 | std::map<ge::DataType, uint32_t> tilingTypeKeyMap = { | 70 | std::map<ge::DataType, uint32_t> tilingTypeKeyMap = { |
| 70 | {ge::DT_INT64, INPUT_DTYPE_B64}, {ge::DT_UINT64, INPUT_DTYPE_B64}, {ge::DT_COMPLEX64, INPUT_DTYPE_B64}, | 71 | {ge::DT_INT64, INPUT_DTYPE_B64}, {ge::DT_UINT64, INPUT_DTYPE_B64}, {ge::DT_COMPLEX64, INPUT_DTYPE_B64}, |
| @@ -481,13 +482,21 @@ inline static uint32_t CalcblockNum(const gert::TilingContext* context, uint64_t | |||
| 481 | inline static void SetAllStridesZeroTilingParam(const gert::TilingContext* context, gert::Shape outSize, | 482 | inline static void SetAllStridesZeroTilingParam(const gert::TilingContext* context, gert::Shape outSize, |
| 482 | AsStridedTilingParam& tilingParam) | 483 | AsStridedTilingParam& tilingParam) |
| 483 | { | 484 | { |
| 484 | - uint64_t totalOutElement = outSize.GetShapeSize(); | 485 | + int64_t shapeSize = outSize.GetShapeSize(); |
| 486 | + OP_CHECK_IF( | ||
| 487 | + (shapeSize <= 0), | ||
| 488 | + OP_LOGE_FOR_INVALID_SHAPESIZE_WITH_REASON(context->GetNodeName(), "size", | ||
| 489 | + std::to_string(shapeSize).c_str(), | ||
| 490 | + "The shape size of this parameter must be greater than 0."), | ||
| 491 | + return); | ||
| 492 | + uint64_t totalOutElement = static_cast<uint64_t>(shapeSize); | ||
| 485 | tilingParam.blockNum = CalcblockNum(context, totalOutElement, tilingParam); | 493 | tilingParam.blockNum = CalcblockNum(context, totalOutElement, tilingParam); |
| 486 | tilingParam.mainBlockFactor = static_cast<int64_t>(Ops::Base::CeilDiv(totalOutElement, | 494 | tilingParam.mainBlockFactor = static_cast<int64_t>(Ops::Base::CeilDiv(totalOutElement, |
| 487 | static_cast<uint64_t>(tilingParam.blockNum))); | 495 | static_cast<uint64_t>(tilingParam.blockNum))); |
| 488 | tilingParam.blockNum = static_cast<uint32_t>(Ops::Base::CeilDiv(totalOutElement, | 496 | tilingParam.blockNum = static_cast<uint32_t>(Ops::Base::CeilDiv(totalOutElement, |
| 489 | static_cast<uint64_t>(tilingParam.mainBlockFactor))); | 497 | static_cast<uint64_t>(tilingParam.mainBlockFactor))); |
| 490 | - tilingParam.tailBlockFactor = totalOutElement - (tilingParam.blockNum - 1) * tilingParam.mainBlockFactor; | 498 | + tilingParam.tailBlockFactor = static_cast<int64_t>(totalOutElement) - |
| 499 | + static_cast<int64_t>(tilingParam.blockNum - 1) * tilingParam.mainBlockFactor; | ||
| 491 | } | 500 | } |
| 492 | 501 | ||
| 493 | inline static void SetSimtTilingParam(const gert::TilingContext* context, gert::Shape outSize, gert::Shape outStride, | 502 | inline static void SetSimtTilingParam(const gert::TilingContext* context, gert::Shape outSize, gert::Shape outStride, |
| @@ -501,7 +510,8 @@ inline static void SetSimtTilingParam(const gert::TilingContext* context, gert:: | |||
| 501 | static_cast<uint64_t>(tilingParam.blockNum))); | 510 | static_cast<uint64_t>(tilingParam.blockNum))); |
| 502 | tilingParam.blockNum = static_cast<uint32_t>(Ops::Base::CeilDiv(totalOutElement, | 511 | tilingParam.blockNum = static_cast<uint32_t>(Ops::Base::CeilDiv(totalOutElement, |
| 503 | static_cast<uint64_t>(tilingParam.mainBlockFactor))); | 512 | static_cast<uint64_t>(tilingParam.mainBlockFactor))); |
| 504 | - tilingParam.tailBlockFactor = totalOutElement - (tilingParam.blockNum - 1) * tilingParam.mainBlockFactor; | 513 | + tilingParam.tailBlockFactor = static_cast<int64_t>(totalOutElement) - |
| 514 | + static_cast<int64_t>(tilingParam.blockNum - 1) * tilingParam.mainBlockFactor; | ||
| 505 | for (uint32_t i = 0; i < tilingParam.outDimNum; i++) { | 515 | for (uint32_t i = 0; i < tilingParam.outDimNum; i++) { |
| 506 | tilingParam.sizeArr[i] = outSize[i]; | 516 | tilingParam.sizeArr[i] = outSize[i]; |
| 507 | tilingParam.strideArr[i] = outStride[i]; | 517 | tilingParam.strideArr[i] = outStride[i]; |
| @@ -733,7 +743,14 @@ inline static void CalcTilingUb(const gert::TilingContext* context, gert::Shape | |||
| 733 | inline static void ComputeUbGatherParam(const gert::TilingContext* context, gert::Shape outSize, gert::Shape outStride, | 743 | inline static void ComputeUbGatherParam(const gert::TilingContext* context, gert::Shape outSize, gert::Shape outStride, |
| 734 | AsStridedTilingParam& tilingParam, AsStridedUbGatherParam& ubGatherParam) | 744 | AsStridedTilingParam& tilingParam, AsStridedUbGatherParam& ubGatherParam) |
| 735 | { | 745 | { |
| 736 | - uint64_t totalOutElement = outSize.GetShapeSize(); | 746 | + int64_t shapeSize = outSize.GetShapeSize(); |
| 747 | + OP_CHECK_IF( | ||
| 748 | + (shapeSize <= 0), | ||
| 749 | + OP_LOGE_FOR_INVALID_SHAPESIZE_WITH_REASON(context->GetNodeName(), "size", | ||
| 750 | + std::to_string(shapeSize).c_str(), | ||
| 751 | + "The shape size of this parameter must be greater than 0."), | ||
| 752 | + return); | ||
| 753 | + uint64_t totalOutElement = static_cast<uint64_t>(shapeSize); | ||
| 737 | ubGatherParam.blockNum = CalcblockNum(context, totalOutElement, tilingParam); | 754 | ubGatherParam.blockNum = CalcblockNum(context, totalOutElement, tilingParam); |
| 738 | ubGatherParam.blockNumMin = ubGatherParam.blockNum; | 755 | ubGatherParam.blockNumMin = ubGatherParam.blockNum; |
| 739 | ubGatherParam.outDimNum = outSize.GetDimNum(); | 756 | ubGatherParam.outDimNum = outSize.GetDimNum(); |
| @@ -1250,7 +1267,7 @@ ge::graphStatus AsStridedTilingClass::HandleEmptyTensor() | |||
| 1250 | context_->SetTilingKey(EMPTY_TENSOR_KEY); | 1267 | context_->SetTilingKey(EMPTY_TENSOR_KEY); |
| 1251 | emptyTilingData_ = context_->GetTilingData<AsStridedEmptyTilingData>(); | 1268 | emptyTilingData_ = context_->GetTilingData<AsStridedEmptyTilingData>(); |
| 1252 | size_t* currentWorkspace = context_->GetWorkspaceSizes(1); | 1269 | size_t* currentWorkspace = context_->GetWorkspaceSizes(1); |
| 1253 | - currentWorkspace[0] = 8 * 1024 * 1024; | 1270 | + currentWorkspace[0] = WORKSPACE_SIZE_8MB; |
| 1254 | OP_LOGD(context_, "Output is an empty tensor."); | 1271 | OP_LOGD(context_, "Output is an empty tensor."); |
| 1255 | return ge::GRAPH_SUCCESS; | 1272 | return ge::GRAPH_SUCCESS; |
| 1256 | } | 1273 | } |
| @@ -343,7 +343,7 @@ ge::graphStatus DynamicPartitionTiling::WriteTilingData() | |||
| 343 | 343 | ||
| 344 | ge::graphStatus DynamicPartitionTiling::DoTiling() | 344 | ge::graphStatus DynamicPartitionTiling::DoTiling() |
| 345 | { | 345 | { |
| 346 | - compileInfo_ = reinterpret_cast<const DynamicPartitionCompileInfo*>(context_->GetCompileInfo()); | 346 | + compileInfo_ = context_->GetCompileInfo<DynamicPartitionCompileInfo>(); |
| 347 | OP_CHECK_NULL_WITH_CONTEXT(context_, compileInfo_); | 347 | OP_CHECK_NULL_WITH_CONTEXT(context_, compileInfo_); |
| 348 | 348 | ||
| 349 | OP_CHECK_IF(GetInputShapeAndType() != ge::GRAPH_SUCCESS, | 349 | OP_CHECK_IF(GetInputShapeAndType() != ge::GRAPH_SUCCESS, |
| @@ -148,7 +148,7 @@ ge::graphStatus MemSetTilingClass::GetPlatformInfo() | |||
| 148 | { | 148 | { |
| 149 | auto platformInfo = context_->GetPlatformInfo(); | 149 | auto platformInfo = context_->GetPlatformInfo(); |
| 150 | if (isDynamic_ || platformInfo == nullptr) { | 150 | if (isDynamic_ || platformInfo == nullptr) { |
| 151 | - auto compileInfoPtr = reinterpret_cast<const MemSetCompileInfoArch35*>(context_->GetCompileInfo()); | 151 | + auto compileInfoPtr = context_->GetCompileInfo<MemSetCompileInfoArch35>(); |
| 152 | OP_CHECK_NULL_WITH_CONTEXT(context_, compileInfoPtr); | 152 | OP_CHECK_NULL_WITH_CONTEXT(context_, compileInfoPtr); |
| 153 | aicoreParams_.numBlocks = compileInfoPtr->coreNum; | 153 | aicoreParams_.numBlocks = compileInfoPtr->coreNum; |
| 154 | aicoreParams_.ubSize = compileInfoPtr->ubSize; | 154 | aicoreParams_.ubSize = compileInfoPtr->ubSize; |
| @@ -224,7 +224,7 @@ ge::graphStatus MemSetTilingClass::SetShapeAttrsInfo(bool isGE) | |||
| 224 | intValue_[i] = valueIntPtr->GetData()[i]; | 224 | intValue_[i] = valueIntPtr->GetData()[i]; |
| 225 | } | 225 | } |
| 226 | if (isDynamic_) { | 226 | if (isDynamic_) { |
| 227 | - auto memSetContext = reinterpret_cast<ops::AtomicCleanTilingContext*>(context_); | 227 | + auto memSetContext = static_cast<ops::AtomicCleanTilingContext*>(context_); |
| 228 | sizes_[i] = memSetContext->GetCleanOutputSize(i); | 228 | sizes_[i] = memSetContext->GetCleanOutputSize(i); |
| 229 | } else { | 229 | } else { |
| 230 | sizes_[i] = sizesPtr->GetData()[i]; | 230 | sizes_[i] = sizesPtr->GetData()[i]; |
| @@ -294,7 +294,7 @@ ge::graphStatus Tiling4MemSetArch35(gert::TilingContext* context) | |||
| 294 | { | 294 | { |
| 295 | OP_LOGI("MemSet tilingData", "Start tiling for MemSet."); | 295 | OP_LOGI("MemSet tilingData", "Start tiling for MemSet."); |
| 296 | const MemSetCompileInfoArch35* compileInfo = | 296 | const MemSetCompileInfoArch35* compileInfo = |
| 297 | - reinterpret_cast<const MemSetCompileInfoArch35*>(context->GetCompileInfo()); | 297 | + context->GetCompileInfo<MemSetCompileInfoArch35>(); |
| 298 | OP_CHECK_NULL_WITH_CONTEXT(context, compileInfo); | 298 | OP_CHECK_NULL_WITH_CONTEXT(context, compileInfo); |
| 299 | OP_LOGD(context->GetNodeName(), "runing regbase soc version tiling func"); | 299 | OP_LOGD(context->GetNodeName(), "runing regbase soc version tiling func"); |
| 300 | class MemSetTilingClass tiling(context); | 300 | class MemSetTilingClass tiling(context); |
| @@ -64,21 +64,21 @@ private: | |||
| 64 | template <uint16_t Count> | 64 | template <uint16_t Count> |
| 65 | void CheckTilingData(MemSetTilingData<Count>* tilingDataPostAtr); | 65 | void CheckTilingData(MemSetTilingData<Count>* tilingDataPostAtr); |
| 66 | 66 | ||
| 67 | -private: | 67 | +private: |
| 68 | - void* tilingDataPostAtr_; | 68 | + void* tilingDataPostAtr_ = nullptr; |
| 69 | - std::vector<int64_t> perCoreSizes_; | 69 | + std::vector<int64_t> perCoreSizes_; |
| 70 | - std::vector<int64_t> lastCoreSizes_; | 70 | + std::vector<int64_t> lastCoreSizes_; |
| 71 | - std::vector<int64_t> intValue_; | 71 | + std::vector<int64_t> intValue_; |
| 72 | - std::vector<float> floatValue_; | 72 | + std::vector<float> floatValue_; |
| 73 | - std::vector<int16_t> listType_; | 73 | + std::vector<int16_t> listType_; |
| 74 | - std::vector<int16_t> useCore_; | 74 | + std::vector<int16_t> useCore_; |
| 75 | - std::vector<int64_t> sizes_; | 75 | + std::vector<int64_t> sizes_; |
| 76 | - uint16_t cacheLineSize_; | 76 | + uint16_t cacheLineSize_ = 0; |
| 77 | - uint16_t needCore_; | 77 | + uint16_t needCore_ = 0; |
| 78 | - int halfUbSize_; | 78 | + int halfUbSize_ = 0; |
| 79 | - uint16_t inputCount_; | 79 | + uint16_t inputCount_ = 0; |
| 80 | - uint16_t TilingKey_; | 80 | + uint16_t TilingKey_ = 0; |
| 81 | - bool isDynamic_ = false; | 81 | + bool isDynamic_ = false; |
| 82 | }; | 82 | }; |
| 83 | 83 | ||
| 84 | } // namespace optiling | 84 | } // namespace optiling |
| @@ -36,6 +36,7 @@ | |||
| 36 | 36 | ||
| 37 | 37 | ||
| 38 | 38 | ||
| 39 | +constexpr double DEFAULT_TEST_VALUE = 2.0; | ||
| 39 | 40 | ||
| 40 | using namespace ge; | 41 | using namespace ge; |
| 41 | using std::map; | 42 | using std::map; |
| @@ -177,7 +178,7 @@ int CreateOppInGraph( | |||
| 177 | data_desc.SetFormat(ge::FORMAT_ND); | 178 | data_desc.SetFormat(ge::FORMAT_ND); |
| 178 | 179 | ||
| 179 | Tensor input_tensor; | 180 | Tensor input_tensor; |
| 180 | - ret = GenOnesData(input_shape, input_tensor, data_desc, inDtype, 2.0); | 181 | + ret = GenOnesData(input_shape, input_tensor, data_desc, inDtype, DEFAULT_TEST_VALUE); |
| 181 | if (ret != SUCCESS) { | 182 | if (ret != SUCCESS) { |
| 182 | printf("%s - ERROR - [XIR]: Generate input data failed\n", GetTime().c_str()); | 183 | printf("%s - ERROR - [XIR]: Generate input data failed\n", GetTime().c_str()); |
| 183 | return FAILED; | 184 | return FAILED; |
| @@ -210,8 +211,6 @@ bool InitEnv() | |||
| 210 | return true; | 211 | return true; |
| 211 | } | 212 | } |
| 212 | 213 | ||
| 213 | - | ||
| 214 | - | ||
| 215 | void ProcessInputData(std::vector<ge::Tensor>& input) | 214 | void ProcessInputData(std::vector<ge::Tensor>& input) |
| 216 | { | 215 | { |
| 217 | int input_num = input.size(); | 216 | int input_num = input.size(); |
要判断一下是否<0,是则打印错误日志退出,>=0 再转成 uint64_t