已合并
修复uss存在的功能问题 #6273
wushuai创建于 6月18日
修复uss存在的功能问题 #6273
已合并
wushuai创建于 6月18日
3 个文件变更+2-9
@@ -69,7 +69,6 @@ void UnsortedSegmentSumDetermTiling::SetTilingData()
69 tilingData_.set_normalCoreProcessNum(normalCoreProcessNum_);69 tilingData_.set_normalCoreProcessNum(normalCoreProcessNum_);
70 tilingData_.set_tailCoreProcessNum(tailCoreProcessNum_);70 tilingData_.set_tailCoreProcessNum(tailCoreProcessNum_);
71 tilingData_.set_usedCoreNum(usedCoreNum_);71 tilingData_.set_usedCoreNum(usedCoreNum_);
72- tilingData_.set_dequantCoreNum(dequantCoreNum_);
73}72}
74 73 
75int64_t UnsortedSegmentSumDetermTiling::FindMaxRowsInUb()74int64_t UnsortedSegmentSumDetermTiling::FindMaxRowsInUb()
@@ -131,7 +130,6 @@ ge::graphStatus UnsortedSegmentSumDetermTiling::DoOpTiling()
131 usedCoreNum_ = Ops::Base::CeilDiv(inputOuterDim_, normalCoreProcessNum_);130 usedCoreNum_ = Ops::Base::CeilDiv(inputOuterDim_, normalCoreProcessNum_);
132 tailCoreProcessNum_ = inputOuterDim_ - (usedCoreNum_ - 1) * normalCoreProcessNum_;131 tailCoreProcessNum_ = inputOuterDim_ - (usedCoreNum_ - 1) * normalCoreProcessNum_;
133 }132 }
134- dequantCoreNum_ = static_cast<uint32_t>(totalCoreNum_);
135 uint64_t perCoreSortedIdBytes = (normalCoreProcessNum_ * idTypeBytes_ + 31) / 32 * 32;133 uint64_t perCoreSortedIdBytes = (normalCoreProcessNum_ * idTypeBytes_ + 31) / 32 * 32;
136 uint64_t perCoreSortedIndexBytes = (normalCoreProcessNum_ * sizeof(uint32_t) + 31) / 32 * 32;134 uint64_t perCoreSortedIndexBytes = (normalCoreProcessNum_ * sizeof(uint32_t) + 31) / 32 * 32;
137 usrWorkspaceSize_ = outputOuterDim_ * innerDim_ * sizeof(int32_t) * DOUBLE + outputOuterDim_ * sizeof(int64_t) +135 usrWorkspaceSize_ = outputOuterDim_ * innerDim_ * sizeof(int32_t) * DOUBLE + outputOuterDim_ * sizeof(int64_t) +
@@ -145,7 +143,7 @@ ge::graphStatus UnsortedSegmentSumDetermTiling::DoOpTiling()
145 143 
146ge::graphStatus UnsortedSegmentSumDetermTiling::PostTiling()144ge::graphStatus UnsortedSegmentSumDetermTiling::PostTiling()
147{145{
148- context_->SetBlockDim(dequantCoreNum_);146+ context_->SetBlockDim(static_cast<uint32_t>(totalCoreNum_));
149 context_->SetScheduleMode(1);147 context_->SetScheduleMode(1);
150 auto res = context_->SetLocalMemorySize(ubSize_);148 auto res = context_->SetLocalMemorySize(ubSize_);
151 OP_CHECK_IF(149 OP_CHECK_IF(
@@ -165,7 +163,6 @@ void UnsortedSegmentSumDetermTiling::DumpTilingInfo()
165 std::ostringstream info;163 std::ostringstream info;
166 info << "tilingKey: " << GetTilingKey();164 info << "tilingKey: " << GetTilingKey();
167 info << ", usedCoreNum: " << usedCoreNum_;165 info << ", usedCoreNum: " << usedCoreNum_;
168- info << ", dequantCoreNum: " << dequantCoreNum_;
169 info << ", inputOuterDim: " << tilingData_.get_inputOuterDim();166 info << ", inputOuterDim: " << tilingData_.get_inputOuterDim();
170 info << ", outputOuterDim: " << tilingData_.get_outputOuterDim();167 info << ", outputOuterDim: " << tilingData_.get_outputOuterDim();
atomgit-bot
atomgit-botatomgit-bot6月18日

🟡 Medium Priority

在清理 dequantCoreNum 相关代码时,diff 同时删除了 DumpTilingInfo() 中以下无关行:

outputOuterDim 字段仍然存在于 tiling data 定义中(TILING_DATA_FIELD_DEF(uint64_t, outputOuterDim);,见 unsorted_segment_sum_deterministic_tiling.h 第 25 行),并且在 SetTilingData() 中正常设置(第 65 行),在 kernel 的 Init() 中也正常使用(segmentNum_ = tilingData_.outputOuterDim;)。该字段与本次 dequantCoreNum 清理完全无关。

在同一模块的所有其他 tiling 类(simd_dyn_sort_tiling.cppdeterministic_small_innerdim_tiling.cppsimd_spilt_col_tiling.cppsort_simt_tiling.cppdeterministic_big_innerdim_tiling.cppoutput_fullload_tiling.cppsimt_tiling.cppsimd_non_sort_tiling.cpp)中,DumpTilingInfo() 均正常输出 outputOuterDim,仅本文件被误删。

失败模式:调试/问题定位时缺少关键 tiling 参数 outputOuterDim 的日志,降低可观测性,增加排障难度。

建议:在 info << ", inputOuterDim: " << ... 之后、info << ", innerDim: " << ... 之前,恢复 outputOuterDim 的日志输出行。

改动建议
167
+ info << ", inputOuterDim: " << tilingData_.get_inputOuterDim();
167
- info << ", outputOuterDim: " << tilingData_.get_outputOuterDim();
168
+ info << ", outputOuterDim: " << tilingData_.get_outputOuterDim();
169
+ info << ", innerDim: " << tilingData_.get_innerDim();
应用建议
likedislike
不准确?
171 info << ", innerDim: " << tilingData_.get_innerDim();168 info << ", innerDim: " << tilingData_.get_innerDim();
@@ -29,7 +29,6 @@ TILING_DATA_FIELD_DEF(uint32_t, rowsNumInUB);
29TILING_DATA_FIELD_DEF(uint32_t, normalCoreProcessNum);29TILING_DATA_FIELD_DEF(uint32_t, normalCoreProcessNum);
30TILING_DATA_FIELD_DEF(uint32_t, tailCoreProcessNum);30TILING_DATA_FIELD_DEF(uint32_t, tailCoreProcessNum);
31TILING_DATA_FIELD_DEF(uint32_t, usedCoreNum);31TILING_DATA_FIELD_DEF(uint32_t, usedCoreNum);
32-TILING_DATA_FIELD_DEF(uint32_t, dequantCoreNum);
33END_TILING_DATA_DEF;32END_TILING_DATA_DEF;
34 33 
35REGISTER_TILING_DATA_CLASS(UnsortedSegmentSum_3100, UnsortedSegmentSumDetermTilingData);34REGISTER_TILING_DATA_CLASS(UnsortedSegmentSum_3100, UnsortedSegmentSumDetermTilingData);
@@ -63,7 +62,6 @@ private:
63 uint32_t tailSampleNum_;62 uint32_t tailSampleNum_;
64 uint32_t loopIncore_;63 uint32_t loopIncore_;
65 uint32_t usedCoreNum_;64 uint32_t usedCoreNum_;
66- uint32_t dequantCoreNum_;
67 uint32_t row32BAlign_;65 uint32_t row32BAlign_;
68 uint64_t normalCoreProcessNum_;66 uint64_t normalCoreProcessNum_;
69 uint64_t tailCoreProcessNum_;67 uint64_t tailCoreProcessNum_;
@@ -98,7 +98,6 @@ private:
98 uint32_t normalCoreProcessNum_{0};98 uint32_t normalCoreProcessNum_{0};
99 uint32_t tailCoreProcessNum_{0};99 uint32_t tailCoreProcessNum_{0};
100 uint32_t usedCoreNum_{1};100 uint32_t usedCoreNum_{1};
101- uint32_t dequantCoreNum_{1};
102 uint64_t segmentNum_{1};101 uint64_t segmentNum_{1};
103 uint32_t tmpBufferSize_{0};102 uint32_t tmpBufferSize_{0};
104 uint64_t curCoreProcessNum_{0};103 uint64_t curCoreProcessNum_{0};
@@ -179,7 +178,6 @@ __aicore__ inline void KernelUSSDeterministic<T, U>::Init(GM_ADDR x, GM_ADDR seg
179 normalCoreProcessNum_ = tilingData_.normalCoreProcessNum;178 normalCoreProcessNum_ = tilingData_.normalCoreProcessNum;
180 tailCoreProcessNum_ = tilingData_.tailCoreProcessNum;179 tailCoreProcessNum_ = tilingData_.tailCoreProcessNum;
181 usedCoreNum_ = tilingData_.usedCoreNum;180 usedCoreNum_ = tilingData_.usedCoreNum;
182- dequantCoreNum_ = tilingData_.dequantCoreNum;
183 tmpBufferSize_ = tilingData_.tmpBufferSize;181 tmpBufferSize_ = tilingData_.tmpBufferSize;
184 rowsNumInUb_ = tilingData_.rowsNumInUB;182 rowsNumInUb_ = tilingData_.rowsNumInUB;
185 segmentNum_ = tilingData_.outputOuterDim; 183 segmentNum_ = tilingData_.outputOuterDim;
@@ -407,7 +405,7 @@ __aicore__ inline void KernelUSSDeterministic<T, U>::ThirdUbProcess()
407{405{
408 asc_vf_call<Dequantize<T,U>>(dim3(MAX_THREAD), (__gm__ float*)(workspaceMValue_.GetPhyAddr()), 406 asc_vf_call<Dequantize<T,U>>(dim3(MAX_THREAD), (__gm__ float*)(workspaceMValue_.GetPhyAddr()),
409 (__gm__ uint64_t*)(workspaceNValue_.GetPhyAddr()), (__gm__ int32_t*)(workspaceOutput_.GetPhyAddr()),407 (__gm__ uint64_t*)(workspaceNValue_.GetPhyAddr()), (__gm__ int32_t*)(workspaceOutput_.GetPhyAddr()),
410- (__gm__ T*)(yGm_.GetPhyAddr()), segmentNum_, innerDim_, blockId_, dequantCoreNum_);408+ (__gm__ T*)(yGm_.GetPhyAddr()), segmentNum_, innerDim_, blockId_, GetBlockNum());
411}409}
412 410 
413} // namespace UnsortedSegmentSum411} // namespace UnsortedSegmentSum