已合并
950支持静态库功能检查与修正 #1872
Sun创建于 3月25日
950支持静态库功能检查与修正 #1872
已合并
共 50 个文件变更+274-280
| @@ -325,12 +325,6 @@ private: | |||
| 325 | static Ops::Math::OpTiling::RegisterNew VAR_UNUSED##op_type##class_name##priority_register = \ | 325 | static Ops::Math::OpTiling::RegisterNew VAR_UNUSED##op_type##class_name##priority_register = \ |
| 326 | Ops::Math::OpTiling::RegisterNew(#op_type).tiling<class_name>(priority, soc_versions) | 326 | Ops::Math::OpTiling::RegisterNew(#op_type).tiling<class_name>(priority, soc_versions) |
| 327 | 327 | ||
| 328 | -// op_type: 算子名称, class_name: 注册的 tiling 类, | ||
| 329 | -// priority: tiling 类的优先级, 越小表示优先级越高, 即被选中的概率越大 | ||
| 330 | - | ||
| 331 | - static Ops::Math::OpTiling::Register VAR_UNUSED##op_type_##class_name##priority_register = \ | ||
| 332 | - Ops::Math::OpTiling::Register(op_type).tiling<class_name>(priority) | ||
| 333 | - | ||
| 334 | // op_type: 算子名称, class_name: 注册的 tiling 类, | 328 | // op_type: 算子名称, class_name: 注册的 tiling 类, |
| 335 | // soc_version: soc版本,用于区分不同的soc | 329 | // soc_version: soc版本,用于区分不同的soc |
| 336 | // priority: tiling 类的优先级, 越小表示优先级越高, 即会优先选择这个tiling类 | 330 | // priority: tiling 类的优先级, 越小表示优先级越高, 即会优先选择这个tiling类 |
| @@ -76,17 +76,17 @@ int PrepareInputAndOutput( | |||
| 76 | std::vector<int64_t>& selfShape, std::vector<int64_t>& outShape, void** selfDeviceAddr, aclTensor** self, | 76 | std::vector<int64_t>& selfShape, std::vector<int64_t>& outShape, void** selfDeviceAddr, aclTensor** self, |
| 77 | aclScalar** max, void** outDeviceAddr, aclTensor** out) | 77 | aclScalar** max, void** outDeviceAddr, aclTensor** out) |
| 78 | { | 78 | { |
| 79 | - std::vector<int8_t> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 79 | + std::vector<int32_t> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 80 | - std::vector<int8_t> outHostData(8, 0); | 80 | + std::vector<int32_t> outHostData(8, 0); |
| 81 | - int8_t maxValue = 4; | 81 | + int32_t maxValue = 4; |
| 82 | // 创建self aclTensor | 82 | // 创建self aclTensor |
| 83 | - auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_INT8, self); | 83 | + auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_INT32, self); |
| 84 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 84 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 85 | // 创建max aclScalar | 85 | // 创建max aclScalar |
| 86 | - *max = aclCreateScalar(&maxValue, aclDataType::ACL_INT8); | 86 | + *max = aclCreateScalar(&maxValue, aclDataType::ACL_INT32); |
| 87 | CHECK_RET(*max != nullptr, return ret); | 87 | CHECK_RET(*max != nullptr, return ret); |
| 88 | // 创建out aclTensor | 88 | // 创建out aclTensor |
| 89 | - ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_INT8, out); | 89 | + ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_INT32, out); |
| 90 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 90 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 91 | 91 | ||
| 92 | return ACL_SUCCESS; | 92 | return ACL_SUCCESS; |
| @@ -77,18 +77,18 @@ int PrepareInputAndOutput( | |||
| 77 | void** selfDeviceAddr, aclTensor** self, void** maxDeviceAddr, aclTensor** max, void** outDeviceAddr, | 77 | void** selfDeviceAddr, aclTensor** self, void** maxDeviceAddr, aclTensor** max, void** outDeviceAddr, |
| 78 | aclTensor** out) | 78 | aclTensor** out) |
| 79 | { | 79 | { |
| 80 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 80 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 81 | - std::vector<double> maxHostData = {1, 1, 1, 2, 2, 2, 3, 3}; | 81 | + std::vector<float> maxHostData = {1, 1, 1, 2, 2, 2, 3, 3}; |
| 82 | - std::vector<double> outHostData(8, 0); | 82 | + std::vector<float> outHostData(8, 0); |
| 83 | 83 | ||
| 84 | // 创建self aclTensor | 84 | // 创建self aclTensor |
| 85 | - auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_DOUBLE, self); | 85 | + auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 86 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 86 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 87 | // 创建max aclTensor | 87 | // 创建max aclTensor |
| 88 | - ret = CreateAclTensor(maxHostData, maxShape, maxDeviceAddr, aclDataType::ACL_DOUBLE, max); | 88 | + ret = CreateAclTensor(maxHostData, maxShape, maxDeviceAddr, aclDataType::ACL_FLOAT, max); |
| 89 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 89 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 90 | // 创建out aclTensor | 90 | // 创建out aclTensor |
| 91 | - ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_DOUBLE, out); | 91 | + ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_FLOAT, out); |
| 92 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 92 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 93 | 93 | ||
| 94 | return ACL_SUCCESS; | 94 | return ACL_SUCCESS; |
| @@ -163,7 +163,7 @@ int main() | |||
| 163 | 163 | ||
| 164 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 164 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 165 | auto size = GetShapeSize(outShape); | 165 | auto size = GetShapeSize(outShape); |
| 166 | - std::vector<double> resultData(size, 0); | 166 | + std::vector<float> resultData(size, 0); |
| 167 | ret = aclrtMemcpy( | 167 | ret = aclrtMemcpy( |
| 168 | resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(resultData[0]), | 168 | resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(resultData[0]), |
| 169 | ACL_MEMCPY_DEVICE_TO_HOST); | 169 | ACL_MEMCPY_DEVICE_TO_HOST); |
| @@ -77,19 +77,19 @@ int PrepareInputAndOutput( | |||
| 77 | std::vector<int64_t>& shape, void** selfDeviceAddr, aclTensor** self, aclScalar** min, void** outDeviceAddr, | 77 | std::vector<int64_t>& shape, void** selfDeviceAddr, aclTensor** self, aclScalar** min, void** outDeviceAddr, |
| 78 | aclTensor** out) | 78 | aclTensor** out) |
| 79 | { | 79 | { |
| 80 | - double min_v = 2; | 80 | + float min_v = 2; |
| 81 | 81 | ||
| 82 | - std::vector<double> selfHostData = {0, 1, 0, 3, 0, 5, 0, 7}; | 82 | + std::vector<float> selfHostData = {0, 1, 0, 3, 0, 5, 0, 7}; |
| 83 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 83 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 84 | 84 | ||
| 85 | // 创建self aclTensor | 85 | // 创建self aclTensor |
| 86 | - auto ret = CreateAclTensor(selfHostData, shape, selfDeviceAddr, aclDataType::ACL_DOUBLE, self); | 86 | + auto ret = CreateAclTensor(selfHostData, shape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 87 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 87 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 88 | // 创建min | 88 | // 创建min |
| 89 | - *min = aclCreateScalar(&min_v, aclDataType::ACL_DOUBLE); | 89 | + *min = aclCreateScalar(&min_v, aclDataType::ACL_FLOAT); |
| 90 | CHECK_RET(*min != nullptr, return ret); | 90 | CHECK_RET(*min != nullptr, return ret); |
| 91 | // 创建out aclTensor | 91 | // 创建out aclTensor |
| 92 | - ret = CreateAclTensor(outHostData, shape, outDeviceAddr, aclDataType::ACL_DOUBLE, out); | 92 | + ret = CreateAclTensor(outHostData, shape, outDeviceAddr, aclDataType::ACL_FLOAT, out); |
| 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 94 | 94 | ||
| 95 | return ACL_SUCCESS; | 95 | return ACL_SUCCESS; |
| @@ -157,9 +157,9 @@ int main() | |||
| 157 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); | 157 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); |
| 158 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 158 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 159 | auto size = GetShapeSize(shape); | 159 | auto size = GetShapeSize(shape); |
| 160 | - std::vector<double> resultData(size, 0); | 160 | + std::vector<float> resultData(size, 0); |
| 161 | ret = aclrtMemcpy( | 161 | ret = aclrtMemcpy( |
| 162 | - resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(double), | 162 | + resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(float), |
| 163 | ACL_MEMCPY_DEVICE_TO_HOST); | 163 | ACL_MEMCPY_DEVICE_TO_HOST); |
| 164 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 164 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| 165 | 165 | ||
| @@ -78,17 +78,17 @@ int PrepareInputAndOutput( | |||
| 78 | void** selfDeviceAddr, aclTensor** self, void** minDeviceAddr, aclTensor** min, void** outDeviceAddr, | 78 | void** selfDeviceAddr, aclTensor** self, void** minDeviceAddr, aclTensor** min, void** outDeviceAddr, |
| 79 | aclTensor** out) | 79 | aclTensor** out) |
| 80 | { | 80 | { |
| 81 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 81 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 82 | - std::vector<double> minHostData = {2, 1, 1, 2, 2, 6, 6, 9}; | 82 | + std::vector<float> minHostData = {2, 1, 1, 2, 2, 6, 6, 9}; |
| 83 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 83 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 84 | // 创建self aclTensor | 84 | // 创建self aclTensor |
| 85 | - auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_DOUBLE, self); | 85 | + auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 86 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 86 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 87 | // 创建min aclTensor | 87 | // 创建min aclTensor |
| 88 | - ret = CreateAclTensor(minHostData, minShape, minDeviceAddr, aclDataType::ACL_DOUBLE, min); | 88 | + ret = CreateAclTensor(minHostData, minShape, minDeviceAddr, aclDataType::ACL_FLOAT, min); |
| 89 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 89 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 90 | // 创建out aclTensor | 90 | // 创建out aclTensor |
| 91 | - ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_DOUBLE, out); | 91 | + ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_FLOAT, out); |
| 92 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 92 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 93 | 93 | ||
| 94 | return ACL_SUCCESS; | 94 | return ACL_SUCCESS; |
| @@ -161,9 +161,9 @@ int main() | |||
| 161 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); | 161 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); |
| 162 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 162 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 163 | auto size = GetShapeSize(outShape); | 163 | auto size = GetShapeSize(outShape); |
| 164 | - std::vector<double> resultData(size, 0); | 164 | + std::vector<float> resultData(size, 0); |
| 165 | ret = aclrtMemcpy( | 165 | ret = aclrtMemcpy( |
| 166 | - resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(double), | 166 | + resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(float), |
| 167 | ACL_MEMCPY_DEVICE_TO_HOST); | 167 | ACL_MEMCPY_DEVICE_TO_HOST); |
| 168 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 168 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| 169 | for (int64_t i = 0; i < size; i++) { | 169 | for (int64_t i = 0; i < size; i++) { |
| @@ -77,22 +77,22 @@ int PrepareInputAndOutput( | |||
| 77 | std::vector<int64_t>& shape, void** selfDeviceAddr, aclTensor** self, void** minDeviceAddr, | 77 | std::vector<int64_t>& shape, void** selfDeviceAddr, aclTensor** self, void** minDeviceAddr, |
| 78 | aclTensor** clipValueMin, void** maxDeviceAddr, aclTensor** clipValueMax, void** outDeviceAddr, aclTensor** out) | 78 | aclTensor** clipValueMin, void** maxDeviceAddr, aclTensor** clipValueMax, void** outDeviceAddr, aclTensor** out) |
| 79 | { | 79 | { |
| 80 | - std::vector<int8_t> selfHostData = {0, 1, 0, 3, 0, 5, 0, 7}; | 80 | + std::vector<int32_t> selfHostData = {0, 1, 0, 3, 0, 5, 0, 7}; |
| 81 | - std::vector<int8_t> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 81 | + std::vector<int32_t> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 82 | - std::vector<int8_t> minHostData = {1, 3, 0, 0, 0, 0, 0, 0}; | 82 | + std::vector<int32_t> minHostData = {1, 3, 0, 0, 0, 0, 0, 0}; |
| 83 | - std::vector<int8_t> maxHostData = {5, 5, 3, 3, 4, 5, 6, 6}; | 83 | + std::vector<int32_t> maxHostData = {5, 5, 3, 3, 4, 5, 6, 6}; |
| 84 | 84 | ||
| 85 | // 创建self aclTensor | 85 | // 创建self aclTensor |
| 86 | - auto ret = CreateAclTensor(selfHostData, shape, selfDeviceAddr, aclDataType::ACL_INT8, self); | 86 | + auto ret = CreateAclTensor(selfHostData, shape, selfDeviceAddr, aclDataType::ACL_INT32, self); |
| 87 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 87 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 88 | // 创建min aclTensor | 88 | // 创建min aclTensor |
| 89 | - ret = CreateAclTensor(minHostData, shape, minDeviceAddr, aclDataType::ACL_INT8, clipValueMin); | 89 | + ret = CreateAclTensor(minHostData, shape, minDeviceAddr, aclDataType::ACL_INT32, clipValueMin); |
| 90 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 90 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 91 | // 创建max aclTensor | 91 | // 创建max aclTensor |
| 92 | - ret = CreateAclTensor(maxHostData, shape, maxDeviceAddr, aclDataType::ACL_INT8, clipValueMax); | 92 | + ret = CreateAclTensor(maxHostData, shape, maxDeviceAddr, aclDataType::ACL_INT32, clipValueMax); |
| 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 94 | // 创建out aclTensor | 94 | // 创建out aclTensor |
| 95 | - ret = CreateAclTensor(outHostData, shape, outDeviceAddr, aclDataType::ACL_INT8, out); | 95 | + ret = CreateAclTensor(outHostData, shape, outDeviceAddr, aclDataType::ACL_INT32, out); |
| 96 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 96 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 97 | 97 | ||
| 98 | return ACL_SUCCESS; | 98 | return ACL_SUCCESS; |
| @@ -77,21 +77,21 @@ int PrepareInputAndOutput( | |||
| 77 | std::vector<int64_t>& selfShape, std::vector<int64_t>& outShape, void** selfDeviceAddr, aclTensor** self, | 77 | std::vector<int64_t>& selfShape, std::vector<int64_t>& outShape, void** selfDeviceAddr, aclTensor** self, |
| 78 | aclScalar** clipValueMin, aclScalar** clipValueMax, void** outDeviceAddr, aclTensor** out) | 78 | aclScalar** clipValueMin, aclScalar** clipValueMax, void** outDeviceAddr, aclTensor** out) |
| 79 | { | 79 | { |
| 80 | - std::vector<double> selfHostData = {0, 1, 2, 3}; | 80 | + std::vector<float> selfHostData = {0, 1, 2, 3}; |
| 81 | - std::vector<double> outHostData = {0, 0, 0, 0}; | 81 | + std::vector<float> outHostData = {0, 0, 0, 0}; |
| 82 | - double clipValueMinValue = 1.2; | 82 | + float clipValueMinValue = 1.2; |
| 83 | - double clipValueMaxValue = 2.4; | 83 | + float clipValueMaxValue = 2.4; |
| 84 | // 创建self aclTensor | 84 | // 创建self aclTensor |
| 85 | - auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_DOUBLE, self); | 85 | + auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 86 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 86 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 87 | // 创建clipValueMin aclScalar | 87 | // 创建clipValueMin aclScalar |
| 88 | - *clipValueMin = aclCreateScalar(&clipValueMinValue, aclDataType::ACL_DOUBLE); | 88 | + *clipValueMin = aclCreateScalar(&clipValueMinValue, aclDataType::ACL_FLOAT); |
| 89 | CHECK_RET(*clipValueMin != nullptr, return ret); | 89 | CHECK_RET(*clipValueMin != nullptr, return ret); |
| 90 | // 创建clipValueMax aclScalar | 90 | // 创建clipValueMax aclScalar |
| 91 | - *clipValueMax = aclCreateScalar(&clipValueMaxValue, aclDataType::ACL_DOUBLE); | 91 | + *clipValueMax = aclCreateScalar(&clipValueMaxValue, aclDataType::ACL_FLOAT); |
| 92 | CHECK_RET(*clipValueMax != nullptr, return ret); | 92 | CHECK_RET(*clipValueMax != nullptr, return ret); |
| 93 | // 创建out aclTensor | 93 | // 创建out aclTensor |
| 94 | - ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_DOUBLE, out); | 94 | + ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_FLOAT, out); |
| 95 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 95 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 96 | 96 | ||
| 97 | return ACL_SUCCESS; | 97 | return ACL_SUCCESS; |
| @@ -165,9 +165,9 @@ int main() | |||
| 165 | 165 | ||
| 166 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 166 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 167 | auto size = GetShapeSize(outShape); | 167 | auto size = GetShapeSize(outShape); |
| 168 | - std::vector<double> resultData(size, 0); | 168 | + std::vector<float> resultData(size, 0); |
| 169 | ret = aclrtMemcpy( | 169 | ret = aclrtMemcpy( |
| 170 | - resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(double), | 170 | + resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(float), |
| 171 | ACL_MEMCPY_DEVICE_TO_HOST); | 171 | ACL_MEMCPY_DEVICE_TO_HOST); |
| 172 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 172 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| 173 | for (int64_t i = 0; i < size; i++) { | 173 | for (int64_t i = 0; i < size; i++) { |
| @@ -77,21 +77,21 @@ int PrepareInputAndOutput( | |||
| 77 | std::vector<int64_t>& selfShape, std::vector<int64_t>& outShape, void** selfDeviceAddr, aclTensor** self, | 77 | std::vector<int64_t>& selfShape, std::vector<int64_t>& outShape, void** selfDeviceAddr, aclTensor** self, |
| 78 | aclScalar** clipValueMin, aclScalar** clipValueMax, void** outDeviceAddr, aclTensor** out) | 78 | aclScalar** clipValueMin, aclScalar** clipValueMax, void** outDeviceAddr, aclTensor** out) |
| 79 | { | 79 | { |
| 80 | - std::vector<double> selfHostData = {0, 1, 2, 3}; | 80 | + std::vector<float> selfHostData = {0, 1, 2, 3}; |
| 81 | - std::vector<double> outHostData = {0, 0, 0, 0}; | 81 | + std::vector<float> outHostData = {0, 0, 0, 0}; |
| 82 | - double clipValueMinValue = 1.2; | 82 | + float clipValueMinValue = 1.2; |
| 83 | - double clipValueMaxValue = 2.4; | 83 | + float clipValueMaxValue = 2.4; |
| 84 | // 创建self aclTensor | 84 | // 创建self aclTensor |
| 85 | - auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_DOUBLE, self); | 85 | + auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 86 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 86 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 87 | // 创建clipValueMin aclScalar | 87 | // 创建clipValueMin aclScalar |
| 88 | - *clipValueMin = aclCreateScalar(&clipValueMinValue, aclDataType::ACL_DOUBLE); | 88 | + *clipValueMin = aclCreateScalar(&clipValueMinValue, aclDataType::ACL_FLOAT); |
| 89 | CHECK_RET(*clipValueMin != nullptr, return ret); | 89 | CHECK_RET(*clipValueMin != nullptr, return ret); |
| 90 | // 创建clipValueMax aclScalar | 90 | // 创建clipValueMax aclScalar |
| 91 | - *clipValueMax = aclCreateScalar(&clipValueMaxValue, aclDataType::ACL_DOUBLE); | 91 | + *clipValueMax = aclCreateScalar(&clipValueMaxValue, aclDataType::ACL_FLOAT); |
| 92 | CHECK_RET(*clipValueMax != nullptr, return ret); | 92 | CHECK_RET(*clipValueMax != nullptr, return ret); |
| 93 | // 创建out aclTensor | 93 | // 创建out aclTensor |
| 94 | - ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_DOUBLE, out); | 94 | + ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_FLOAT, out); |
| 95 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 95 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 96 | 96 | ||
| 97 | return ACL_SUCCESS; | 97 | return ACL_SUCCESS; |
| @@ -168,9 +168,9 @@ int main() | |||
| 168 | 168 | ||
| 169 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 169 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 170 | auto size = GetShapeSize(outShape); | 170 | auto size = GetShapeSize(outShape); |
| 171 | - std::vector<double> resultData(size, 0); | 171 | + std::vector<float> resultData(size, 0); |
| 172 | ret = aclrtMemcpy( | 172 | ret = aclrtMemcpy( |
| 173 | - resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(double), | 173 | + resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(float), |
| 174 | ACL_MEMCPY_DEVICE_TO_HOST); | 174 | ACL_MEMCPY_DEVICE_TO_HOST); |
| 175 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 175 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| 176 | for (int64_t i = 0; i < size; i++) { | 176 | for (int64_t i = 0; i < size; i++) { |
| @@ -74,13 +74,13 @@ int CreateAclTensor( | |||
| 74 | 74 | ||
| 75 | int PrepareInputAndOutput(std::vector<int64_t>& selfShape, void** selfDeviceAddr, aclTensor** self, aclScalar** max) | 75 | int PrepareInputAndOutput(std::vector<int64_t>& selfShape, void** selfDeviceAddr, aclTensor** self, aclScalar** max) |
| 76 | { | 76 | { |
| 77 | - std::vector<int8_t> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 77 | + std::vector<int32_t> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 78 | - int8_t maxValue = 4; | 78 | + int32_t maxValue = 4; |
| 79 | // 创建self aclTensor | 79 | // 创建self aclTensor |
| 80 | - auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_INT8, self); | 80 | + auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_INT32, self); |
| 81 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 81 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 82 | // 创建max aclScalar | 82 | // 创建max aclScalar |
| 83 | - *max = aclCreateScalar(&maxValue, aclDataType::ACL_INT8); | 83 | + *max = aclCreateScalar(&maxValue, aclDataType::ACL_INT32); |
| 84 | CHECK_RET(*max != nullptr, return ret); | 84 | CHECK_RET(*max != nullptr, return ret); |
| 85 | 85 | ||
| 86 | return ACL_SUCCESS; | 86 | return ACL_SUCCESS; |
| @@ -76,13 +76,13 @@ int PrepareInputAndOutput( | |||
| 76 | std::vector<int64_t>& selfShape, std::vector<int64_t>& maxShape, void** selfDeviceAddr, aclTensor** self, | 76 | std::vector<int64_t>& selfShape, std::vector<int64_t>& maxShape, void** selfDeviceAddr, aclTensor** self, |
| 77 | void** maxDeviceAddr, aclTensor** max) | 77 | void** maxDeviceAddr, aclTensor** max) |
| 78 | { | 78 | { |
| 79 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 79 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 80 | - std::vector<double> maxHostData = {1, 1, 1, 2, 2, 2, 3, 3}; | 80 | + std::vector<float> maxHostData = {1, 1, 1, 2, 2, 2, 3, 3}; |
| 81 | // 创建self aclTensor | 81 | // 创建self aclTensor |
| 82 | - auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_DOUBLE, self); | 82 | + auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 83 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 83 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 84 | // 创建max aclTensor | 84 | // 创建max aclTensor |
| 85 | - ret = CreateAclTensor(maxHostData, maxShape, maxDeviceAddr, aclDataType::ACL_DOUBLE, max); | 85 | + ret = CreateAclTensor(maxHostData, maxShape, maxDeviceAddr, aclDataType::ACL_FLOAT, max); |
| 86 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 86 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 87 | 87 | ||
| 88 | return ACL_SUCCESS; | 88 | return ACL_SUCCESS; |
| @@ -151,7 +151,7 @@ int main() | |||
| 151 | 151 | ||
| 152 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 152 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 153 | auto size = GetShapeSize(selfShape); | 153 | auto size = GetShapeSize(selfShape); |
| 154 | - std::vector<double> resultData(size, 0); | 154 | + std::vector<float> resultData(size, 0); |
| 155 | ret = aclrtMemcpy( | 155 | ret = aclrtMemcpy( |
| 156 | resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), | 156 | resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), |
| 157 | ACL_MEMCPY_DEVICE_TO_HOST); | 157 | ACL_MEMCPY_DEVICE_TO_HOST); |
| @@ -76,14 +76,14 @@ int PrepareInputAndOutput( | |||
| 76 | std::vector<int64_t>& selfShape, std::vector<int64_t>& minShape, void** selfDeviceAddr, aclTensor** self, | 76 | std::vector<int64_t>& selfShape, std::vector<int64_t>& minShape, void** selfDeviceAddr, aclTensor** self, |
| 77 | void** minDeviceAddr, aclTensor** min) | 77 | void** minDeviceAddr, aclTensor** min) |
| 78 | { | 78 | { |
| 79 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 79 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 80 | - std::vector<double> minHostData = {2, 1, 1, 2, 2, 6, 6, 9}; | 80 | + std::vector<float> minHostData = {2, 1, 1, 2, 2, 6, 6, 9}; |
| 81 | 81 | ||
| 82 | // 创建self aclTensor | 82 | // 创建self aclTensor |
| 83 | - auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_DOUBLE, self); | 83 | + auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 84 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 84 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 85 | // 创建min aclTensor | 85 | // 创建min aclTensor |
| 86 | - ret = CreateAclTensor(minHostData, minShape, minDeviceAddr, aclDataType::ACL_DOUBLE, min); | 86 | + ret = CreateAclTensor(minHostData, minShape, minDeviceAddr, aclDataType::ACL_FLOAT, min); |
| 87 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 87 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 88 | 88 | ||
| 89 | return ACL_SUCCESS; | 89 | return ACL_SUCCESS; |
| @@ -151,7 +151,7 @@ int main() | |||
| 151 | 151 | ||
| 152 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧 | 152 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧 |
| 153 | auto size = GetShapeSize(selfShape); | 153 | auto size = GetShapeSize(selfShape); |
| 154 | - std::vector<double> resultData(size, 0); | 154 | + std::vector<float> resultData(size, 0); |
| 155 | ret = aclrtMemcpy( | 155 | ret = aclrtMemcpy( |
| 156 | resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), | 156 | resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), |
| 157 | ACL_MEMCPY_DEVICE_TO_HOST); | 157 | ACL_MEMCPY_DEVICE_TO_HOST); |
| @@ -85,13 +85,13 @@ int main() { | |||
| 85 | void* outDeviceAddr = nullptr; | 85 | void* outDeviceAddr = nullptr; |
| 86 | aclTensor* self = nullptr; | 86 | aclTensor* self = nullptr; |
| 87 | aclTensor* out = nullptr; | 87 | aclTensor* out = nullptr; |
| 88 | - std::vector<double> selfHostData = {1, -1, 0, 0.5, -1.732/2, 12, NAN, -INFINITY}; | 88 | + std::vector<float> selfHostData = {1, -1, 0, 0.5, -1.732/2, 12, NAN, -INFINITY}; |
| 89 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 89 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 90 | // 创建self aclTensor | 90 | // 创建self aclTensor |
| 91 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 91 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 92 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 92 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 93 | // 创建out aclTensor | 93 | // 创建out aclTensor |
| 94 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 94 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 95 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 95 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 96 | 96 | ||
| 97 | uint64_t workspaceSize = 0; | 97 | uint64_t workspaceSize = 0; |
| @@ -118,7 +118,7 @@ int main() { | |||
| 118 | 118 | ||
| 119 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 119 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 120 | auto size = GetShapeSize(outShape); | 120 | auto size = GetShapeSize(outShape); |
| 121 | - std::vector<double> resultData(size, 0); | 121 | + std::vector<float> resultData(size, 0); |
| 122 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, | 122 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, |
| 123 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 123 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 124 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 124 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -83,10 +83,10 @@ int main() { | |||
| 83 | std::vector<int64_t> outShape = {4, 2}; | 83 | std::vector<int64_t> outShape = {4, 2}; |
| 84 | void* selfDeviceAddr = nullptr; | 84 | void* selfDeviceAddr = nullptr; |
| 85 | aclTensor* self = nullptr; | 85 | aclTensor* self = nullptr; |
| 86 | - std::vector<double> selfHostData = {1, -1, 0, 0.5, -1.732/2, 12, NAN, -INFINITY}; | 86 | + std::vector<float> selfHostData = {1, -1, 0, 0.5, -1.732/2, 12, NAN, -INFINITY}; |
| 87 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 87 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 88 | // 创建self aclTensor | 88 | // 创建self aclTensor |
| 89 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 89 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 90 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 90 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 91 | 91 | ||
| 92 | uint64_t workspaceSize = 0; | 92 | uint64_t workspaceSize = 0; |
| @@ -114,7 +114,7 @@ int main() { | |||
| 114 | 114 | ||
| 115 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧 | 115 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧 |
| 116 | auto size = GetShapeSize(outShape); | 116 | auto size = GetShapeSize(outShape); |
| 117 | - std::vector<double> resultData(size, 0); | 117 | + std::vector<float> resultData(size, 0); |
| 118 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, | 118 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, |
| 119 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 119 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 120 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 120 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -92,21 +92,21 @@ int main() | |||
| 92 | aclTensor* other = nullptr; | 92 | aclTensor* other = nullptr; |
| 93 | aclScalar* alpha = nullptr; | 93 | aclScalar* alpha = nullptr; |
| 94 | aclTensor* out = nullptr; | 94 | aclTensor* out = nullptr; |
| 95 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 95 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 96 | - std::vector<double> otherHostData = {1, 1, 1, 2, 2, 2, 3, 3}; | 96 | + std::vector<float> otherHostData = {1, 1, 1, 2, 2, 2, 3, 3}; |
| 97 | - std::vector<double> outHostData(8, 0); | 97 | + std::vector<float> outHostData(8, 0); |
| 98 | - double alphaValue = 1.2f; | 98 | + float alphaValue = 1.2f; |
| 99 | // 创建self aclTensor | 99 | // 创建self aclTensor |
| 100 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 100 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 101 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 101 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 102 | // 创建other aclTensor | 102 | // 创建other aclTensor |
| 103 | - ret = CreateAclTensor(otherHostData, otherShape, &otherDeviceAddr, aclDataType::ACL_DOUBLE, &other); | 103 | + ret = CreateAclTensor(otherHostData, otherShape, &otherDeviceAddr, aclDataType::ACL_FLOAT, &other); |
| 104 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 104 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 105 | // 创建alpha aclScalar | 105 | // 创建alpha aclScalar |
| 106 | - alpha = aclCreateScalar(&alphaValue, aclDataType::ACL_DOUBLE); | 106 | + alpha = aclCreateScalar(&alphaValue, aclDataType::ACL_FLOAT); |
| 107 | CHECK_RET(alpha != nullptr, return ret); | 107 | CHECK_RET(alpha != nullptr, return ret); |
| 108 | // 创建out aclTensor | 108 | // 创建out aclTensor |
| 109 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 109 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 110 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 110 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 111 | 111 | ||
| 112 | uint64_t workspaceSize = 0; | 112 | uint64_t workspaceSize = 0; |
| @@ -133,7 +133,7 @@ int main() | |||
| 133 | 133 | ||
| 134 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 134 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 135 | auto size = GetShapeSize(outShape); | 135 | auto size = GetShapeSize(outShape); |
| 136 | - std::vector<double> resultData(size, 0); | 136 | + std::vector<float> resultData(size, 0); |
| 137 | ret = aclrtMemcpy( | 137 | ret = aclrtMemcpy( |
| 138 | resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(resultData[0]), | 138 | resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(resultData[0]), |
| 139 | ACL_MEMCPY_DEVICE_TO_HOST); | 139 | ACL_MEMCPY_DEVICE_TO_HOST); |
| @@ -90,17 +90,17 @@ int main() | |||
| 90 | aclTensor* self = nullptr; | 90 | aclTensor* self = nullptr; |
| 91 | aclTensor* other = nullptr; | 91 | aclTensor* other = nullptr; |
| 92 | aclScalar* alpha = nullptr; | 92 | aclScalar* alpha = nullptr; |
| 93 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 93 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 94 | - std::vector<double> otherHostData = {1, 1, 1, 2, 2, 2, 3, 3}; | 94 | + std::vector<float> otherHostData = {1, 1, 1, 2, 2, 2, 3, 3}; |
| 95 | - double alphaValue = 1.2f; | 95 | + float alphaValue = 1.2f; |
| 96 | // 创建self aclTensor | 96 | // 创建self aclTensor |
| 97 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 97 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 98 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 98 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 99 | // 创建other aclTensor | 99 | // 创建other aclTensor |
| 100 | - ret = CreateAclTensor(otherHostData, otherShape, &otherDeviceAddr, aclDataType::ACL_DOUBLE, &other); | 100 | + ret = CreateAclTensor(otherHostData, otherShape, &otherDeviceAddr, aclDataType::ACL_FLOAT, &other); |
| 101 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 101 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 102 | // 创建alpha aclScalar | 102 | // 创建alpha aclScalar |
| 103 | - alpha = aclCreateScalar(&alphaValue, aclDataType::ACL_DOUBLE); | 103 | + alpha = aclCreateScalar(&alphaValue, aclDataType::ACL_FLOAT); |
| 104 | CHECK_RET(alpha != nullptr, return ret); | 104 | CHECK_RET(alpha != nullptr, return ret); |
| 105 | 105 | ||
| 106 | uint64_t workspaceSize = 0; | 106 | uint64_t workspaceSize = 0; |
| @@ -128,7 +128,7 @@ int main() | |||
| 128 | 128 | ||
| 129 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 129 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 130 | auto size = GetShapeSize(outShape); | 130 | auto size = GetShapeSize(outShape); |
| 131 | - std::vector<double> resultData(size, 0); | 131 | + std::vector<float> resultData(size, 0); |
| 132 | ret = aclrtMemcpy( | 132 | ret = aclrtMemcpy( |
| 133 | resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), | 133 | resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), |
| 134 | ACL_MEMCPY_DEVICE_TO_HOST); | 134 | ACL_MEMCPY_DEVICE_TO_HOST); |
| @@ -84,13 +84,13 @@ int main() { | |||
| 84 | void* outDeviceAddr = nullptr; | 84 | void* outDeviceAddr = nullptr; |
| 85 | aclTensor* self = nullptr; | 85 | aclTensor* self = nullptr; |
| 86 | aclTensor* out = nullptr; | 86 | aclTensor* out = nullptr; |
| 87 | - std::vector<double> selfHostData = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7,0.8}; | 87 | + std::vector<float> selfHostData = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7,0.8}; |
| 88 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 88 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 89 | // 创建self aclTensor | 89 | // 创建self aclTensor |
| 90 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 90 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 92 | // 创建out aclTensor | 92 | // 创建out aclTensor |
| 93 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 93 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 94 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 94 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 95 | 95 | ||
| 96 | // 3. aclnnAtan接口调用示例 | 96 | // 3. aclnnAtan接口调用示例 |
| @@ -115,7 +115,7 @@ int main() { | |||
| 115 | 115 | ||
| 116 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 116 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 117 | auto size = GetShapeSize(outShape); | 117 | auto size = GetShapeSize(outShape); |
| 118 | - std::vector<double> resultData(size, 0); | 118 | + std::vector<float> resultData(size, 0); |
| 119 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, | 119 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, |
| 120 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 120 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 121 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 121 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -82,10 +82,10 @@ int main() { | |||
| 82 | std::vector<int64_t> outShape = {4, 2}; | 82 | std::vector<int64_t> outShape = {4, 2}; |
| 83 | void* selfDeviceAddr = nullptr; | 83 | void* selfDeviceAddr = nullptr; |
| 84 | aclTensor* self = nullptr; | 84 | aclTensor* self = nullptr; |
| 85 | - std::vector<double> selfHostData = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7,0.8}; | 85 | + std::vector<float> selfHostData = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7,0.8}; |
| 86 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 86 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 87 | // 创建self aclTensor | 87 | // 创建self aclTensor |
| 88 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 88 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 89 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 89 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 90 | 90 | ||
| 91 | // 3. aclnnInplaceAtan接口调用示例 | 91 | // 3. aclnnInplaceAtan接口调用示例 |
| @@ -110,7 +110,7 @@ int main() { | |||
| 110 | 110 | ||
| 111 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 111 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 112 | auto size = GetShapeSize(outShape); | 112 | auto size = GetShapeSize(outShape); |
| 113 | - std::vector<double> resultData(size, 0); | 113 | + std::vector<float> resultData(size, 0); |
| 114 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, | 114 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, |
| 115 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 115 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 116 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 116 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -84,21 +84,21 @@ int main() { | |||
| 84 | aclTensor* self = nullptr; | 84 | aclTensor* self = nullptr; |
| 85 | aclTensor* out = nullptr; | 85 | aclTensor* out = nullptr; |
| 86 | 86 | ||
| 87 | - std::vector<float> selfHostData = {0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1}; | 87 | + std::vector<double> selfHostData = {0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1}; |
| 88 | - std::vector<double> outHostData = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; | 88 | + std::vector<float> outHostData = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; |
| 89 | 89 | ||
| 90 | // 创建self aclTensor | 90 | // 创建self aclTensor |
| 91 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); | 91 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); |
| 92 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 92 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 93 | // 创建out aclTensor | 93 | // 创建out aclTensor |
| 94 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 94 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 95 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 95 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 96 | 96 | ||
| 97 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 | 97 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 |
| 98 | uint64_t workspaceSize = 0; | 98 | uint64_t workspaceSize = 0; |
| 99 | aclOpExecutor* executor; | 99 | aclOpExecutor* executor; |
| 100 | // 调用aclnnCast第一段接口 | 100 | // 调用aclnnCast第一段接口 |
| 101 | - ret = aclnnCastGetWorkspaceSize(self, aclDataType::ACL_DOUBLE, out, &workspaceSize, &executor); | 101 | + ret = aclnnCastGetWorkspaceSize(self, aclDataType::ACL_FLOAT, out, &workspaceSize, &executor); |
| 102 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclnnCastGetWorkspaceSize failed. ERROR: %d\n", ret); return ret); | 102 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclnnCastGetWorkspaceSize failed. ERROR: %d\n", ret); return ret); |
| 103 | // 根据第一段接口计算出的workspaceSize申请device内存 | 103 | // 根据第一段接口计算出的workspaceSize申请device内存 |
| 104 | void* workspaceAddr = nullptr; | 104 | void* workspaceAddr = nullptr; |
| @@ -116,7 +116,7 @@ int main() { | |||
| 116 | 116 | ||
| 117 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 117 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 118 | auto size = GetShapeSize(outShape); | 118 | auto size = GetShapeSize(outShape); |
| 119 | - std::vector<double> resultData(size, 0); | 119 | + std::vector<float> resultData(size, 0); |
| 120 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, | 120 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, |
| 121 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 121 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 122 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 122 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -83,15 +83,15 @@ aclError CreateInputs( | |||
| 83 | std::vector<int64_t>& inputShape, std::vector<int64_t>& outShape, void** selfDeviceAddr, void** outDeviceAddr, | 83 | std::vector<int64_t>& inputShape, std::vector<int64_t>& outShape, void** selfDeviceAddr, void** outDeviceAddr, |
| 84 | aclTensor** self, aclTensor** out) | 84 | aclTensor** self, aclTensor** out) |
| 85 | { | 85 | { |
| 86 | - std::vector<double> selfHostData = {0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7}; | 86 | + std::vector<float> selfHostData = {0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7}; |
| 87 | - std::vector<double> outHostData(8, 0); | 87 | + std::vector<float> outHostData(8, 0); |
| 88 | 88 | ||
| 89 | // 创建 self aclTensor | 89 | // 创建 self aclTensor |
| 90 | - auto ret = CreateAclTensor(selfHostData, inputShape, selfDeviceAddr, aclDataType::ACL_DOUBLE, self); | 90 | + auto ret = CreateAclTensor(selfHostData, inputShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 92 | 92 | ||
| 93 | // 创建 out aclTensor | 93 | // 创建 out aclTensor |
| 94 | - ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_DOUBLE, out); | 94 | + ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_FLOAT, out); |
| 95 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 95 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 96 | 96 | ||
| 97 | return ACL_SUCCESS; | 97 | return ACL_SUCCESS; |
| @@ -103,7 +103,7 @@ aclError ExecOpApi( | |||
| 103 | { | 103 | { |
| 104 | aclOpExecutor* executor; | 104 | aclOpExecutor* executor; |
| 105 | auto size = GetShapeSize(outShape); | 105 | auto size = GetShapeSize(outShape); |
| 106 | - std::vector<double> resultData(size, 0); | 106 | + std::vector<float> resultData(size, 0); |
| 107 | 107 | ||
| 108 | // aclnnCeil 接口调用示例 | 108 | // aclnnCeil 接口调用示例 |
| 109 | LOG_PRINT("test aclnnCeil\n"); | 109 | LOG_PRINT("test aclnnCeil\n"); |
| @@ -84,20 +84,20 @@ aclError CreateInputs( | |||
| 84 | void** selfDeviceAddr, void** otherDeviceAddr, void** outDeviceAddr, aclTensor** self, aclTensor** other, | 84 | void** selfDeviceAddr, void** otherDeviceAddr, void** outDeviceAddr, aclTensor** self, aclTensor** other, |
| 85 | aclTensor** out) | 85 | aclTensor** out) |
| 86 | { | 86 | { |
| 87 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7, 8}; | 87 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7, 8}; |
| 88 | - std::vector<double> otherHostData = {1, 1, 1, 2, 2, 2, 3, 3, 3}; | 88 | + std::vector<float> otherHostData = {1, 1, 1, 2, 2, 2, 3, 3, 3}; |
| 89 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0, 0}; | 89 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0, 0}; |
| 90 | 90 | ||
| 91 | // 创建 self aclTensor | 91 | // 创建 self aclTensor |
| 92 | - auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_DOUBLE, self); | 92 | + auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 94 | 94 | ||
| 95 | // 创建 other aclTensor | 95 | // 创建 other aclTensor |
| 96 | - ret = CreateAclTensor(otherHostData, otherShape, otherDeviceAddr, aclDataType::ACL_DOUBLE, other); | 96 | + ret = CreateAclTensor(otherHostData, otherShape, otherDeviceAddr, aclDataType::ACL_FLOAT, other); |
| 97 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 97 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 98 | 98 | ||
| 99 | // 创建 out aclTensor | 99 | // 创建 out aclTensor |
| 100 | - ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_DOUBLE, out); | 100 | + ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_FLOAT, out); |
| 101 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 101 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 102 | 102 | ||
| 103 | return ACL_SUCCESS; | 103 | return ACL_SUCCESS; |
| @@ -131,7 +131,7 @@ aclError ExecOpApi( | |||
| 131 | 131 | ||
| 132 | // 从 device 拷贝结果到 host | 132 | // 从 device 拷贝结果到 host |
| 133 | auto size = GetShapeSize(outShape); | 133 | auto size = GetShapeSize(outShape); |
| 134 | - std::vector<double> resultData(size, 0); | 134 | + std::vector<float> resultData(size, 0); |
| 135 | 135 | ||
| 136 | ret = aclrtMemcpy( | 136 | ret = aclrtMemcpy( |
| 137 | resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(resultData[0]), | 137 | resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(resultData[0]), |
| @@ -81,15 +81,15 @@ aclError InitAcl(int32_t deviceId, aclrtStream* stream) | |||
| 81 | 81 | ||
| 82 | aclError CreateInputs(std::vector<int64_t>& selfShape, void** selfDeviceAddr, aclTensor** self, aclScalar** other) | 82 | aclError CreateInputs(std::vector<int64_t>& selfShape, void** selfDeviceAddr, aclTensor** self, aclScalar** other) |
| 83 | { | 83 | { |
| 84 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 84 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 85 | - double otherValue = 2.0; | 85 | + float otherValue = 2.0; |
| 86 | 86 | ||
| 87 | // 创建self aclTensor | 87 | // 创建self aclTensor |
| 88 | - auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_DOUBLE, self); | 88 | + auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 89 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 89 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 90 | 90 | ||
| 91 | // 创建other aclScalar | 91 | // 创建other aclScalar |
| 92 | - *other = aclCreateScalar(&otherValue, aclDataType::ACL_DOUBLE); | 92 | + *other = aclCreateScalar(&otherValue, aclDataType::ACL_FLOAT); |
| 93 | CHECK_RET(*other != nullptr, return ACL_ERROR_INVALID_PARAM); | 93 | CHECK_RET(*other != nullptr, return ACL_ERROR_INVALID_PARAM); |
| 94 | 94 | ||
| 95 | return ACL_SUCCESS; | 95 | return ACL_SUCCESS; |
| @@ -124,7 +124,7 @@ aclError ExecOpApi( | |||
| 124 | 124 | ||
| 125 | // 拷贝输出 | 125 | // 拷贝输出 |
| 126 | auto size = GetShapeSize(selfShape); | 126 | auto size = GetShapeSize(selfShape); |
| 127 | - std::vector<double> resultData(size); | 127 | + std::vector<float> resultData(size); |
| 128 | 128 | ||
| 129 | ret = aclrtMemcpy( | 129 | ret = aclrtMemcpy( |
| 130 | resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), | 130 | resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), |
| @@ -83,15 +83,15 @@ aclError CreateInputs( | |||
| 83 | std::vector<int64_t>& selfShape, std::vector<int64_t>& otherShape, void** selfDeviceAddr, void** otherDeviceAddr, | 83 | std::vector<int64_t>& selfShape, std::vector<int64_t>& otherShape, void** selfDeviceAddr, void** otherDeviceAddr, |
| 84 | aclTensor** self, aclTensor** other) | 84 | aclTensor** self, aclTensor** other) |
| 85 | { | 85 | { |
| 86 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 86 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 87 | - std::vector<double> otherHostData = {1, 1, 3, 3, 5, 5, 7, 7}; | 87 | + std::vector<float> otherHostData = {1, 1, 3, 3, 5, 5, 7, 7}; |
| 88 | 88 | ||
| 89 | // 创建 self | 89 | // 创建 self |
| 90 | - auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_DOUBLE, self); | 90 | + auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 92 | 92 | ||
| 93 | // 创建 other | 93 | // 创建 other |
| 94 | - ret = CreateAclTensor(otherHostData, otherShape, otherDeviceAddr, aclDataType::ACL_DOUBLE, other); | 94 | + ret = CreateAclTensor(otherHostData, otherShape, otherDeviceAddr, aclDataType::ACL_FLOAT, other); |
| 95 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 95 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 96 | 96 | ||
| 97 | return ACL_SUCCESS; | 97 | return ACL_SUCCESS; |
| @@ -125,10 +125,10 @@ aclError ExecOpApi( | |||
| 125 | 125 | ||
| 126 | // 拷贝输出 | 126 | // 拷贝输出 |
| 127 | auto size = GetShapeSize(selfShape); | 127 | auto size = GetShapeSize(selfShape); |
| 128 | - std::vector<double> resultData(size); | 128 | + std::vector<float> resultData(size); |
| 129 | 129 | ||
| 130 | ret = aclrtMemcpy( | 130 | ret = aclrtMemcpy( |
| 131 | - resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(double), | 131 | + resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), |
| 132 | ACL_MEMCPY_DEVICE_TO_HOST); | 132 | ACL_MEMCPY_DEVICE_TO_HOST); |
| 133 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 133 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| 134 | 134 | ||
| @@ -79,13 +79,13 @@ int main() { | |||
| 79 | void* selfDeviceAddr = nullptr; | 79 | void* selfDeviceAddr = nullptr; |
| 80 | aclTensor* self = nullptr; | 80 | aclTensor* self = nullptr; |
| 81 | aclScalar* other = nullptr; | 81 | aclScalar* other = nullptr; |
| 82 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 82 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 83 | - double otherValue = 3.5; | 83 | + float otherValue = 3.5; |
| 84 | // 创建self aclTensor | 84 | // 创建self aclTensor |
| 85 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 85 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 86 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 86 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 87 | // 创建other aclScalar | 87 | // 创建other aclScalar |
| 88 | - other = aclCreateScalar(&otherValue, aclDataType::ACL_DOUBLE); | 88 | + other = aclCreateScalar(&otherValue, aclDataType::ACL_FLOAT); |
| 89 | CHECK_RET(other != nullptr, return ret); | 89 | CHECK_RET(other != nullptr, return ret); |
| 90 | 90 | ||
| 91 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 | 91 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 |
| @@ -110,7 +110,7 @@ int main() { | |||
| 110 | 110 | ||
| 111 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 111 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 112 | auto size = GetShapeSize(selfShape); | 112 | auto size = GetShapeSize(selfShape); |
| 113 | - std::vector<double> resultData(size, 0); | 113 | + std::vector<float> resultData(size, 0); |
| 114 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, | 114 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, |
| 115 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 115 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 116 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 116 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -82,14 +82,14 @@ int main() { | |||
| 82 | void* otherDeviceAddr = nullptr; | 82 | void* otherDeviceAddr = nullptr; |
| 83 | aclTensor* self = nullptr; | 83 | aclTensor* self = nullptr; |
| 84 | aclTensor* other = nullptr; | 84 | aclTensor* other = nullptr; |
| 85 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 85 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 86 | - std::vector<double> otherHostData = {0, 1, 1, 2, 3, 4, 5, 6}; | 86 | + std::vector<float> otherHostData = {0, 1, 1, 2, 3, 4, 5, 6}; |
| 87 | 87 | ||
| 88 | // 创建self aclTensor | 88 | // 创建self aclTensor |
| 89 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 89 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 90 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 90 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 91 | // 创建other aclTensor | 91 | // 创建other aclTensor |
| 92 | - ret = CreateAclTensor(otherHostData, otherShape, &otherDeviceAddr, aclDataType::ACL_DOUBLE, &other); | 92 | + ret = CreateAclTensor(otherHostData, otherShape, &otherDeviceAddr, aclDataType::ACL_FLOAT, &other); |
| 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 94 | 94 | ||
| 95 | // 3. 调用CANN算子库API,需要修改为具体的API | 95 | // 3. 调用CANN算子库API,需要修改为具体的API |
| @@ -112,7 +112,7 @@ int main() { | |||
| 112 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); | 112 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); |
| 113 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 113 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 114 | auto size = GetShapeSize(selfShape); | 114 | auto size = GetShapeSize(selfShape); |
| 115 | - std::vector<double> resultData(size, 0); | 115 | + std::vector<float> resultData(size, 0); |
| 116 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), | 116 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), |
| 117 | ACL_MEMCPY_DEVICE_TO_HOST); | 117 | ACL_MEMCPY_DEVICE_TO_HOST); |
| 118 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 118 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -79,12 +79,12 @@ int ExecuteInplaceLtScalarOperator(aclrtStream stream) | |||
| 79 | void* selfDeviceAddr = nullptr; | 79 | void* selfDeviceAddr = nullptr; |
| 80 | aclTensor* self = nullptr; | 80 | aclTensor* self = nullptr; |
| 81 | aclScalar* other = nullptr; | 81 | aclScalar* other = nullptr; |
| 82 | - std::vector<double> selfHostData = {0, 1, 1.2, 0.3, 4.1, 5, 1.6, 7}; | 82 | + std::vector<float> selfHostData = {0, 1, 1.2, 0.3, 4.1, 5, 1.6, 7}; |
| 83 | - double otherValue = 1.2; | 83 | + float otherValue = 1.2; |
| 84 | 84 | ||
| 85 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 85 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 86 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 86 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 87 | - other = aclCreateScalar(&otherValue, aclDataType::ACL_DOUBLE); | 87 | + other = aclCreateScalar(&otherValue, aclDataType::ACL_FLOAT); |
| 88 | CHECK_RET(other != nullptr, return ret); | 88 | CHECK_RET(other != nullptr, return ret); |
| 89 | 89 | ||
| 90 | uint64_t workspaceSize = 0; | 90 | uint64_t workspaceSize = 0; |
| @@ -106,7 +106,7 @@ int ExecuteInplaceLtScalarOperator(aclrtStream stream) | |||
| 106 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); | 106 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); |
| 107 | 107 | ||
| 108 | auto size = GetShapeSize(selfShape); | 108 | auto size = GetShapeSize(selfShape); |
| 109 | - std::vector<double> resultData(size, 0); | 109 | + std::vector<float> resultData(size, 0); |
| 110 | ret = aclrtMemcpy( | 110 | ret = aclrtMemcpy( |
| 111 | resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), | 111 | resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), |
| 112 | ACL_MEMCPY_DEVICE_TO_HOST); | 112 | ACL_MEMCPY_DEVICE_TO_HOST); |
| @@ -81,10 +81,10 @@ int ExecuteInplaceLtTensorOperator(aclrtStream stream) | |||
| 81 | void* otherDeviceAddr = nullptr; | 81 | void* otherDeviceAddr = nullptr; |
| 82 | aclTensor* self = nullptr; | 82 | aclTensor* self = nullptr; |
| 83 | aclTensor* other = nullptr; | 83 | aclTensor* other = nullptr; |
| 84 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 84 | + std::vector<int32_t> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 85 | - std::vector<int> otherHostData = {1, 1, 1, 1, 0, 0, 0, 0}; | 85 | + std::vector<int32_t> otherHostData = {1, 1, 1, 1, 0, 0, 0, 0}; |
| 86 | 86 | ||
| 87 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 87 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_INT32, &self); |
| 88 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 88 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 89 | ret = CreateAclTensor(otherHostData, otherShape, &otherDeviceAddr, aclDataType::ACL_INT32, &other); | 89 | ret = CreateAclTensor(otherHostData, otherShape, &otherDeviceAddr, aclDataType::ACL_INT32, &other); |
| 90 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 90 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| @@ -108,13 +108,13 @@ int ExecuteInplaceLtTensorOperator(aclrtStream stream) | |||
| 108 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); | 108 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); |
| 109 | 109 | ||
| 110 | auto size = GetShapeSize(selfShape); | 110 | auto size = GetShapeSize(selfShape); |
| 111 | - std::vector<double> resultData(size, 0); | 111 | + std::vector<int32_t> resultData(size, 0); |
| 112 | ret = aclrtMemcpy( | 112 | ret = aclrtMemcpy( |
| 113 | resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), | 113 | resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, size * sizeof(resultData[0]), |
| 114 | ACL_MEMCPY_DEVICE_TO_HOST); | 114 | ACL_MEMCPY_DEVICE_TO_HOST); |
| 115 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 115 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| 116 | for (int64_t i = 0; i < size; i++) { | 116 | for (int64_t i = 0; i < size; i++) { |
| 117 | - LOG_PRINT("result[%ld] is: %lf\n", i, resultData[i]); | 117 | + LOG_PRINT("result[%ld] is: %d\n", i, resultData[i]); |
| 118 | } | 118 | } |
| 119 | 119 | ||
| 120 | aclDestroyTensor(self); | 120 | aclDestroyTensor(self); |
| @@ -83,17 +83,17 @@ int ExecuteLtScalarOperator(aclrtStream stream) | |||
| 83 | aclTensor* self = nullptr; | 83 | aclTensor* self = nullptr; |
| 84 | aclScalar* other = nullptr; | 84 | aclScalar* other = nullptr; |
| 85 | aclTensor* out = nullptr; | 85 | aclTensor* out = nullptr; |
| 86 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 86 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 87 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 87 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 88 | - double otherValue = 1.2; | 88 | + float otherValue = 1.2; |
| 89 | // 创建self aclTensor | 89 | // 创建self aclTensor |
| 90 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 90 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 92 | // 创建other aclScalar | 92 | // 创建other aclScalar |
| 93 | - other = aclCreateScalar(&otherValue, aclDataType::ACL_DOUBLE); | 93 | + other = aclCreateScalar(&otherValue, aclDataType::ACL_FLOAT); |
| 94 | CHECK_RET(other != nullptr, return ret); | 94 | CHECK_RET(other != nullptr, return ret); |
| 95 | // 创建out aclTensor | 95 | // 创建out aclTensor |
| 96 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 96 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 97 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 97 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 98 | 98 | ||
| 99 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 | 99 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 |
| @@ -118,7 +118,7 @@ int ExecuteLtScalarOperator(aclrtStream stream) | |||
| 118 | 118 | ||
| 119 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 119 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 120 | auto size = GetShapeSize(outShape); | 120 | auto size = GetShapeSize(outShape); |
| 121 | - std::vector<double> resultData(size, 0); | 121 | + std::vector<float> resultData(size, 0); |
| 122 | ret = aclrtMemcpy( | 122 | ret = aclrtMemcpy( |
| 123 | resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(resultData[0]), | 123 | resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(resultData[0]), |
| 124 | ACL_MEMCPY_DEVICE_TO_HOST); | 124 | ACL_MEMCPY_DEVICE_TO_HOST); |
| @@ -82,9 +82,9 @@ struct LtTensorData { | |||
| 82 | aclTensor* self = nullptr; | 82 | aclTensor* self = nullptr; |
| 83 | aclTensor* other = nullptr; | 83 | aclTensor* other = nullptr; |
| 84 | aclTensor* out = nullptr; | 84 | aclTensor* out = nullptr; |
| 85 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 85 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 86 | - std::vector<double> otherHostData = {5, 5, 5, 5, 5, 5, 5, 5}; | 86 | + std::vector<float> otherHostData = {5, 5, 5, 5, 5, 5, 5, 5}; |
| 87 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 87 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 88 | void* workspaceAddr = nullptr; | 88 | void* workspaceAddr = nullptr; |
| 89 | uint64_t workspaceSize = 0; | 89 | uint64_t workspaceSize = 0; |
| 90 | }; | 90 | }; |
| @@ -94,14 +94,14 @@ int CreateInputAndOutputTensors(LtTensorData& data) | |||
| 94 | auto ret = 0; | 94 | auto ret = 0; |
| 95 | 95 | ||
| 96 | // 创建self aclTensor | 96 | // 创建self aclTensor |
| 97 | - ret = CreateAclTensor(data.selfHostData, data.selfShape, &data.selfDeviceAddr, aclDataType::ACL_DOUBLE, &data.self); | 97 | + ret = CreateAclTensor(data.selfHostData, data.selfShape, &data.selfDeviceAddr, aclDataType::ACL_FLOAT, &data.self); |
| 98 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 98 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 99 | // 创建other aclTensor | 99 | // 创建other aclTensor |
| 100 | ret = CreateAclTensor( | 100 | ret = CreateAclTensor( |
| 101 | - data.otherHostData, data.otherShape, &data.otherDeviceAddr, aclDataType::ACL_DOUBLE, &data.other); | 101 | + data.otherHostData, data.otherShape, &data.otherDeviceAddr, aclDataType::ACL_FLOAT, &data.other); |
| 102 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 102 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 103 | // 创建out aclTensor | 103 | // 创建out aclTensor |
| 104 | - ret = CreateAclTensor(data.outHostData, data.outShape, &data.outDeviceAddr, aclDataType::ACL_DOUBLE, &data.out); | 104 | + ret = CreateAclTensor(data.outHostData, data.outShape, &data.outDeviceAddr, aclDataType::ACL_FLOAT, &data.out); |
| 105 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 105 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 106 | 106 | ||
| 107 | return ret; | 107 | return ret; |
| @@ -138,7 +138,7 @@ int ProcessAndPrintResults(const LtTensorData& data) | |||
| 138 | { | 138 | { |
| 139 | auto ret = 0; | 139 | auto ret = 0; |
| 140 | auto size = GetShapeSize(data.outShape); | 140 | auto size = GetShapeSize(data.outShape); |
| 141 | - std::vector<double> resultData(size, 0); | 141 | + std::vector<float> resultData(size, 0); |
| 142 | ret = aclrtMemcpy( | 142 | ret = aclrtMemcpy( |
| 143 | resultData.data(), resultData.size() * sizeof(resultData[0]), data.outDeviceAddr, size * sizeof(resultData[0]), | 143 | resultData.data(), resultData.size() * sizeof(resultData[0]), data.outDeviceAddr, size * sizeof(resultData[0]), |
| 144 | ACL_MEMCPY_DEVICE_TO_HOST); | 144 | ACL_MEMCPY_DEVICE_TO_HOST); |
| @@ -88,13 +88,13 @@ int main() | |||
| 88 | void* outDeviceAddr = nullptr; | 88 | void* outDeviceAddr = nullptr; |
| 89 | aclTensor* self = nullptr; | 89 | aclTensor* self = nullptr; |
| 90 | aclTensor* out = nullptr; | 90 | aclTensor* out = nullptr; |
| 91 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 91 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 92 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 92 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 93 | // 创建self aclTensor | 93 | // 创建self aclTensor |
| 94 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 94 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 95 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 95 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 96 | // 创建out aclTensor | 96 | // 创建out aclTensor |
| 97 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 97 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 98 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 98 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 99 | 99 | ||
| 100 | // 3. 调用CANN算子库API | 100 | // 3. 调用CANN算子库API |
| @@ -119,7 +119,7 @@ int main() | |||
| 119 | 119 | ||
| 120 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 120 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 121 | auto size = GetShapeSize(outShape); | 121 | auto size = GetShapeSize(outShape); |
| 122 | - std::vector<double> resultData(size, 0); | 122 | + std::vector<float> resultData(size, 0); |
| 123 | ret = aclrtMemcpy( | 123 | ret = aclrtMemcpy( |
| 124 | resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(resultData[0]), | 124 | resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, size * sizeof(resultData[0]), |
| 125 | ACL_MEMCPY_DEVICE_TO_HOST); | 125 | ACL_MEMCPY_DEVICE_TO_HOST); |
| @@ -82,9 +82,9 @@ int main() { | |||
| 82 | void* outDeviceAddr = nullptr; | 82 | void* outDeviceAddr = nullptr; |
| 83 | aclTensor* self = nullptr; | 83 | aclTensor* self = nullptr; |
| 84 | aclTensor* out = nullptr; | 84 | aclTensor* out = nullptr; |
| 85 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 85 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 86 | // 创建self aclTensor | 86 | // 创建self aclTensor |
| 87 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 87 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 88 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 88 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 89 | 89 | ||
| 90 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 | 90 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 |
| @@ -109,7 +109,7 @@ int main() { | |||
| 109 | 109 | ||
| 110 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 110 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 111 | auto size = GetShapeSize(selfShape); | 111 | auto size = GetShapeSize(selfShape); |
| 112 | - std::vector<double> resultData(size, 0); | 112 | + std::vector<float> resultData(size, 0); |
| 113 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, | 113 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, |
| 114 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 114 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 115 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 115 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -83,14 +83,14 @@ int main() { | |||
| 83 | void* outDeviceAddr = nullptr; | 83 | void* outDeviceAddr = nullptr; |
| 84 | aclTensor* self = nullptr; | 84 | aclTensor* self = nullptr; |
| 85 | aclTensor* out = nullptr; | 85 | aclTensor* out = nullptr; |
| 86 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 86 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 87 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 87 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 88 | 88 | ||
| 89 | // 创建self aclTensor | 89 | // 创建self aclTensor |
| 90 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 90 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 92 | // 创建out aclTensor | 92 | // 创建out aclTensor |
| 93 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 93 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 94 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 94 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 95 | 95 | ||
| 96 | // 3. 调用CANN算子库API | 96 | // 3. 调用CANN算子库API |
| @@ -122,7 +122,7 @@ int main() { | |||
| 122 | // 5. 将device侧内存上的结果拷贝到host侧 | 122 | // 5. 将device侧内存上的结果拷贝到host侧 |
| 123 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 123 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 124 | auto size = GetShapeSize(outShape); | 124 | auto size = GetShapeSize(outShape); |
| 125 | - std::vector<double> resultData(size, 0); | 125 | + std::vector<float> resultData(size, 0); |
| 126 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, | 126 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, |
| 127 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 127 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 128 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 128 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -78,9 +78,9 @@ int main() { | |||
| 78 | std::vector<int64_t> selfShape = {4, 2}; | 78 | std::vector<int64_t> selfShape = {4, 2}; |
| 79 | void* selfDeviceAddr = nullptr; | 79 | void* selfDeviceAddr = nullptr; |
| 80 | aclTensor* selfRef = nullptr; | 80 | aclTensor* selfRef = nullptr; |
| 81 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 8}; | 81 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 8}; |
| 82 | // 创建self aclTensor | 82 | // 创建self aclTensor |
| 83 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &selfRef); | 83 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &selfRef); |
| 84 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 84 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 85 | 85 | ||
| 86 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 | 86 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 |
| @@ -103,7 +103,7 @@ int main() { | |||
| 103 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); | 103 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); |
| 104 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 104 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 105 | auto size = GetShapeSize(selfShape); | 105 | auto size = GetShapeSize(selfShape); |
| 106 | - std::vector<double> resultData(size, 0); | 106 | + std::vector<float> resultData(size, 0); |
| 107 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, | 107 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, |
| 108 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 108 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 109 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 109 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -82,13 +82,13 @@ int main() { | |||
| 82 | void* outDeviceAddr = nullptr; | 82 | void* outDeviceAddr = nullptr; |
| 83 | aclTensor* self = nullptr; | 83 | aclTensor* self = nullptr; |
| 84 | aclTensor* out = nullptr; | 84 | aclTensor* out = nullptr; |
| 85 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 85 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 86 | - std::vector<double> outHostData(8, 0); | 86 | + std::vector<float> outHostData(8, 0); |
| 87 | // 创建self aclTensor | 87 | // 创建self aclTensor |
| 88 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 88 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 89 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 89 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 90 | // 创建out aclTensor | 90 | // 创建out aclTensor |
| 91 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 91 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 92 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 92 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 93 | 93 | ||
| 94 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 | 94 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 |
| @@ -113,7 +113,7 @@ int main() { | |||
| 113 | 113 | ||
| 114 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 114 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 115 | auto size = GetShapeSize(outShape); | 115 | auto size = GetShapeSize(outShape); |
| 116 | - std::vector<double> resultData(size, 0); | 116 | + std::vector<float> resultData(size, 0); |
| 117 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, | 117 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, |
| 118 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 118 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 119 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 119 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -83,14 +83,14 @@ int main() { | |||
| 83 | void* outDeviceAddr = nullptr; | 83 | void* outDeviceAddr = nullptr; |
| 84 | aclTensor* self = nullptr; | 84 | aclTensor* self = nullptr; |
| 85 | aclTensor* out = nullptr; | 85 | aclTensor* out = nullptr; |
| 86 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 86 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 87 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 87 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 88 | 88 | ||
| 89 | // 创建self aclTensor | 89 | // 创建self aclTensor |
| 90 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 90 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 92 | // 创建out aclTensor | 92 | // 创建out aclTensor |
| 93 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 93 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 94 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 94 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 95 | 95 | ||
| 96 | // aclnnLog10接口调用示例 | 96 | // aclnnLog10接口调用示例 |
| @@ -114,7 +114,7 @@ int main() { | |||
| 114 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); | 114 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); |
| 115 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 115 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 116 | auto size = GetShapeSize(outShape); | 116 | auto size = GetShapeSize(outShape); |
| 117 | - std::vector<double> resultData(size, 0); | 117 | + std::vector<float> resultData(size, 0); |
| 118 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, | 118 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, |
| 119 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 119 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 120 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 120 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -82,13 +82,13 @@ int main() { | |||
| 82 | void* outDeviceAddr = nullptr; | 82 | void* outDeviceAddr = nullptr; |
| 83 | aclTensor* self = nullptr; | 83 | aclTensor* self = nullptr; |
| 84 | aclTensor* out = nullptr; | 84 | aclTensor* out = nullptr; |
| 85 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 85 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 86 | - std::vector<double> outHostData(8, 0); | 86 | + std::vector<float> outHostData(8, 0); |
| 87 | // 创建self aclTensor | 87 | // 创建self aclTensor |
| 88 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 88 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 89 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 89 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 90 | // 创建out aclTensor | 90 | // 创建out aclTensor |
| 91 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 91 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 92 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 92 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 93 | 93 | ||
| 94 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 | 94 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 |
| @@ -113,7 +113,7 @@ int main() { | |||
| 113 | 113 | ||
| 114 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 114 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 115 | auto size = GetShapeSize(outShape); | 115 | auto size = GetShapeSize(outShape); |
| 116 | - std::vector<double> resultData(size, 0); | 116 | + std::vector<float> resultData(size, 0); |
| 117 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, | 117 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, |
| 118 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 118 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 119 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 119 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -95,18 +95,18 @@ int main() | |||
| 95 | aclTensor *self = nullptr; | 95 | aclTensor *self = nullptr; |
| 96 | aclScalar *other = nullptr; | 96 | aclScalar *other = nullptr; |
| 97 | aclTensor *out = nullptr; | 97 | aclTensor *out = nullptr; |
| 98 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 98 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 99 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 99 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 100 | - double otherValue = 1.0f; | 100 | + float otherValue = 1.0f; |
| 101 | 101 | ||
| 102 | // 创建self aclTensor | 102 | // 创建self aclTensor |
| 103 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 103 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 104 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 104 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 105 | // 创建other aclScalar | 105 | // 创建other aclScalar |
| 106 | - other = aclCreateScalar(&otherValue, aclDataType::ACL_DOUBLE); | 106 | + other = aclCreateScalar(&otherValue, aclDataType::ACL_FLOAT); |
| 107 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 107 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 108 | // 创建out aclTensor | 108 | // 创建out aclTensor |
| 109 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 109 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 110 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 110 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 111 | 111 | ||
| 112 | // aclnnInplaceNeScalar调用示例 | 112 | // aclnnInplaceNeScalar调用示例 |
| @@ -130,7 +130,7 @@ int main() | |||
| 130 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); | 130 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); |
| 131 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 131 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 132 | auto size = GetShapeSize(selfShape); | 132 | auto size = GetShapeSize(selfShape); |
| 133 | - std::vector<double> resultData(size, 0); | 133 | + std::vector<float> resultData(size, 0); |
| 134 | ret = aclrtMemcpy(resultData.data(), | 134 | ret = aclrtMemcpy(resultData.data(), |
| 135 | resultData.size() * sizeof(resultData[0]), | 135 | resultData.size() * sizeof(resultData[0]), |
| 136 | selfDeviceAddr, | 136 | selfDeviceAddr, |
| @@ -96,18 +96,18 @@ int main() | |||
| 96 | aclTensor *self = nullptr; | 96 | aclTensor *self = nullptr; |
| 97 | aclTensor *other = nullptr; | 97 | aclTensor *other = nullptr; |
| 98 | aclTensor *out = nullptr; | 98 | aclTensor *out = nullptr; |
| 99 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 99 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 100 | - std::vector<double> otherHostData = {1, 1, 1, 2, 2, 2, 3, 3}; | 100 | + std::vector<float> otherHostData = {1, 1, 1, 2, 2, 2, 3, 3}; |
| 101 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 101 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 102 | 102 | ||
| 103 | // 创建self aclTensor | 103 | // 创建self aclTensor |
| 104 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 104 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 105 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 105 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 106 | // 创建other aclTensor | 106 | // 创建other aclTensor |
| 107 | - ret = CreateAclTensor(otherHostData, otherShape, &otherDeviceAddr, aclDataType::ACL_DOUBLE, &other); | 107 | + ret = CreateAclTensor(otherHostData, otherShape, &otherDeviceAddr, aclDataType::ACL_FLOAT, &other); |
| 108 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 108 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 109 | // 创建out aclTensor | 109 | // 创建out aclTensor |
| 110 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 110 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 111 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 111 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 112 | 112 | ||
| 113 | //aclnnInplaceNeTensor接口调用示例 | 113 | //aclnnInplaceNeTensor接口调用示例 |
| @@ -133,7 +133,7 @@ int main() | |||
| 133 | 133 | ||
| 134 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 134 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 135 | auto size = GetShapeSize(outShape); | 135 | auto size = GetShapeSize(outShape); |
| 136 | - std::vector<double> resultData(size, 0); | 136 | + std::vector<float> resultData(size, 0); |
| 137 | ret = aclrtMemcpy(resultData.data(), | 137 | ret = aclrtMemcpy(resultData.data(), |
| 138 | resultData.size() * sizeof(resultData[0]), selfDeviceAddr, | 138 | resultData.size() * sizeof(resultData[0]), selfDeviceAddr, |
| 139 | size * sizeof(resultData[0]), | 139 | size * sizeof(resultData[0]), |
| @@ -95,18 +95,18 @@ int main() | |||
| 95 | aclTensor *self = nullptr; | 95 | aclTensor *self = nullptr; |
| 96 | aclScalar *other = nullptr; | 96 | aclScalar *other = nullptr; |
| 97 | aclTensor *out = nullptr; | 97 | aclTensor *out = nullptr; |
| 98 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 98 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 99 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 99 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 100 | - double otherValue = 1.0f; | 100 | + float otherValue = 1.0f; |
| 101 | 101 | ||
| 102 | // 创建self aclTensor | 102 | // 创建self aclTensor |
| 103 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 103 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 104 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 104 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 105 | // 创建other aclScalar | 105 | // 创建other aclScalar |
| 106 | - other = aclCreateScalar(&otherValue, aclDataType::ACL_DOUBLE); | 106 | + other = aclCreateScalar(&otherValue, aclDataType::ACL_FLOAT); |
| 107 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 107 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 108 | // 创建out aclTensor | 108 | // 创建out aclTensor |
| 109 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 109 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 110 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 110 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 111 | 111 | ||
| 112 | // aclnnNeScalar调用示例 | 112 | // aclnnNeScalar调用示例 |
| @@ -130,7 +130,7 @@ int main() | |||
| 130 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); | 130 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); |
| 131 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 131 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 132 | auto size = GetShapeSize(selfShape); | 132 | auto size = GetShapeSize(selfShape); |
| 133 | - std::vector<double> resultData(size, 0); | 133 | + std::vector<float> resultData(size, 0); |
| 134 | ret = aclrtMemcpy(resultData.data(), | 134 | ret = aclrtMemcpy(resultData.data(), |
| 135 | resultData.size() * sizeof(resultData[0]), | 135 | resultData.size() * sizeof(resultData[0]), |
| 136 | outDeviceAddr, | 136 | outDeviceAddr, |
| @@ -96,18 +96,18 @@ int main() | |||
| 96 | aclTensor *self = nullptr; | 96 | aclTensor *self = nullptr; |
| 97 | aclTensor *other = nullptr; | 97 | aclTensor *other = nullptr; |
| 98 | aclTensor *out = nullptr; | 98 | aclTensor *out = nullptr; |
| 99 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 99 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 100 | - std::vector<double> otherHostData = {1, 1, 1, 2, 2, 2, 3, 3}; | 100 | + std::vector<float> otherHostData = {1, 1, 1, 2, 2, 2, 3, 3}; |
| 101 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 101 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 102 | 102 | ||
| 103 | // 创建self aclTensor | 103 | // 创建self aclTensor |
| 104 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 104 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 105 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 105 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 106 | // 创建other aclTensor | 106 | // 创建other aclTensor |
| 107 | - ret = CreateAclTensor(otherHostData, otherShape, &otherDeviceAddr, aclDataType::ACL_DOUBLE, &other); | 107 | + ret = CreateAclTensor(otherHostData, otherShape, &otherDeviceAddr, aclDataType::ACL_FLOAT, &other); |
| 108 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 108 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 109 | // 创建out aclTensor | 109 | // 创建out aclTensor |
| 110 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 110 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 111 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 111 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 112 | 112 | ||
| 113 | // aclnnNeTensor接口调用示例 | 113 | // aclnnNeTensor接口调用示例 |
| @@ -133,7 +133,7 @@ int main() | |||
| 133 | 133 | ||
| 134 | // 5. 获取输出的值,将Device侧内存上的结果拷贝至Host侧 | 134 | // 5. 获取输出的值,将Device侧内存上的结果拷贝至Host侧 |
| 135 | auto size = GetShapeSize(outShape); | 135 | auto size = GetShapeSize(outShape); |
| 136 | - std::vector<double> resultData(size, 0); | 136 | + std::vector<float> resultData(size, 0); |
| 137 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, | 137 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, |
| 138 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 138 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 139 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 139 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -143,5 +143,5 @@ ge::graphStatus PowTensorScalarTiling::PostTiling() | |||
| 143 | return ge::GRAPH_SUCCESS; | 143 | return ge::GRAPH_SUCCESS; |
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | -REGISTER_TILING_TEMPLATE("Pow", PowTensorScalarTiling, 0); | 146 | +REGISTER_OPS_TILING_TEMPLATE(Pow, PowTensorScalarTiling, 0); |
| 147 | } // namespace optiling | 147 | } // namespace optiling |
| @@ -210,5 +210,5 @@ ge::graphStatus PowTensorTensorTiling::PostTiling() | |||
| 210 | return ge::GRAPH_SUCCESS; | 210 | return ge::GRAPH_SUCCESS; |
| 211 | } | 211 | } |
| 212 | 212 | ||
| 213 | -REGISTER_TILING_TEMPLATE("Pow", PowTensorTensorTiling, 1); | 213 | +REGISTER_OPS_TILING_TEMPLATE(Pow, PowTensorTensorTiling, 1); |
| 214 | } // namespace optiling | 214 | } // namespace optiling |
| @@ -101,14 +101,14 @@ int main() { | |||
| 101 | aclTensor* self = nullptr; | 101 | aclTensor* self = nullptr; |
| 102 | aclTensor* out = nullptr; | 102 | aclTensor* out = nullptr; |
| 103 | 103 | ||
| 104 | - std::vector<double> selfHostData = {2, 3, 5, 8, 4, 12, 6, 7, 5, 3, 7, 6}; | 104 | + std::vector<float> selfHostData = {2, 3, 5, 8, 4, 12, 6, 7, 5, 3, 7, 6}; |
| 105 | - std::vector<double> outHostData = {4.5, 7.25, 5.25}; | 105 | + std::vector<float> outHostData = {4.5, 7.25, 5.25}; |
| 106 | 106 | ||
| 107 | // 创建self aclTensor | 107 | // 创建self aclTensor |
| 108 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 108 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 109 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 109 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 110 | // 创建out aclTensor | 110 | // 创建out aclTensor |
| 111 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 111 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 112 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 112 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 113 | 113 | ||
| 114 | // 3. 调用CANN算子库API | 114 | // 3. 调用CANN算子库API |
| @@ -133,7 +133,7 @@ int main() { | |||
| 133 | 133 | ||
| 134 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 134 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 135 | auto size = GetShapeSize(outShape); | 135 | auto size = GetShapeSize(outShape); |
| 136 | - std::vector<double> resultData(size, 0); | 136 | + std::vector<float> resultData(size, 0); |
| 137 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), | 137 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), |
| 138 | outDeviceAddr, size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 138 | outDeviceAddr, size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 139 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy resultData from device to host failed. ERROR: %d\n", ret); return ret); | 139 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy resultData from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -81,18 +81,18 @@ int PrepareInputAndOutput( | |||
| 81 | std::vector<int64_t>& selfShape, std::vector<int64_t>& outShape, void** selfDeviceAddr, aclTensor** self, aclIntArray** dim, | 81 | std::vector<int64_t>& selfShape, std::vector<int64_t>& outShape, void** selfDeviceAddr, aclTensor** self, aclIntArray** dim, |
| 82 | void** outDeviceAddr, aclTensor** out) | 82 | void** outDeviceAddr, aclTensor** out) |
| 83 | { | 83 | { |
| 84 | - std::vector<int64_t> selfHostData = {2, 3, 5, 8, 4, 12, 6, 7}; | 84 | + std::vector<float> selfHostData = {2, 3, 5, 8, 4, 12, 6, 7}; |
| 85 | - std::vector<int64_t> outHostData = {2, 3, 5, 8}; | 85 | + std::vector<float> outHostData = {2, 3, 5, 8}; |
| 86 | std::vector<int64_t> dimData = {1, 2}; | 86 | std::vector<int64_t> dimData = {1, 2}; |
| 87 | 87 | ||
| 88 | // 创建self aclTensor | 88 | // 创建self aclTensor |
| 89 | - auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_INT64, self); | 89 | + auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 90 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 90 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 91 | // 创建dim aclIntArray | 91 | // 创建dim aclIntArray |
| 92 | ret = CreateAclIntArray(dimData, dim); | 92 | ret = CreateAclIntArray(dimData, dim); |
| 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 94 | // 创建out aclTensor | 94 | // 创建out aclTensor |
| 95 | - ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_INT64, out); | 95 | + ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_FLOAT, out); |
| 96 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 96 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 97 | 97 | ||
| 98 | return ACL_SUCCESS; | 98 | return ACL_SUCCESS; |
| @@ -145,7 +145,7 @@ int main() { | |||
| 145 | bool keepdim = false; | 145 | bool keepdim = false; |
| 146 | aclOpExecutor* executor; | 146 | aclOpExecutor* executor; |
| 147 | // 调用aclnnMean第一段接口 | 147 | // 调用aclnnMean第一段接口 |
| 148 | - ret = aclnnMeanGetWorkspaceSize(self, dim, keepdim, aclDataType::ACL_INT64, out, &workspaceSize, &executor); | 148 | + ret = aclnnMeanGetWorkspaceSize(self, dim, keepdim, aclDataType::ACL_FLOAT, out, &workspaceSize, &executor); |
| 149 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclnnMeanGetWorkspaceSize failed. ERROR: %d\n", ret); return ret); | 149 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclnnMeanGetWorkspaceSize failed. ERROR: %d\n", ret); return ret); |
| 150 | // 根据第一段接口计算出的workspaceSize申请device内存 | 150 | // 根据第一段接口计算出的workspaceSize申请device内存 |
| 151 | void* workspaceAddr = nullptr; | 151 | void* workspaceAddr = nullptr; |
| @@ -73,18 +73,18 @@ int PrepareInputAndOutput( | |||
| 73 | std::vector<int64_t>& selfShape, std::vector<int64_t>& outShape, void** selfDeviceAddr, aclTensor** self, aclIntArray** dim, | 73 | std::vector<int64_t>& selfShape, std::vector<int64_t>& outShape, void** selfDeviceAddr, aclTensor** self, aclIntArray** dim, |
| 74 | void** outDeviceAddr, aclTensor** out) | 74 | void** outDeviceAddr, aclTensor** out) |
| 75 | { | 75 | { |
| 76 | - std::vector<int64_t> selfHostData = {2, 3, 5, 8, 4, 12, 6, 7}; | 76 | + std::vector<float> selfHostData = {2, 3, 5, 8, 4, 12, 6, 7}; |
| 77 | - std::vector<int64_t> outHostData = {2, 3, 5, 8}; | 77 | + std::vector<float> outHostData = {2, 3, 5, 8}; |
| 78 | std::vector<int64_t> dimData = {1, 2}; | 78 | std::vector<int64_t> dimData = {1, 2}; |
| 79 | 79 | ||
| 80 | // 创建self aclTensor | 80 | // 创建self aclTensor |
| 81 | - auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_INT64, self); | 81 | + auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 82 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 82 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 83 | // 创建dim aclIntArray | 83 | // 创建dim aclIntArray |
| 84 | *dim = aclCreateIntArray(dimData.data(), 1); | 84 | *dim = aclCreateIntArray(dimData.data(), 1); |
| 85 | CHECK_RET(ret == ACL_SUCCESS, return false); | 85 | CHECK_RET(ret == ACL_SUCCESS, return false); |
| 86 | // 创建out aclTensor | 86 | // 创建out aclTensor |
| 87 | - ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_INT64, out); | 87 | + ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_FLOAT, out); |
| 88 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 88 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 89 | 89 | ||
| 90 | return ACL_SUCCESS; | 90 | return ACL_SUCCESS; |
| @@ -85,14 +85,14 @@ int main() { | |||
| 85 | aclTensor* self = nullptr; | 85 | aclTensor* self = nullptr; |
| 86 | aclTensor* out = nullptr; | 86 | aclTensor* out = nullptr; |
| 87 | 87 | ||
| 88 | - std::vector<double> selfHostData = {1.1, 2.8, 3.5}; | 88 | + std::vector<float> selfHostData = {1.1, 2.8, 3.5}; |
| 89 | - std::vector<double> outHostData = {0, 0, 0}; | 89 | + std::vector<float> outHostData = {0, 0, 0}; |
| 90 | 90 | ||
| 91 | // 创建self aclTensor | 91 | // 创建self aclTensor |
| 92 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 92 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 94 | // 创建out aclTensor | 94 | // 创建out aclTensor |
| 95 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 95 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 96 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 96 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 97 | 97 | ||
| 98 | uint64_t workspaceSize = 0; | 98 | uint64_t workspaceSize = 0; |
| @@ -115,7 +115,7 @@ int main() { | |||
| 115 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); | 115 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); |
| 116 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 116 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 117 | auto size = GetShapeSize(outShape); | 117 | auto size = GetShapeSize(outShape); |
| 118 | - std::vector<double> resultData(size, 0); | 118 | + std::vector<float> resultData(size, 0); |
| 119 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, | 119 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, |
| 120 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 120 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 121 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 121 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -82,15 +82,15 @@ int main() { | |||
| 82 | void* outDeviceAddr = nullptr; | 82 | void* outDeviceAddr = nullptr; |
| 83 | aclTensor* self = nullptr; | 83 | aclTensor* self = nullptr; |
| 84 | aclTensor* out = nullptr; | 84 | aclTensor* out = nullptr; |
| 85 | - std::vector<double> selfHostData = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7,0.8}; | 85 | + std::vector<float> selfHostData = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7,0.8}; |
| 86 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 86 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 87 | int decimals = 0; | 87 | int decimals = 0; |
| 88 | 88 | ||
| 89 | // 创建self aclTensor | 89 | // 创建self aclTensor |
| 90 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 90 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 92 | // 创建out aclTensor | 92 | // 创建out aclTensor |
| 93 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 93 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 94 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 94 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 95 | 95 | ||
| 96 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 | 96 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 |
| @@ -115,7 +115,7 @@ int main() { | |||
| 115 | 115 | ||
| 116 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 116 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 117 | auto size = GetShapeSize(outShape); | 117 | auto size = GetShapeSize(outShape); |
| 118 | - std::vector<double> resultData(size, 0); | 118 | + std::vector<float> resultData(size, 0); |
| 119 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, | 119 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), selfDeviceAddr, |
| 120 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 120 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 121 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 121 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -85,14 +85,14 @@ int main() { | |||
| 85 | aclTensor* self = nullptr; | 85 | aclTensor* self = nullptr; |
| 86 | aclTensor* out = nullptr; | 86 | aclTensor* out = nullptr; |
| 87 | 87 | ||
| 88 | - std::vector<double> selfHostData = {1.1, 2.8, 3.5}; | 88 | + std::vector<float> selfHostData = {1.1, 2.8, 3.5}; |
| 89 | - std::vector<double> outHostData = {0, 0, 0}; | 89 | + std::vector<float> outHostData = {0, 0, 0}; |
| 90 | 90 | ||
| 91 | // 创建self aclTensor | 91 | // 创建self aclTensor |
| 92 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 92 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 94 | // 创建out aclTensor | 94 | // 创建out aclTensor |
| 95 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 95 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 96 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 96 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 97 | 97 | ||
| 98 | uint64_t workspaceSize = 0; | 98 | uint64_t workspaceSize = 0; |
| @@ -115,7 +115,7 @@ int main() { | |||
| 115 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); | 115 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("aclrtSynchronizeStream failed. ERROR: %d\n", ret); return ret); |
| 116 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 116 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 117 | auto size = GetShapeSize(outShape); | 117 | auto size = GetShapeSize(outShape); |
| 118 | - std::vector<double> resultData(size, 0); | 118 | + std::vector<float> resultData(size, 0); |
| 119 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, | 119 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, |
| 120 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 120 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 121 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 121 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -82,15 +82,15 @@ int main() { | |||
| 82 | void* outDeviceAddr = nullptr; | 82 | void* outDeviceAddr = nullptr; |
| 83 | aclTensor* self = nullptr; | 83 | aclTensor* self = nullptr; |
| 84 | aclTensor* out = nullptr; | 84 | aclTensor* out = nullptr; |
| 85 | - std::vector<double> selfHostData = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7,0.8}; | 85 | + std::vector<float> selfHostData = {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7,0.8}; |
| 86 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 86 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 87 | int decimals = 0; | 87 | int decimals = 0; |
| 88 | 88 | ||
| 89 | // 创建self aclTensor | 89 | // 创建self aclTensor |
| 90 | - ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_DOUBLE, &self); | 90 | + ret = CreateAclTensor(selfHostData, selfShape, &selfDeviceAddr, aclDataType::ACL_FLOAT, &self); |
| 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 91 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 92 | // 创建out aclTensor | 92 | // 创建out aclTensor |
| 93 | - ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_DOUBLE, &out); | 93 | + ret = CreateAclTensor(outHostData, outShape, &outDeviceAddr, aclDataType::ACL_FLOAT, &out); |
| 94 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 94 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 95 | 95 | ||
| 96 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 | 96 | // 3. 调用CANN算子库API,需要修改为具体的Api名称 |
| @@ -115,7 +115,7 @@ int main() { | |||
| 115 | 115 | ||
| 116 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 | 116 | // 5. 获取输出的值,将device侧内存上的结果拷贝至host侧,需要根据具体API的接口定义修改 |
| 117 | auto size = GetShapeSize(outShape); | 117 | auto size = GetShapeSize(outShape); |
| 118 | - std::vector<double> resultData(size, 0); | 118 | + std::vector<float> resultData(size, 0); |
| 119 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, | 119 | ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, |
| 120 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 120 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 121 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); | 121 | CHECK_RET(ret == ACL_SUCCESS, LOG_PRINT("copy result from device to host failed. ERROR: %d\n", ret); return ret); |
| @@ -104,7 +104,7 @@ int ExecuteInplaceSinh(aclTensor* self, aclrtStream stream) { | |||
| 104 | int PrintResults(void* outDeviceAddr, std::vector<int64_t>& outShape, | 104 | int PrintResults(void* outDeviceAddr, std::vector<int64_t>& outShape, |
| 105 | void* selfDeviceAddr, std::vector<int64_t>& selfShape) { | 105 | void* selfDeviceAddr, std::vector<int64_t>& selfShape) { |
| 106 | auto size = GetShapeSize(outShape); | 106 | auto size = GetShapeSize(outShape); |
| 107 | - std::vector<double> resultData(size, 0); | 107 | + std::vector<float> resultData(size, 0); |
| 108 | int ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, | 108 | int ret = aclrtMemcpy(resultData.data(), resultData.size() * sizeof(resultData[0]), outDeviceAddr, |
| 109 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); | 109 | size * sizeof(resultData[0]), ACL_MEMCPY_DEVICE_TO_HOST); |
| 110 | if (ret != ACL_SUCCESS) return ret; | 110 | if (ret != ACL_SUCCESS) return ret; |
| @@ -114,9 +114,9 @@ int PrintResults(void* outDeviceAddr, std::vector<int64_t>& outShape, | |||
| 114 | } | 114 | } |
| 115 | 115 | ||
| 116 | auto inplaceSize = GetShapeSize(selfShape); | 116 | auto inplaceSize = GetShapeSize(selfShape); |
| 117 | - std::vector<double> inplaceResultData(inplaceSize, 0); | 117 | + std::vector<float> inplaceResultData(inplaceSize, 0); |
| 118 | ret = aclrtMemcpy(inplaceResultData.data(), inplaceResultData.size() * sizeof(inplaceResultData[0]), | 118 | ret = aclrtMemcpy(inplaceResultData.data(), inplaceResultData.size() * sizeof(inplaceResultData[0]), |
| 119 | - selfDeviceAddr, inplaceSize * sizeof(double), ACL_MEMCPY_DEVICE_TO_HOST); | 119 | + selfDeviceAddr, inplaceSize * sizeof(float), ACL_MEMCPY_DEVICE_TO_HOST); |
| 120 | if (ret != ACL_SUCCESS) return ret; | 120 | if (ret != ACL_SUCCESS) return ret; |
| 121 | 121 | ||
| 122 | for (int64_t i = 0; i < inplaceSize; i++) { | 122 | for (int64_t i = 0; i < inplaceSize; i++) { |
| @@ -130,14 +130,14 @@ int CreateInputOutputTensors(aclTensor** self, aclTensor** out, | |||
| 130 | void** selfDeviceAddr, void** outDeviceAddr) { | 130 | void** selfDeviceAddr, void** outDeviceAddr) { |
| 131 | std::vector<int64_t> selfShape = {4, 2}; | 131 | std::vector<int64_t> selfShape = {4, 2}; |
| 132 | std::vector<int64_t> outShape = {4, 2}; | 132 | std::vector<int64_t> outShape = {4, 2}; |
| 133 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 133 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 134 | - std::vector<double> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; | 134 | + std::vector<float> outHostData = {0, 0, 0, 0, 0, 0, 0, 0}; |
| 135 | 135 | ||
| 136 | // 创建self aclTensor | 136 | // 创建self aclTensor |
| 137 | - int ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_DOUBLE, self); | 137 | + int ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 138 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 138 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 139 | // 创建out aclTensor | 139 | // 创建out aclTensor |
| 140 | - ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_DOUBLE, out); | 140 | + ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_FLOAT, out); |
| 141 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 141 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 142 | 142 | ||
| 143 | return ACL_SUCCESS; | 143 | return ACL_SUCCESS; |
| @@ -85,14 +85,14 @@ aclError CreateInputs( | |||
| 85 | void** selfDeviceAddr, void** otherDeviceAddr, void** outDeviceAddr, aclTensor** self, aclTensor** other, | 85 | void** selfDeviceAddr, void** otherDeviceAddr, void** outDeviceAddr, aclTensor** self, aclTensor** other, |
| 86 | aclTensor** out) | 86 | aclTensor** out) |
| 87 | { | 87 | { |
| 88 | - std::vector<double> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 88 | + std::vector<float> selfHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 89 | - std::vector<double> otherHostData = {0, 1, 2, 3, 4, 5, 6, 7}; | 89 | + std::vector<float> otherHostData = {0, 1, 2, 3, 4, 5, 6, 7}; |
| 90 | std::vector<char> outHostData = {0}; | 90 | std::vector<char> outHostData = {0}; |
| 91 | 91 | ||
| 92 | - auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_DOUBLE, self); | 92 | + auto ret = CreateAclTensor(selfHostData, selfShape, selfDeviceAddr, aclDataType::ACL_FLOAT, self); |
| 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 93 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 94 | 94 | ||
| 95 | - ret = CreateAclTensor(otherHostData, otherShape, otherDeviceAddr, aclDataType::ACL_DOUBLE, other); | 95 | + ret = CreateAclTensor(otherHostData, otherShape, otherDeviceAddr, aclDataType::ACL_FLOAT, other); |
| 96 | CHECK_RET(ret == ACL_SUCCESS, return ret); | 96 | CHECK_RET(ret == ACL_SUCCESS, return ret); |
| 97 | 97 | ||
| 98 | ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_BOOL, out); | 98 | ret = CreateAclTensor(outHostData, outShape, outDeviceAddr, aclDataType::ACL_BOOL, out); |