已合并
fix(examples): 修复aclnn示例代码及接口文档问题 #10300
luoyufan7创建于 11 天前
fix(examples): 修复aclnn示例代码及接口文档问题 #10300
已合并
luoyufan7创建于 11 天前
18 个文件变更+112-101
@@ -331,13 +331,13 @@ int main()
331 aclTensor* gradOutput = nullptr;331 aclTensor* gradOutput = nullptr;
332 aclTensor* gradInput = nullptr;332 aclTensor* gradInput = nullptr;
333 std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7};333 std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7};
334- std::vector<int> gradOutputHostData = {1, 1, 1, 1, 1, 1, 1, 1};334+ std::vector<float> gradOutputHostData = {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f};
335- std::vector<int> gradInputHostData = {0, 0, 0, 0, 0, 0, 0, 0};335+ std::vector<float> gradInputHostData = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
336 336 
337 ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self);337 ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self);
338 CHECK_RET(ret == ACL_SUCCESS, return ret);338 CHECK_RET(ret == ACL_SUCCESS, return ret);
339 ret = CreateAclTensor(339 ret = CreateAclTensor(
340- gradOutputHostData, gradOutputShape, &gradOutputDeviceAddr, aclDataType::ACL_INT32, &gradOutput);340+ gradOutputHostData, gradOutputShape, &gradOutputDeviceAddr, aclDataType::ACL_FLOAT, &gradOutput);
341 CHECK_RET(ret == ACL_SUCCESS, return ret);341 CHECK_RET(ret == ACL_SUCCESS, return ret);
342 ret = CreateAclTensor(gradInputHostData, gradInputShape, &gradInputDeviceAddr, aclDataType::ACL_FLOAT, &gradInput);342 ret = CreateAclTensor(gradInputHostData, gradInputShape, &gradInputDeviceAddr, aclDataType::ACL_FLOAT, &gradInput);
343 CHECK_RET(ret == ACL_SUCCESS, return ret);343 CHECK_RET(ret == ACL_SUCCESS, return ret);
@@ -90,12 +90,12 @@ int main()
90 aclTensor* gradOutput = nullptr;90 aclTensor* gradOutput = nullptr;
91 aclTensor* gradInput = nullptr;91 aclTensor* gradInput = nullptr;
92 std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7};92 std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7};
93- std::vector<int> gradOutputHostData = {1, 1, 1, 1, 1, 1, 1, 1};93+ std::vector<float> gradOutputHostData = {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f};
94- std::vector<int> gradInputHostData = {0, 0, 0, 0, 0, 0, 0, 0};94+ std::vector<float> gradInputHostData = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
95 95 
96 ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self);96 ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self);
97 CHECK_RET(ret == ACL_SUCCESS, return ret);97 CHECK_RET(ret == ACL_SUCCESS, return ret);
98- ret = CreateAclTensor(gradOutputHostData, gradOutputShape, &gradOutputDeviceAddr, aclDataType::ACL_INT32,98+ ret = CreateAclTensor(gradOutputHostData, gradOutputShape, &gradOutputDeviceAddr, aclDataType::ACL_FLOAT,
99 &gradOutput);99 &gradOutput);
100 CHECK_RET(ret == ACL_SUCCESS, return ret);100 CHECK_RET(ret == ACL_SUCCESS, return ret);
101 ret = CreateAclTensor(gradInputHostData, gradInputShape, &gradInputDeviceAddr, aclDataType::ACL_FLOAT, &gradInput);101 ret = CreateAclTensor(gradInputHostData, gradInputShape, &gradInputDeviceAddr, aclDataType::ACL_FLOAT, &gradInput);
@@ -145,4 +145,4 @@ int main()
145 aclrtResetDevice(deviceId);145 aclrtResetDevice(deviceId);
146 aclFinalize();146 aclFinalize();
147 return 0;147 return 0;
148-}148+}
@@ -342,8 +342,8 @@ int main() {
342 aclTensor* gradOutput = nullptr;342 aclTensor* gradOutput = nullptr;
343 aclTensor* gradInput = nullptr;343 aclTensor* gradInput = nullptr;
344 std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7};344 std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7};
345- std::vector<int> gradOutputHostData = {1, 1, 1, 1, 1, 1, 1, 1};345+ std::vector<float> gradOutputHostData = {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f};
346- std::vector<int> gradInputHostData = {0, 0, 0, 0, 0, 0, 0, 0};346+ std::vector<float> gradInputHostData = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
347 347 
348 char *approximate = "tanh";348 char *approximate = "tanh";
349 ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self);349 ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self);
@@ -90,8 +90,8 @@ int main()
90 aclTensor* gradOutput = nullptr;90 aclTensor* gradOutput = nullptr;
91 aclTensor* gradInput = nullptr;91 aclTensor* gradInput = nullptr;
92 std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7};92 std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7};
93- std::vector<int> gradOutputHostData = {1, 1, 1, 1, 1, 1, 1, 1};93+ std::vector<float> gradOutputHostData = {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f};
94- std::vector<int> gradInputHostData = {0, 0, 0, 0, 0, 0, 0, 0};94+ std::vector<float> gradInputHostData = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
95 95 
96 char* approximate = "tanh";96 char* approximate = "tanh";
97 ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self);97 ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self);
@@ -147,4 +147,4 @@ int main()
147 aclrtResetDevice(deviceId);147 aclrtResetDevice(deviceId);
148 aclFinalize();148 aclFinalize();
149 return 0;149 return 0;
150-}150+}
Mactivation/gelu_mul/docs/aclnnGeluMul.md+1-1文件内容审核中,请稍后刷新重试
@@ -39,9 +39,9 @@ void PrintOutResult(std::vector<int64_t>& shape, void** deviceAddr)
39 std::vector<float> resultData(size, 0);39 std::vector<float> resultData(size, 0);
40 auto ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), *deviceAddr,40 auto ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), *deviceAddr,
41 size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);41 size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);
42- CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return );42+ CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return);
43 for (int64_t i = 0; i < size; i++) {43 for (int64_t i = 0; i < size; i++) {
44- LOG_PRINT("mean result[%ld] is: %f\n", i, resultData[i]);44+ LOG_PRINT("aclnnGeluMul result[%ld] is: %f\n", i, resultData[i]);
45 }45 }
46}46}
47 47 
@@ -153,4 +153,4 @@ int main()
153 aclFinalize();153 aclFinalize();
154 154 
155 return 0;155 return 0;
156-}156+}
@@ -269,7 +269,7 @@ void PrintOutResult(std::vector<int64_t> &shape, void** deviceAddr) {
269 *deviceAddr, size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);269 *deviceAddr, size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);
270 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return);270 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return);
271 for (int64_t i = 0; i < size; i++) {271 for (int64_t i = 0; i < size; i++) {
272- LOG_PRINT("mean result[%ld] is: %f\n", i, resultData[i]);272+ LOG_PRINT("result[%ld] is: %f\n", i, resultData[i]);
273 }273 }
274}274}
275 275 
@@ -41,7 +41,7 @@ void PrintOutResult(std::vector<int64_t>& shape, void** deviceAddr)
41 size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);41 size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);
42 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return);42 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return);
43 for (int64_t i = 0; i < size; i++) {43 for (int64_t i = 0; i < size; i++) {
44- LOG_PRINT("mean result[%ld] is: %f\n", i, resultData[i]);44+ LOG_PRINT("result[%ld] is: %f\n", i, resultData[i]);
45 }45 }
46}46}
47 47 
@@ -365,7 +365,7 @@ int main()
365 void* workspaceAddr = nullptr;365 void* workspaceAddr = nullptr;
366 if (workspaceSize > 0) {366 if (workspaceSize > 0) {
367 ret = aclrtMalloc(&workspaceAddr, workspaceSize, ACL_MEM_MALLOC_HUGE_FIRST);367 ret = aclrtMalloc(&workspaceAddr, workspaceSize, ACL_MEM_MALLOC_HUGE_FIRST);
368- CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("allocate workspace failed. ERROR: %d\n", ret); return ret;);368+ CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("allocate workspace failed. ERROR: %d\n", ret); return ret);
369 }369 }
370 // 调用aclnnSoftplusBackward第二段接口370 // 调用aclnnSoftplusBackward第二段接口
371 ret = aclnnSoftplusBackward(workspaceAddr, workspaceSize, executor, stream);371 ret = aclnnSoftplusBackward(workspaceAddr, workspaceSize, executor, stream);
@@ -123,7 +123,7 @@ int main()
123 void* workspaceAddr = nullptr;123 void* workspaceAddr = nullptr;
124 if (workspaceSize > 0) {124 if (workspaceSize > 0) {
125 ret = aclrtMalloc(&workspaceAddr, workspaceSize, ACL_MEM_MALLOC_HUGE_FIRST);125 ret = aclrtMalloc(&workspaceAddr, workspaceSize, ACL_MEM_MALLOC_HUGE_FIRST);
126- CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("allocate workspace failed. ERROR: %d\n", ret); return ret;);126+ CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("allocate workspace failed. ERROR: %d\n", ret); return ret);
127 }127 }
128 // 调用aclnnSoftplusBackward第二段接口128 // 调用aclnnSoftplusBackward第二段接口
129 ret = aclnnSoftplusBackward(workspaceAddr, workspaceSize, executor, stream);129 ret = aclnnSoftplusBackward(workspaceAddr, workspaceSize, executor, stream);
@@ -157,4 +157,4 @@ int main()
157 aclrtResetDevice(deviceId);157 aclrtResetDevice(deviceId);
158 aclFinalize();158 aclFinalize();
159 return 0;159 return 0;
160-}160+}
@@ -333,7 +333,7 @@ int main() {
333 void* workspaceAddr = nullptr;333 void* workspaceAddr = nullptr;
334 if (workspaceSize > 0) {334 if (workspaceSize > 0) {
335 ret = aclrtMalloc(&workspaceAddr, workspaceSize, ACL_MEM_MALLOC_HUGE_FIRST);335 ret = aclrtMalloc(&workspaceAddr, workspaceSize, ACL_MEM_MALLOC_HUGE_FIRST);
336- CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("allocate workspace failed. ERROR: %d\n", ret); return ret;);336+ CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("allocate workspace failed. ERROR: %d\n", ret); return ret);
337 }337 }
338 // 调用aclnnSoftplusBackward第二段接口338 // 调用aclnnSoftplusBackward第二段接口
339 ret = aclnnSoftplusBackward(workspaceAddr, workspaceSize, executor, stream);339 ret = aclnnSoftplusBackward(workspaceAddr, workspaceSize, executor, stream);
@@ -124,7 +124,7 @@ int main()
124 void* workspaceAddr = nullptr;124 void* workspaceAddr = nullptr;
125 if (workspaceSize > 0) {125 if (workspaceSize > 0) {
126 ret = aclrtMalloc(&workspaceAddr, workspaceSize, ACL_MEM_MALLOC_HUGE_FIRST);126 ret = aclrtMalloc(&workspaceAddr, workspaceSize, ACL_MEM_MALLOC_HUGE_FIRST);
127- CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("allocate workspace failed. ERROR: %d\n", ret); return ret;);127+ CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("allocate workspace failed. ERROR: %d\n", ret); return ret);
128 }128 }
129 // 调用aclnnSoftplusBackward第二段接口129 // 调用aclnnSoftplusBackward第二段接口
130 ret = aclnnSoftplusBackward(workspaceAddr, workspaceSize, executor, stream);130 ret = aclnnSoftplusBackward(workspaceAddr, workspaceSize, executor, stream);
@@ -158,4 +158,4 @@ int main()
158 aclrtResetDevice(deviceId);158 aclrtResetDevice(deviceId);
159 aclFinalize();159 aclFinalize();
160 return 0;160 return 0;
161-}161+}
@@ -161,7 +161,7 @@ aclnnStatus aclnnAdvanceStep(
161 <tr>161 <tr>
162 <td>blockTables(aclTensor*)</td>162 <td>blockTables(aclTensor*)</td>
163 <td>输入</td>163 <td>输入</td>
164- <td>待进行AdvanceStep计算的入参,用于记录不同blockIdx下block的大小,公式中的输入blockTables。</td>164+ <td>待进行AdvanceStep计算的入参,用于记录不同blockIdx下block的物理块编号,公式中的输入blockTables。</td>
165 <td><ul><li>不支持空Tensor。</li><li>shape第一维长度与numSeqs一致,第二维大于(seqLens中的最大值)/blockSize。</li><li>取值范围是大于0的正整数。</li></ul></td>165 <td><ul><li>不支持空Tensor。</li><li>shape第一维长度与numSeqs一致,第二维大于(seqLens中的最大值)/blockSize。</li><li>取值范围是大于0的正整数。</li></ul></td>
166 <td>INT64</td>166 <td>INT64</td>
167 <td>ND</td>167 <td>ND</td>
@@ -347,7 +347,7 @@ void PrintOutResult(std::vector<int64_t> &shape, void** deviceAddr) {
347 *deviceAddr, size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);347 *deviceAddr, size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);
348 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return);348 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return);
349 for (int64_t i = 0; i < size; i++) {349 for (int64_t i = 0; i < size; i++) {
350- LOG_PRINT("mean result[%ld] is: %ld\n", i, resultData[i]);350+ LOG_PRINT("advanceStep result[%ld] is: %ld\n", i, resultData[i]);
351 }351 }
352}352}
353 353 
@@ -394,7 +394,7 @@ int main() {
394 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("Init acl failed. ERROR: %d\n", ret); return ret);394 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("Init acl failed. ERROR: %d\n", ret); return ret);
395 395 
396 // 2. 构造输入与输出,需要根据API的接口自定义构造396 // 2. 构造输入与输出,需要根据API的接口自定义构造
397- std::vector<int64_t> inputShape = {8,1};397+ std::vector<int64_t> inputShape = {8};
398 std::vector<int64_t> input2Shape = {4,1};398 std::vector<int64_t> input2Shape = {4,1};
399 std::vector<int64_t> inputHostData = {0, 1, 2, 3, 4, 5, 6, 7};399 std::vector<int64_t> inputHostData = {0, 1, 2, 3, 4, 5, 6, 7};
400 std::vector<int64_t> input2HostData = {0, 1, 2, 3};400 std::vector<int64_t> input2HostData = {0, 1, 2, 3};
@@ -114,10 +114,10 @@ aclnnStatus aclnnAdvanceStepV2(
114 <td>inputTokens(aclTensor*)</td>114 <td>inputTokens(aclTensor*)</td>
115 <td>输入/输出</td>115 <td>输入/输出</td>
116 <td>待进行AdvanceStepV2计算的入参/出参,公式中的输出inputTokens,用于更新vLLM模型中的token值。</td>116 <td>待进行AdvanceStepV2计算的入参/出参,公式中的输出inputTokens,用于更新vLLM模型中的token值。</td>
117- <td><ul><li>不支持空Tensor。</li><li>shape第一维长度与numSeqs一致,第二维长度为1+specNum。</li><li>取值范围是大于0的正整数。</li></ul></td>117+ <td><ul><li>不支持空Tensor。</li><li>shape为[numSeqs * (1+specNum)]。</li><li>取值范围是大于0的正整数。</li></ul></td>
118 <td>INT64</td>118 <td>INT64</td>
119 <td>ND</td>119 <td>ND</td>
120- <td>2</td>120+ <td>1</td>
121 <td>×</td>121 <td>×</td>
122 </tr>122 </tr>
123 <tr>123 <tr>
@@ -134,7 +134,7 @@ aclnnStatus aclnnAdvanceStepV2(
134 <td>inputPositions(aclTensor*)</td>134 <td>inputPositions(aclTensor*)</td>
135 <td>输入/输出</td>135 <td>输入/输出</td>
136 <td>待进行AdvanceStepV2计算的入参/出参,公式中的输出inputPositions,用于记录token的index。</td>136 <td>待进行AdvanceStepV2计算的入参/出参,公式中的输出inputPositions,用于记录token的index。</td>
137- <td><ul><li>不支持空Tensor。</li><li>shape长度与numSeqs一致。</li><li>取值范围是大于0的正整数。</li></ul></td>137+ <td><ul><li>不支持空Tensor。</li><li>shape为[numSeqs * (1+specNum)]。</li><li>取值范围是大于0的正整数。</li></ul></td>
138 <td>INT64</td>138 <td>INT64</td>
139 <td>ND</td>139 <td>ND</td>
140 <td>1</td>140 <td>1</td>
@@ -144,7 +144,7 @@ aclnnStatus aclnnAdvanceStepV2(
144 <td>seqLens(aclTensor*)</td>144 <td>seqLens(aclTensor*)</td>
145 <td>输入/输出</td>145 <td>输入/输出</td>
146 <td>待进行AdvanceStepV2计算的入参/出参,用于记录不同blockIdx下seq的长度,公式中的输入/输出seqLens。</td>146 <td>待进行AdvanceStepV2计算的入参/出参,用于记录不同blockIdx下seq的长度,公式中的输入/输出seqLens。</td>
147- <td><ul><li>不支持空Tensor。</li><li>shape长度与numSeqs一致。</li><li>取值范围是大于0的正整数。</li></ul></td>147+ <td><ul><li>不支持空Tensor。</li><li>shape为[numSeqs * (1+specNum)]。</li><li>取值范围是大于0的正整数。</li></ul></td>
148 <td>INT64</td>148 <td>INT64</td>
149 <td>ND</td>149 <td>ND</td>
150 <td>1</td>150 <td>1</td>
@@ -154,7 +154,7 @@ aclnnStatus aclnnAdvanceStepV2(
154 <td>slotMapping(aclTensor*)</td>154 <td>slotMapping(aclTensor*)</td>
155 <td>输入/输出</td>155 <td>输入/输出</td>
156 <td>待进行AdvanceStepV2计算的入参/出参,公式中的输出slotMapping,用于将token值在序列中的位置映射到物理位置。</td>156 <td>待进行AdvanceStepV2计算的入参/出参,公式中的输出slotMapping,用于将token值在序列中的位置映射到物理位置。</td>
157- <td><ul><li>不支持空Tensor。</li><li>shape长度与numSeqs一致。</li><li>取值范围是大于0的正整数。</li></ul></td>157+ <td><ul><li>不支持空Tensor。</li><li>shape为[numSeqs * (1+specNum)]。</li><li>取值范围是大于0的正整数。</li></ul></td>
158 <td>INT64</td>158 <td>INT64</td>
159 <td>ND</td>159 <td>ND</td>
160 <td>1</td>160 <td>1</td>
@@ -163,8 +163,8 @@ aclnnStatus aclnnAdvanceStepV2(
163 <tr>163 <tr>
164 <td>blockTables(aclTensor*)</td>164 <td>blockTables(aclTensor*)</td>
165 <td>输入</td>165 <td>输入</td>
166- <td>待进行AdvanceStepV2计算的入参,用于记录不同blockIdx下block的大小,公式中的输入blockTables。</td>166+ <td>待进行AdvanceStepV2计算的入参,用于记录不同blockIdx下block的物理块编号,公式中的输入blockTables。</td>
167- <td><ul><li>不支持空Tensor。</li><li>shape长度与numSeqs一致,第二维大于(seqLens中的最大值)/blockSize。</li><li>取值范围是大于0的正整数。</li></ul></td>167+ <td><ul><li>不支持空Tensor。</li><li>shape第一维长度与numSeqs一致,第二维大于(seqLens中的最大值)/blockSize。</li><li>取值范围是大于0的正整数。</li></ul></td>
168 <td>INT64</td>168 <td>INT64</td>
169 <td>ND</td>169 <td>ND</td>
170 <td>2</td>170 <td>2</td>
@@ -274,13 +274,13 @@ aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/co
274 <tr>274 <tr>
275 <td rowspan="5">aclnnAdvanceStepV2GetWorkspaceSize failed</td>275 <td rowspan="5">aclnnAdvanceStepV2GetWorkspaceSize failed</td>
276 <td rowspan="5">561002</td>276 <td rowspan="5">561002</td>
277- <td>输入inputTokens、inputPositions、seqLens、slotMappingblockTables、specToken、acceptedNum的shape的第一维长度与numSeqs不一致。</td>277+ <td>输入inputTokens、inputPositions、seqLens、slotMapping的shape不是[numSeqs * (1+specNum)],或者blockTables、specToken、acceptedNum的shape的第一维长度与numSeqs不一致。</td>
278 </tr>278 </tr>
279 <tr>279 <tr>
280- <td>输入sampledTokenIds的shape的第一维长度与numQueries不一致,或者shape的第二维长度不为1。</td>280+ <td>输入sampledTokenIds的shape的第一维长度与numSeqs不一致,或者shape的第二维长度不为1+specNum。</td>
281 </tr>281 </tr>
282 <tr>282 <tr>
283- <td>输入inputTokens的shape的第二维长度不为1+specNum。</td>283+ <td>输入acceptedNum的shape的长度与numSeqs一致。</td>
284 </tr>284 </tr>
285 <tr>285 <tr>
286 <td>输入specToken的shape的第二维长度不为specNum。</td>286 <td>输入specToken的shape的第二维长度不为specNum。</td>
@@ -347,7 +347,7 @@ aclnnStatus:返回状态码,具体参见[aclnn返回码](../../../docs/zh/co
347#include <iostream>347#include <iostream>
348#include <vector>348#include <vector>
349#include "acl/acl.h"349#include "acl/acl.h"
350-#include "aclnnop/aclnn_advance_step_v2.h"//不确定头文件名字350+#include "aclnnop/aclnn_advance_step_v2.h"
351#define CHECK_RET(cond, return_expr) \351#define CHECK_RET(cond, return_expr) \
352 do { \352 do { \
353 if (!(cond)) { \353 if (!(cond)) { \
@@ -375,7 +375,7 @@ void PrintOutResult(std::vector<int64_t> &shape, void** deviceAddr) {
375 *deviceAddr, size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);375 *deviceAddr, size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);
376 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return);376 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return);
377 for (int64_t i = 0; i < size; i++) {377 for (int64_t i = 0; i < size; i++) {
378- LOG_PRINT("mean result[%ld] is: %ld\n", i, resultData[i]);378+ LOG_PRINT("advanceStepV2 result[%ld] is: %ld\n", i, resultData[i]);
379 }379 }
380}380}
381 381 
@@ -422,16 +422,22 @@ int main() {
422 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("Init acl failed. ERROR: %d\n", ret); return ret);422 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("Init acl failed. ERROR: %d\n", ret); return ret);
423 423 
424 // 2. 构造输入与输出,需要根据API的接口自定义构造424 // 2. 构造输入与输出,需要根据API的接口自定义构造
425- std::vector<int64_t> input1Shape = {16};425+ std::vector<int64_t> input1Shape = {72};
426- std::vector<int64_t> input2Shape = {8,2};426+ std::vector<int64_t> input2Shape = {8,9};
427- std::vector<int64_t> input3Shape = {8,1000};427+ std::vector<int64_t> input3Shape = {72};
428- std::vector<int64_t> input4Shape = {8,1};428+ std::vector<int64_t> input4Shape = {72};
429- std::vector<int64_t> input5Shape = {8};429+ std::vector<int64_t> input5Shape = {72};
430- std::vector<int64_t> input1HostData = {0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7};430+ std::vector<int64_t> input6Shape = {8,1000};
431- std::vector<int64_t> input2HostData = {0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7};431+ std::vector<int64_t> input7Shape = {8,8};
432- std::vector<int64_t> input3HostData(8000, 7);432+ std::vector<int64_t> input8Shape = {8};
433- std::vector<int64_t> input4HostData = {0, 1, 2, 3, 4, 5, 6, 7};433+ std::vector<int64_t> input1HostData(8*9, 1);
434- std::vector<int64_t> input5HostData = {0, 1, 2, 3, 4, 5, 6, 7};434+ std::vector<int64_t> input2HostData(8*9, 1);
435+ std::vector<int64_t> input3HostData(8*9, 1);
436+ std::vector<int64_t> input4HostData(8*9, 8);
437+ std::vector<int64_t> input5HostData(8*9, 1);
438+ std::vector<int64_t> input6HostData(8*1000, 1);
439+ std::vector<int64_t> input7HostData(8*8, 1);
440+ std::vector<int64_t> input8HostData(8, 1);
435 441 
436 void* input1DeviceAddr = nullptr;442 void* input1DeviceAddr = nullptr;
437 aclTensor* input1 = nullptr;443 aclTensor* input1 = nullptr;
@@ -454,17 +460,17 @@ int main() {
454 CHECK_RET(ret == ACL_SUCCESS, return ret);460 CHECK_RET(ret == ACL_SUCCESS, return ret);
455 ret = CreateAclTensor(input2HostData, input2Shape, &input2DeviceAddr, aclDataType::ACL_INT64, &input2);461 ret = CreateAclTensor(input2HostData, input2Shape, &input2DeviceAddr, aclDataType::ACL_INT64, &input2);
456 CHECK_RET(ret == ACL_SUCCESS, return ret);462 CHECK_RET(ret == ACL_SUCCESS, return ret);
457- ret = CreateAclTensor(input1HostData, input1Shape, &input3DeviceAddr, aclDataType::ACL_INT64, &input3);463+ ret = CreateAclTensor(input3HostData, input3Shape, &input3DeviceAddr, aclDataType::ACL_INT64, &input3);
458 CHECK_RET(ret == ACL_SUCCESS, return ret);464 CHECK_RET(ret == ACL_SUCCESS, return ret);
459- ret = CreateAclTensor(input1HostData, input1Shape, &input4DeviceAddr, aclDataType::ACL_INT64, &input4);465+ ret = CreateAclTensor(input4HostData, input4Shape, &input4DeviceAddr, aclDataType::ACL_INT64, &input4);
460 CHECK_RET(ret == ACL_SUCCESS, return ret);466 CHECK_RET(ret == ACL_SUCCESS, return ret);
461- ret = CreateAclTensor(input1HostData, input1Shape, &input5DeviceAddr, aclDataType::ACL_INT64, &input5);467+ ret = CreateAclTensor(input5HostData, input5Shape, &input5DeviceAddr, aclDataType::ACL_INT64, &input5);
462 CHECK_RET(ret == ACL_SUCCESS, return ret);468 CHECK_RET(ret == ACL_SUCCESS, return ret);
463- ret = CreateAclTensor(input3HostData, input3Shape, &input6DeviceAddr, aclDataType::ACL_INT64, &input6);469+ ret = CreateAclTensor(input6HostData, input6Shape, &input6DeviceAddr, aclDataType::ACL_INT64, &input6);
464 CHECK_RET(ret == ACL_SUCCESS, return ret);470 CHECK_RET(ret == ACL_SUCCESS, return ret);
465- ret = CreateAclTensor(input4HostData, input4Shape, &input5DeviceAddr, aclDataType::ACL_INT64, &input7);471+ ret = CreateAclTensor(input7HostData, input7Shape, &input7DeviceAddr, aclDataType::ACL_INT64, &input7);
466 CHECK_RET(ret == ACL_SUCCESS, return ret);472 CHECK_RET(ret == ACL_SUCCESS, return ret);
467- ret = CreateAclTensor(input5HostData, input5Shape, &input6DeviceAddr, aclDataType::ACL_INT64, &input8);473+ ret = CreateAclTensor(input8HostData, input8Shape, &input8DeviceAddr, aclDataType::ACL_INT64, &input8);
468 CHECK_RET(ret == ACL_SUCCESS, return ret);474 CHECK_RET(ret == ACL_SUCCESS, return ret);
469 475 
470 int64_t numseq = 8;476 int64_t numseq = 8;
@@ -39,9 +39,9 @@ void PrintOutResult(std::vector<int64_t>& shape, void** deviceAddr)
39 std::vector<int64_t> resultData(size, 0);39 std::vector<int64_t> resultData(size, 0);
40 auto ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), *deviceAddr,40 auto ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), *deviceAddr,
41 size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);41 size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);
42- CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return );42+ CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return);
43 for (int64_t i = 0; i < size; i++) {43 for (int64_t i = 0; i < size; i++) {
44- LOG_PRINT("mean result[%ld] is: %ld\n", i, resultData[i]);44+ LOG_PRINT("advanceStep result[%ld] is: %ld\n", i, resultData[i]);
45 }45 }
46}46}
47 47 
@@ -91,7 +91,7 @@ int main()
91 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("Init acl failed. ERROR: %d\n", ret); return ret);91 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("Init acl failed. ERROR: %d\n", ret); return ret);
92 92 
93 // 2. 构造输入与输出,需要根据API的接口自定义构造93 // 2. 构造输入与输出,需要根据API的接口自定义构造
94- std::vector<int64_t> inputShape = {8, 1};94+ std::vector<int64_t> inputShape = {8};
95 std::vector<int64_t> input2Shape = {4, 1};95 std::vector<int64_t> input2Shape = {4, 1};
96 std::vector<int64_t> inputHostData = {0, 1, 2, 3, 4, 5, 6, 7};96 std::vector<int64_t> inputHostData = {0, 1, 2, 3, 4, 5, 6, 7};
97 std::vector<int64_t> input2HostData = {0, 1, 2, 3};97 std::vector<int64_t> input2HostData = {0, 1, 2, 3};
@@ -180,4 +180,4 @@ int main()
180 aclFinalize();180 aclFinalize();
181 181 
182 return 0;182 return 0;
183-}183+}
@@ -1,18 +1,17 @@
1/**1/**
2- * This program is free software, you can redistribute it and/or modify.
3 * Copyright (c) 2025 Huawei Technologies Co., Ltd.2 * Copyright (c) 2025 Huawei Technologies Co., Ltd.
4- * This file is a part of the CANN Open Software.3+ * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
5- * Licensed under CANN Open Software License Agreement Version 2.0 (the "License").4+ * CANN Open Software License Agreement Version 2.0 (the "License").
6 * Please refer to the License for details. You may not use this file except in compliance with the License.5 * Please refer to the License for details. You may not use this file except in compliance with the License.
7- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING6+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
8- * BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. See LICENSE in the root of7+ * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
9- * the software repository for the full text of the License.8+ * See LICENSE in the root of the software repository for the full text of the License.
10 */9 */
11 10 
12#include <iostream>11#include <iostream>
13#include <vector>12#include <vector>
14#include "acl/acl.h"13#include "acl/acl.h"
15-#include "aclnnop/aclnn_advance_step_v2.h" //不确定头文件名字14+#include "aclnnop/aclnn_advance_step_v2.h"
16#define CHECK_RET(cond, return_expr) \15#define CHECK_RET(cond, return_expr) \
17 do { \16 do { \
18 if (!(cond)) { \17 if (!(cond)) { \
@@ -40,9 +39,9 @@ void PrintOutResult(std::vector<int64_t>& shape, void** deviceAddr)
40 std::vector<int64_t> resultData(size, 0);39 std::vector<int64_t> resultData(size, 0);
41 auto ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), *deviceAddr,40 auto ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), *deviceAddr,
42 size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);41 size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);
43- CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return );42+ CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return);
44 for (int64_t i = 0; i < size; i++) {43 for (int64_t i = 0; i < size; i++) {
45- LOG_PRINT("mean result[%ld] is: %ld\n", i, resultData[i]);44+ LOG_PRINT("advanceStepV2 result[%ld] is: %ld\n", i, resultData[i]);
46 }45 }
47}46}
48 47 
@@ -92,16 +91,22 @@ int main()
92 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("Init acl failed. ERROR: %d\n", ret); return ret);91 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("Init acl failed. ERROR: %d\n", ret); return ret);
93 92 
94 // 2. 构造输入与输出,需要根据API的接口自定义构造93 // 2. 构造输入与输出,需要根据API的接口自定义构造
95- std::vector<int64_t> input1Shape = {16};94+ std::vector<int64_t> input1Shape = {72};
96- std::vector<int64_t> input2Shape = {8, 2};95+ std::vector<int64_t> input2Shape = {8, 9};
97- std::vector<int64_t> input3Shape = {8, 1000};96+ std::vector<int64_t> input3Shape = {72};
98- std::vector<int64_t> input4Shape = {8, 1};97+ std::vector<int64_t> input4Shape = {72};
99- std::vector<int64_t> input5Shape = {8};98+ std::vector<int64_t> input5Shape = {72};
100- std::vector<int64_t> input1HostData = {0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7};99+ std::vector<int64_t> input6Shape = {8, 1000};
101- std::vector<int64_t> input2HostData = {0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7};100+ std::vector<int64_t> input7Shape = {8, 8};
102- std::vector<int64_t> input3HostData(8000, 7);101+ std::vector<int64_t> input8Shape = {8};
103- std::vector<int64_t> input4HostData = {0, 1, 2, 3, 4, 5, 6, 7};102+ std::vector<int64_t> input1HostData(8 * 9, 1);
104- std::vector<int64_t> input5HostData = {0, 1, 2, 3, 4, 5, 6, 7};103+ std::vector<int64_t> input2HostData(8 * 9, 1);
104+ std::vector<int64_t> input3HostData(8 * 9, 1);
105+ std::vector<int64_t> input4HostData(8 * 9, 8);
106+ std::vector<int64_t> input5HostData(8 * 9, 1);
107+ std::vector<int64_t> input6HostData(8 * 1000, 1);
108+ std::vector<int64_t> input7HostData(8 * 8, 1);
109+ std::vector<int64_t> input8HostData(8, 1);
105 110 
106 void* input1DeviceAddr = nullptr;111 void* input1DeviceAddr = nullptr;
107 aclTensor* input1 = nullptr;112 aclTensor* input1 = nullptr;
@@ -124,17 +129,17 @@ int main()
124 CHECK_RET(ret == ACL_SUCCESS, return ret);129 CHECK_RET(ret == ACL_SUCCESS, return ret);
125 ret = CreateAclTensor(input2HostData, input2Shape, &input2DeviceAddr, aclDataType::ACL_INT64, &input2);130 ret = CreateAclTensor(input2HostData, input2Shape, &input2DeviceAddr, aclDataType::ACL_INT64, &input2);
126 CHECK_RET(ret == ACL_SUCCESS, return ret);131 CHECK_RET(ret == ACL_SUCCESS, return ret);
127- ret = CreateAclTensor(input1HostData, input1Shape, &input3DeviceAddr, aclDataType::ACL_INT64, &input3);132+ ret = CreateAclTensor(input3HostData, input3Shape, &input3DeviceAddr, aclDataType::ACL_INT64, &input3);
128 CHECK_RET(ret == ACL_SUCCESS, return ret);133 CHECK_RET(ret == ACL_SUCCESS, return ret);
129- ret = CreateAclTensor(input1HostData, input1Shape, &input4DeviceAddr, aclDataType::ACL_INT64, &input4);134+ ret = CreateAclTensor(input4HostData, input4Shape, &input4DeviceAddr, aclDataType::ACL_INT64, &input4);
130 CHECK_RET(ret == ACL_SUCCESS, return ret);135 CHECK_RET(ret == ACL_SUCCESS, return ret);
131- ret = CreateAclTensor(input1HostData, input1Shape, &input5DeviceAddr, aclDataType::ACL_INT64, &input5);136+ ret = CreateAclTensor(input5HostData, input5Shape, &input5DeviceAddr, aclDataType::ACL_INT64, &input5);
132 CHECK_RET(ret == ACL_SUCCESS, return ret);137 CHECK_RET(ret == ACL_SUCCESS, return ret);
133- ret = CreateAclTensor(input3HostData, input3Shape, &input6DeviceAddr, aclDataType::ACL_INT64, &input6);138+ ret = CreateAclTensor(input6HostData, input6Shape, &input6DeviceAddr, aclDataType::ACL_INT64, &input6);
134 CHECK_RET(ret == ACL_SUCCESS, return ret);139 CHECK_RET(ret == ACL_SUCCESS, return ret);
135- ret = CreateAclTensor(input4HostData, input4Shape, &input5DeviceAddr, aclDataType::ACL_INT64, &input7);140+ ret = CreateAclTensor(input7HostData, input7Shape, &input7DeviceAddr, aclDataType::ACL_INT64, &input7);
136 CHECK_RET(ret == ACL_SUCCESS, return ret);141 CHECK_RET(ret == ACL_SUCCESS, return ret);
137- ret = CreateAclTensor(input5HostData, input5Shape, &input6DeviceAddr, aclDataType::ACL_INT64, &input8);142+ ret = CreateAclTensor(input8HostData, input8Shape, &input8DeviceAddr, aclDataType::ACL_INT64, &input8);
138 CHECK_RET(ret == ACL_SUCCESS, return ret);143 CHECK_RET(ret == ACL_SUCCESS, return ret);
139 144 
140 int64_t numseq = 8;145 int64_t numseq = 8;
@@ -200,4 +205,4 @@ int main()
200 aclFinalize();205 aclFinalize();
201 206 
202 return 0;207 return 0;
203-}208+}
@@ -294,12 +294,12 @@ int64_t GetShapeSize(const std::vector<int64_t>& shape) {
294 294 
295void PrintOutResult(std::vector<int64_t> &shape, void** deviceAddr) {295void PrintOutResult(std::vector<int64_t> &shape, void** deviceAddr) {
296 auto size = GetShapeSize(shape);296 auto size = GetShapeSize(shape);
297- std::vector<int8_t> resultData(size, 0);297+ std::vector<int16_t> resultData(size, 0);
298 auto ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]),298 auto ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]),
299 *deviceAddr, size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);299 *deviceAddr, size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);
300 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return);300 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return);
301 for (int64_t i = 0; i < size; i++) {301 for (int64_t i = 0; i < size; i++) {
302- LOG_PRINT("mean result[%ld] is: %d\n", i, resultData[i]);302+ LOG_PRINT("result[%ld] is: %d\n", i, resultData[i]);
303 }303 }
304}304}
305 305 
@@ -351,10 +351,10 @@ int main() {
351 std::vector<int64_t> activationShape = {40};351 std::vector<int64_t> activationShape = {40};
352 std::vector<int64_t> biasShape = {256};352 std::vector<int64_t> biasShape = {256};
353 353 
354- std::vector<int16_t> inputHostData(40*256, 1);354+ std::vector<int32_t> inputHostData(40*256, 1);
355- std::vector<int32_t> weightHostData(256, 2);355+ std::vector<float> weightHostData(256, 2.0f);
356- std::vector<int32_t> activationHostData(40, 2);356+ std::vector<float> activationHostData(40, 2.0f);
357- std::vector<int32_t> biasHostData(256, 2);357+ std::vector<float> biasHostData(256, 2.0f);
358 358 
359 void* inputDeviceAddr = nullptr;359 void* inputDeviceAddr = nullptr;
360 void* weightDeviceAddr = nullptr;360 void* weightDeviceAddr = nullptr;
@@ -391,7 +391,7 @@ int main() {
391 391 
392 // 调用aclnnDequantBias第一段接口392 // 调用aclnnDequantBias第一段接口
393 ret = aclnnDequantBiasGetWorkspaceSize(input, weight, activation, bias,393 ret = aclnnDequantBiasGetWorkspaceSize(input, weight, activation, bias,
394- true, y, &workspaceSize, &executor);394+ 1, y, &workspaceSize, &executor);
395 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclnnDequantBiasGetWorkspaceSize failed. ERROR: %d\n", ret); return ret);395 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclnnDequantBiasGetWorkspaceSize failed. ERROR: %d\n", ret); return ret);
396 396 
397 // 根据第一段接口计算出的workspaceSize申请device内存397 // 根据第一段接口计算出的workspaceSize申请device内存
@@ -37,12 +37,12 @@ int64_t GetShapeSize(const std::vector<int64_t>& shape)
37void PrintOutResult(std::vector<int64_t>& shape, void** deviceAddr)37void PrintOutResult(std::vector<int64_t>& shape, void** deviceAddr)
38{38{
39 auto size = GetShapeSize(shape);39 auto size = GetShapeSize(shape);
40- std::vector<int8_t> resultData(size, 0);40+ std::vector<int16_t> resultData(size, 0);
41 auto ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), *deviceAddr,41 auto ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), *deviceAddr,
42 size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);42 size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST);
43- CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return );43+ CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return);
44 for (int64_t i = 0; i < size; i++) {44 for (int64_t i = 0; i < size; i++) {
45- LOG_PRINT("mean result[%ld] is: %d\n", i, resultData[i]);45+ LOG_PRINT("result[%ld] is: %d\n", i, resultData[i]);
46 }46 }
47}47}
48 48 
@@ -97,10 +97,10 @@ int main()
97 std::vector<int64_t> activationShape = {40};97 std::vector<int64_t> activationShape = {40};
98 std::vector<int64_t> biasShape = {256};98 std::vector<int64_t> biasShape = {256};
99 99 
100- std::vector<int16_t> inputHostData(40 * 256, 1);100+ std::vector<int32_t> inputHostData(40 * 256, 1);
101- std::vector<int32_t> weightHostData(256, 2);101+ std::vector<float> weightHostData(256, 2.0f);
102- std::vector<int32_t> activationHostData(40, 2);102+ std::vector<float> activationHostData(40, 2.0f);
103- std::vector<int32_t> biasHostData(256, 2);103+ std::vector<float> biasHostData(256, 2.0f);
104 104 
105 void* inputDeviceAddr = nullptr;105 void* inputDeviceAddr = nullptr;
106 void* weightDeviceAddr = nullptr;106 void* weightDeviceAddr = nullptr;
@@ -135,7 +135,7 @@ int main()
135 aclOpExecutor* executor;135 aclOpExecutor* executor;
136 136 
137 // 调用aclnnDequantBias第一段接口137 // 调用aclnnDequantBias第一段接口
138- ret = aclnnDequantBiasGetWorkspaceSize(input, weight, activation, bias, true, y, &workspaceSize, &executor);138+ ret = aclnnDequantBiasGetWorkspaceSize(input, weight, activation, bias, 1, y, &workspaceSize, &executor);
139 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclnnDequantBiasGetWorkspaceSize failed. ERROR: %d\n", ret); return ret);139 CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclnnDequantBiasGetWorkspaceSize failed. ERROR: %d\n", ret); return ret);
140 140 
141 // 根据第一段接口计算出的workspaceSize申请device内存141 // 根据第一段接口计算出的workspaceSize申请device内存
@@ -171,4 +171,4 @@ int main()
171 aclFinalize();171 aclFinalize();
172 172 
173 return 0;173 return 0;
174-}174+}