From a555727b3260584deb515652ebaf8a85d9754191 Mon Sep 17 00:00:00 2001 From: chen <501339635@qq.com> Date: Tue, 7 Jul 2020 14:36:25 +0800 Subject: [PATCH] add without first average time --- amexec/build.sh | 2 +- amexec/inc/utils.h | 2 ++ amexec/out/amexec | Bin 99888 -> 97776 bytes amexec/src/model_process.cpp | 20 +++++++++++++++----- amexec/src/sample_process.cpp | 7 +++++-- amexec/src/utils.cpp | 16 ++++++++++++++-- 6 files changed, 37 insertions(+), 10 deletions(-) diff --git a/amexec/build.sh b/amexec/build.sh index d6052fd..3399fa8 100755 --- a/amexec/build.sh +++ b/amexec/build.sh @@ -1,7 +1,7 @@ rm -rf build mkdir -p build/intermediates/host cd build/intermediates/host -cmake ../../../src -DCMAKE_CXX_COMPILER=g++ -DCMAKE_SKIP_RPATH=TRUE +cmake ../../../src -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_SKIP_RPATH=TRUE make cd ../../../out mv main amexec diff --git a/amexec/inc/utils.h b/amexec/inc/utils.h index f5d8d2c..6fc942c 100755 --- a/amexec/inc/utils.h +++ b/amexec/inc/utils.h @@ -70,6 +70,8 @@ public: static double printDiffTime(time_t begin, time_t end); static double InferenceTimeAverage(double *x, int len); + + static double InferenceTimeAverageWithoutFirst(double *x, int len); }; #pragma once diff --git a/amexec/out/amexec b/amexec/out/amexec index 2f4ccb034adb6290083c52245a220ff8a59dddb2..6673ffb6e55aaea283270b2cdfdeabe9293ec3a9 100755 GIT binary patch literal 97776 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℞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 axB`1O{*bi`jIO`@V+QlST!Y+g<$nQK%Bcqc diff --git a/amexec/src/model_process.cpp b/amexec/src/model_process.cpp index 4f01763..8711298 100755 --- a/amexec/src/model_process.cpp +++ b/amexec/src/model_process.cpp @@ -260,11 +260,21 @@ void ModelProcess::OutputModelResult(std::string& s,std::string& modelName,size_ aclDataType datatype = aclmdlGetOutputDataType(modelDesc_, i); void *dims = nullptr; aclmdlIODims *dim = nullptr; - aclError ret = aclrtMallocHost(&dims, sizeof(aclmdlIODims)); - if (ret != ACL_ERROR_NONE) { - ERROR_LOG("aclrtMallocHost failed, ret[%d]", ret); - return; - } + aclError ret = ACL_ERROR_NONE; + if (!g_isDevice) { + ret = aclrtMallocHost(&dims, sizeof(aclmdlIODims)); + if (ret != ACL_ERROR_NONE) { + ERROR_LOG("aclrtMallocHost failed, ret[%d]", ret); + return; + } + } + else { + ret = aclrtMalloc(&dims, sizeof(aclmdlIODims), ACL_MEM_MALLOC_NORMAL_ONLY); + if (ret != ACL_ERROR_NONE) { + ERROR_LOG("malloc device buffer failed, ret[%d]", ret); + return; + } + } dim = reinterpret_cast(dims); ret = aclmdlGetOutputDims(modelDesc_, i, dim); if (ret != ACL_ERROR_NONE) { diff --git a/amexec/src/sample_process.cpp b/amexec/src/sample_process.cpp index cbdc214..4186c29 100755 --- a/amexec/src/sample_process.cpp +++ b/amexec/src/sample_process.cpp @@ -64,7 +64,7 @@ Result SampleProcess::InitResource() // get run mode aclrtRunMode runMode; - ret = aclrtGetRunMode(&runMode); + ret = aclrtGetRunMode(&runMode); if (ret != ACL_ERROR_NONE) { ERROR_LOG("acl get run mode failed"); return FAILED; @@ -151,7 +151,10 @@ Result SampleProcess::Process(vector& params, vector& input_file } double infer_time_ave = Utils::InferenceTimeAverage(inference_time, loop); printf("Inference average time: %f ms\n", infer_time_ave); - + if (loop > 1){ + double infer_time_ave_without_first = Utils::InferenceTimeAverageWithoutFirst(inference_time, loop); + printf("Inference average time without first time: %f ms\n", infer_time_ave_without_first); + } processModel.DestroyInput(); // release model input buffer diff --git a/amexec/src/utils.cpp b/amexec/src/utils.cpp index 2941a9c..528c64d 100755 --- a/amexec/src/utils.cpp +++ b/amexec/src/utils.cpp @@ -51,6 +51,7 @@ void* Utils::ReadBinFile(std::string fileName, uint32_t &fileSize) return nullptr; } } + binFile.read(static_cast(binFileBufferData), binFileBufferLen); binFile.close(); fileSize = binFileBufferLen; @@ -180,7 +181,7 @@ double Utils::printDiffTime(time_t begin, time_t end) { double diffT = difftime(begin, end); printf("The inference time is: %f millisecond\n", 1000*diffT); - return diffT*1000; + return diffT * 1000; } double Utils::InferenceTimeAverage(double *x, int len) @@ -188,5 +189,16 @@ double Utils::InferenceTimeAverage(double *x, int len) double sum = 0; for (int i = 0; i < len; i++) sum += x[i]; - return sum/len; + return sum / len; +} + +double Utils::InferenceTimeAverageWithoutFirst(double *x, int len) +{ + double sum = 0; + for (int i = 0; i < len; i++) + if (i !=0){ + sum += x[i]; + } + + return sum / (len - 1); }