已合并
fix int32 #5525
liuyun_nj创建于 6月1日
fix int32 #5525
已合并
共 7 个文件变更+8-8
| @@ -90,7 +90,7 @@ public: | |||
| 90 | { | 90 | { |
| 91 | LocalTensor<float> rstdLocal = outQueueRstd.AllocTensor<float>(); | 91 | LocalTensor<float> rstdLocal = outQueueRstd.AllocTensor<float>(); |
| 92 | for (uint32_t i_i = 0; i_i < calc_row_num; i_i++) { | 92 | for (uint32_t i_i = 0; i_i < calc_row_num; i_i++) { |
| 93 | - uint32_t gm_bias = (i_o * this->rowFactor + i_i) * this->numCol; | 93 | + uint64_t gm_bias = (static_cast<uint64_t>(i_o) * static_cast<uint64_t>(this->rowFactor) + static_cast<uint64_t>(i_i)) * static_cast<uint64_t>(this->numCol); |
| 94 | CopyIn(gm_bias); | 94 | CopyIn(gm_bias); |
| 95 | Compute(i_i, gammaLocal, rstdLocal); | 95 | Compute(i_i, gammaLocal, rstdLocal); |
| 96 | CopyOutY(gm_bias); | 96 | CopyOutY(gm_bias); |
| @@ -104,7 +104,7 @@ public: | |||
| 104 | 104 | ||
| 105 | __aicore__ inline void MainCompute(uint32_t i_o, uint32_t calc_row_num, LocalTensor<T>& gammaLocal) | 105 | __aicore__ inline void MainCompute(uint32_t i_o, uint32_t calc_row_num, LocalTensor<T>& gammaLocal) |
| 106 | { | 106 | { |
| 107 | - uint32_t gm_bias = i_o * rowFactor * numCol; | 107 | + uint64_t gm_bias = static_cast<uint64_t>(i_o) * static_cast<uint64_t>(rowFactor) * static_cast<uint64_t>(numCol); |
| 108 | uint32_t elementNum = calc_row_num * numColAlign; | 108 | uint32_t elementNum = calc_row_num * numColAlign; |
| 109 | CopyInX(gm_bias, calc_row_num); | 109 | CopyInX(gm_bias, calc_row_num); |
| 110 | LocalTensor<T> xLocal = ComputeX(elementNum); | 110 | LocalTensor<T> xLocal = ComputeX(elementNum); |
| @@ -95,7 +95,7 @@ public: | |||
| 95 | 95 | ||
| 96 | __aicore__ inline void SubProcessHalf(uint32_t i_o, uint32_t calc_row_num, LocalTensor<T>& gammaLocal) | 96 | __aicore__ inline void SubProcessHalf(uint32_t i_o, uint32_t calc_row_num, LocalTensor<T>& gammaLocal) |
| 97 | { | 97 | { |
| 98 | - uint32_t gm_bias = i_o * rowFactor * numCol; | 98 | + uint64_t gm_bias = static_cast<uint64_t>(i_o) * static_cast<uint64_t>(rowFactor) * static_cast<uint64_t>(numCol); |
| 99 | CopyInX(gm_bias, calc_row_num); | 99 | CopyInX(gm_bias, calc_row_num); |
| 100 | LocalTensor<T> xLocal = ComputeX(calc_row_num); | 100 | LocalTensor<T> xLocal = ComputeX(calc_row_num); |
| 101 | if constexpr (MODE == ADD_RMS_NORM_MODE || MODE == PRE_RMS_NORM_MODE) { | 101 | if constexpr (MODE == ADD_RMS_NORM_MODE || MODE == PRE_RMS_NORM_MODE) { |
| @@ -83,7 +83,7 @@ public: | |||
| 83 | __aicore__ inline void SubProcess(uint32_t i_o, uint32_t calc_row_num) | 83 | __aicore__ inline void SubProcess(uint32_t i_o, uint32_t calc_row_num) |
| 84 | { | 84 | { |
| 85 | for (uint32_t i_i = 0; i_i < calc_row_num; i_i++) { | 85 | for (uint32_t i_i = 0; i_i < calc_row_num; i_i++) { |
| 86 | - uint32_t gm_bias = (i_o * rowFactor + i_i) * numCol; | 86 | + uint32_t gm_bias = (static_cast<uint64_t>(i_o) * static_cast<uint64_t>(rowFactor) + static_cast<uint64_t>(i_i)) * static_cast<uint64_t>(numCol); |
| 87 | CopyIn(gm_bias); | 87 | CopyIn(gm_bias); |
| 88 | if constexpr (is_same<T, half>::value) { | 88 | if constexpr (is_same<T, half>::value) { |
| 89 | Computefp16(i_o, i_i, gm_bias); | 89 | Computefp16(i_o, i_i, gm_bias); |
| @@ -94,7 +94,7 @@ public: | |||
| 94 | 94 | ||
| 95 | __aicore__ inline void SubProcess(uint32_t i_o, uint32_t calc_row_num, LocalTensor<T>& gammaLocal) | 95 | __aicore__ inline void SubProcess(uint32_t i_o, uint32_t calc_row_num, LocalTensor<T>& gammaLocal) |
| 96 | { | 96 | { |
| 97 | - uint32_t gm_bias = i_o * rowFactor * numCol; | 97 | + uint64_t gm_bias = static_cast<uint64_t>(i_o) * static_cast<uint64_t>(rowFactor) * static_cast<uint64_t>(numCol); |
| 98 | CopyInX(gm_bias, calc_row_num); | 98 | CopyInX(gm_bias, calc_row_num); |
| 99 | LocalTensor<T> xLocal = ComputeX(calc_row_num); | 99 | LocalTensor<T> xLocal = ComputeX(calc_row_num); |
| 100 | CopyOutX(gm_bias, calc_row_num); | 100 | CopyOutX(gm_bias, calc_row_num); |
| @@ -63,7 +63,7 @@ public: | |||
| 63 | 63 | ||
| 64 | LocalTensor<T> gammaLocal = weightBuf01.template Get<T>(); | 64 | LocalTensor<T> gammaLocal = weightBuf01.template Get<T>(); |
| 65 | 65 | ||
| 66 | - int32_t gmOffset = 0; | 66 | + uint64_t gmOffset = 0; |
| 67 | int32_t gmOffsetScale = 0; | 67 | int32_t gmOffsetScale = 0; |
| 68 | int32_t elementCount = this->numLastDimAligned * this->rowStep; | 68 | int32_t elementCount = this->numLastDimAligned * this->rowStep; |
| 69 | 69 | ||
| @@ -97,8 +97,8 @@ public: | |||
| 97 | 97 | ||
| 98 | __aicore__ inline void DoMainCompute(uint32_t i_o, uint32_t calcRowNum, LocalTensor<float>& gammaLocal) | 98 | __aicore__ inline void DoMainCompute(uint32_t i_o, uint32_t calcRowNum, LocalTensor<float>& gammaLocal) |
| 99 | { | 99 | { |
| 100 | - uint32_t gmBias = i_o * rowFactor * numCol; | 100 | + uint64_t gmBias = static_cast<uint64_t>(i_o) * static_cast<uint64_t>(rowFactor) * static_cast<uint64_t>(numCol); |
| 101 | - uint32_t elementNum = calcRowNum * numColAlign; | 101 | + uint64_t elementNum = static_cast<uint64_t>(calcRowNum) * static_cast<uint64_t>(numColAlign); |
| 102 | CopyIn(gmBias, calcRowNum); | 102 | CopyIn(gmBias, calcRowNum); |
| 103 | if (isNorm == 1) { | 103 | if (isNorm == 1) { |
| 104 | ComputeSingleRow(i_o, calcRowNum, gammaLocal, gmBias); | 104 | ComputeSingleRow(i_o, calcRowNum, gammaLocal, gmBias); |