!4 (fix) 安全编码检视

Merge pull request !4 from 刘成举-liuchengju/master
This commit is contained in:
HuaweiAscend
2020-09-01 14:49:07 +08:00
committed by Gitee
7 changed files with 539 additions and 701 deletions
Executable → Regular
+6 -7
View File
@@ -1,5 +1,3 @@
//Model_process.h
/**
* @file model_process.h
*
@@ -9,11 +7,12 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
#pragma once
#include "utils.h"
#ifndef _MODEL_PROCESS_H_
#define _MODEL_PROCESS_H_
#include "acl/acl.h"
#include "utils.h"
#include <string>
using namespace std;
/**
* ModelProcess
*/
@@ -34,7 +33,7 @@ public:
* @param [in] modelPath: model path
* @return result
*/
Result LoadModelFromFileWithMem(const char *modelPath);
Result LoadModelFromFileWithMem(const std::string& modelPath);
/**
* @brief unload model
@@ -103,7 +102,6 @@ public:
*/
void OutputModelResult(std::string& s, std::string& modelName, size_t index);
private:
uint32_t modelId_;
size_t modelMemSize_;
@@ -117,3 +115,4 @@ private:
size_t numInputs_;
size_t numOutputs_;
};
#endif
Executable → Regular
+5 -6
View File
@@ -1,5 +1,3 @@
//Sample_process.h
/**
* @file sample_process.h
*
@@ -9,12 +7,12 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
#pragma once
#include "utils.h"
#ifndef _SAMPLE_PROCESS_H_
#define _SAMPLE_PROCESS_H_
#include "acl/acl.h"
#include "utils.h"
#include <stdio.h>
using namespace std;
/**
* SampleProcess
*/
@@ -40,7 +38,7 @@ public:
* @brief sample process
* @return result
*/
Result Process(map<char,string>& params, vector<string>& inputs);
Result Process(std::map<char, std::string>& params, std::vector<std::string>& inputs);
private:
void DestroyResource();
@@ -49,3 +47,4 @@ private:
aclrtContext context_;
aclrtStream stream_;
};
#endif
Executable → Regular
+19 -22
View File
@@ -1,5 +1,3 @@
//Util.h
/**
* @file utils.h
*
@@ -9,36 +7,35 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
#pragma once
#include <iostream>
#include <sstream>
#include <fstream>
#include <cstring>
#include <string>
#include <map>
#include <vector>
#ifndef _UTILS_H_
#define _UTILS_H_
#include <algorithm>
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <cstddef>
#include <cstring>
#include <dirent.h>
#include <fstream>
#include <iostream>
#include <map>
#include <sstream>
#include <stdio.h>
#include <string>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
#include <time.h>
#include <vector>
#define INFO_LOG(fmt, args...) fprintf(stdout, "[INFO] " fmt "\n", ##args)
#define DEBUG_LOG(fmt, args...) fprintf(stdout, "[DEBUG] " fmt "\n", ##args)
#define WARN_LOG(fmt, args...) fprintf(stdout, "[WARN] " fmt "\n", ##args)
#define ERROR_LOG(fmt, args...) fprintf(stdout, "[ERROR] " fmt "\n", ##args)
using namespace std;
//static size_t loop = 1;
typedef enum Result {
SUCCESS = 0,
FAILED = 1
} Result;
/**
* Utils
*/
@@ -64,7 +61,7 @@ public:
static int str2num(char* str);
static std::string modelName(string& s);
static std::string modelName(std::string& s);
static std::string TimeLine();
@@ -78,9 +75,9 @@ public:
static double InferenceTimeAverageWithoutFirst(double* x, int len);
static void ProfilerJson(bool isprof, map<char,string>& params);
static void ProfilerJson(bool isprof, std::map<char, std::string>& params);
static void DumpJson(bool isdump, map<char,string>& params);
static void DumpJson(bool isdump, std::map<char, std::string>& params);
};
#pragma once
#endif
Executable → Regular
+5 -21
View File
@@ -13,7 +13,6 @@
#include <getopt.h>
using namespace std;
bool f_isTXT = false;
bool g_isDevice = false;
int loop = 1;
@@ -26,7 +25,6 @@ string model_Ftype = ".om";
string check = "";
void InitAndCheckParams(int argc, char* argv[], map<char, string>& params, vector<string>& inputs)
//void InitAndCheckParams(int argc, char* argv[], vector<string>& params, vector<string>& inputs)
{
const char* optstring = "m::i::o::f::hd::p::l::y::e::g::";
int c, deb, index;
@@ -42,18 +40,14 @@ void InitAndCheckParams(int argc, char* argv[], map<char,string>& params, vector
{ "device", required_argument, NULL, 'e' },
{ "debug", required_argument, NULL, 'g' },
{ 0, 0, 0, 0 } };
while((c=getopt_long(argc,argv,optstring,opts,&index))!=-1)
{
switch(c)
{
while ((c = getopt_long(argc, argv, optstring, opts, &index)) != -1) {
switch (c) {
case 'm':
check = optarg;
if (check.find(model_Ftype) != string::npos) {
// params.push_back(optarg);
params['m'] = optarg;
break;
}
else {
} else {
printf("input model file type is not .om , please check your model type!\n");
exit(0);
}
@@ -63,16 +57,13 @@ void InitAndCheckParams(int argc, char* argv[], map<char,string>& params, vector
printf("input data file type is not .bin , please check your input file type!\n");
exit(0);
}
// params.push_back(optarg);
params['i'] = optarg;
Utils::SplitString(params['i'], inputs, ',');
break;
case 'o':
// params.push_back(optarg);
params['o'] = optarg;
break;
case 'f':
// params.push_back(optarg);
params['f'] = optarg;
break;
case '?':
@@ -81,31 +72,26 @@ void InitAndCheckParams(int argc, char* argv[], map<char,string>& params, vector
Utils::printHelpLetter();
exit(0);
case 'd':
// params.push_back(optarg);
params['d'] = optarg;
break;
case 'p':
// params.push_back(optarg);
params['p'] = optarg;
break;
case 'l':
loop = Utils::str2num(optarg);
cout << "loop:" << loop << endl;
if (loop > 100 || loop < 1)
{
if (loop > 100 || loop < 1) {
printf("loop must in 1 to 100\n");
exit(0);
}
break;
case 'y':
// params.push_back(optarg);
params['y'] = optarg;
break;
case 'e':
device = Utils::str2num(optarg);
cout << "device:" << device << endl;
if (device > 255 || device < 0)
{
if (device > 255 || device < 0) {
printf("device id must in 0 to 255\n");
exit(0);
}
@@ -128,13 +114,11 @@ void InitAndCheckParams(int argc, char* argv[], map<char,string>& params, vector
int main(int argc, char* argv[])
{
map<char, string> params;
// vector<string> params;
vector<string> inputs;
InitAndCheckParams(argc, argv, params, inputs);
printf("******************************\n");
printf("Test Start!\n");
if (params.empty()) {
printf("Invalid params.\n");
printf("Execute sample failed.\n");
Executable → Regular
+91 -157
View File
@@ -11,18 +11,27 @@
*/
#include "model_process.h"
#include "utils.h"
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <cstddef>
#include <dirent.h>
#include <sys/stat.h>
#include <sys/types.h>
using namespace std;
extern bool g_isDevice;
extern bool f_isTXT;
ModelProcess::ModelProcess() :modelId_(0), modelMemSize_(0), modelWeightSize_(0), modelMemPtr_(nullptr),
modelWeightPtr_(nullptr), loadFlag_(false), modelDesc_(nullptr), input_(nullptr), output_(nullptr), numInputs_(0),
numOutputs_(0)
ModelProcess::ModelProcess()
: modelId_(0)
, modelMemSize_(0)
, modelWeightSize_(0)
, modelMemPtr_(nullptr)
, modelWeightPtr_(nullptr)
, loadFlag_(false)
, modelDesc_(nullptr)
, input_(nullptr)
, output_(nullptr)
, numInputs_(0)
, numOutputs_(0)
{
}
@@ -34,16 +43,16 @@ ModelProcess::~ModelProcess()
DestroyOutput();
}
Result ModelProcess::LoadModelFromFileWithMem(const char *modelPath)
Result ModelProcess::LoadModelFromFileWithMem(const string& modelPath)
{
if (loadFlag_) {
ERROR_LOG("has already loaded a model");
return FAILED;
}
aclError ret = aclmdlQuerySize(modelPath, &modelMemSize_, &modelWeightSize_);
aclError ret = aclmdlQuerySize(modelPath.c_str(), &modelMemSize_, &modelWeightSize_);
if (ret != ACL_ERROR_NONE) {
ERROR_LOG("query model failed, model file is %s", modelPath);
ERROR_LOG("query model failed, model file is %s", modelPath.c_str());
return FAILED;
}
@@ -59,15 +68,15 @@ Result ModelProcess::LoadModelFromFileWithMem(const char *modelPath)
return FAILED;
}
ret = aclmdlLoadFromFileWithMem(modelPath, &modelId_, modelMemPtr_,
ret = aclmdlLoadFromFileWithMem(modelPath.c_str(), &modelId_, modelMemPtr_,
modelMemSize_, modelWeightPtr_, modelWeightSize_);
if (ret != ACL_ERROR_NONE) {
ERROR_LOG("load model from file failed, model file is %s", modelPath);
ERROR_LOG("load model from file failed, model file is %s", modelPath.c_str());
return FAILED;
}
loadFlag_ = true;
INFO_LOG("load model %s success", modelPath);
INFO_LOG("load model %s success", modelPath.c_str());
return SUCCESS;
}
@@ -91,7 +100,8 @@ Result ModelProcess::CreateDesc()
}
Result ModelProcess::PrintDesc()
{ aclError ret;
{
aclError ret;
DEBUG_LOG("start print model description");
size_t numInputs = aclmdlGetNumInputs(modelDesc_);
size_t numOutputs = aclmdlGetNumOutputs(modelDesc_);
@@ -165,8 +175,6 @@ Result ModelProcess::PrintDesc()
return SUCCESS;
}
void ModelProcess::DestroyDesc()
{
if (modelDesc_ != nullptr) {
@@ -201,7 +209,8 @@ Result ModelProcess::CreateInput(void *inputDataBuffer, size_t bufferSize)
return SUCCESS;
}
Result ModelProcess::CreateZeroInput(){
Result ModelProcess::CreateZeroInput()
{
if (input_ == nullptr) {
input_ = aclmdlCreateDataset();
if (input_ == nullptr) {
@@ -242,7 +251,6 @@ Result ModelProcess::CreateInput(void *inputDataBuffer, size_t bufferSize)
memset(inBufferDev, 0, buffer_size_zero);
}
aclDataBuffer* inputData = aclCreateDataBuffer(inBufferDev, buffer_size_zero);
if (inputData == nullptr) {
ERROR_LOG("can't create data buffer, create input failed");
@@ -320,59 +328,7 @@ Result ModelProcess::CreateOutput()
INFO_LOG("create model output success");
return SUCCESS;
}
/*
void ModelProcess::DumpModelOutputResult()
{
stringstream ss;
size_t outputNum = aclmdlGetDatasetNumBuffers(output_);
static int executeNum = 0;
for (size_t i = 0; i < outputNum; ++i) {
ss << "output" << ++executeNum << "_" << i << ".bin";
string outputFileName = ss.str();
FILE *outputFile = fopen(outputFileName.c_str(), "wb");
if (outputFile) {
aclDataBuffer* dataBuffer = aclmdlGetDatasetBuffer(output_, i);
void* data = aclGetDataBufferAddr(dataBuffer);
uint32_t len = aclGetDataBufferSize(dataBuffer);
void* outHostData = NULL;
aclError ret = ACL_ERROR_NONE;
if (!g_isDevice) {
ret = aclrtMallocHost(&outHostData, len);
if (ret != ACL_ERROR_NONE) {
ERROR_LOG("aclrtMallocHost failed, ret[%d]", ret);
return;
}
ret = aclrtMemcpy(outHostData, len, data, len, ACL_MEMCPY_DEVICE_TO_HOST);
if (ret != ACL_ERROR_NONE) {
ERROR_LOG("aclrtMemcpy failed, ret[%d]", ret);
(void)aclrtFreeHost(outHostData);
return;
}
fwrite(outHostData, len, sizeof(char), outputFile);
ret = aclrtFreeHost(outHostData);
if (ret != ACL_ERROR_NONE) {
ERROR_LOG("aclrtFreeHost failed, ret[%d]", ret);
return;
}
} else {
fwrite(data, len, sizeof(char), outputFile);
}
fclose(outputFile);
outputFile = nullptr;
} else {
ERROR_LOG("create output file [%s] failed", outputFileName.c_str());
return;
}
}
INFO_LOG("dump data success");
return;
}
*/
void ModelProcess::OutputModelResult(std::string& s, std::string& modelName, size_t index)
{
const char* temp_s = s.c_str();
@@ -380,14 +336,11 @@ void ModelProcess::OutputModelResult(std::string& s,std::string& modelName,size_
mkdir(temp_s, 0775);
}
std::string T = Utils::TimeLine();
//std::string t = s.c_str()+"/"+T.c_str();
//const char* time = t.c_str();
string times = s + "/" + T + "_" + to_string(index);
const char* time = times.c_str();
cout << time << endl;
mkdir(time, 0775);
if (NULL == opendir(time))
{
if (NULL == opendir(time)) {
ERROR_LOG("current user does not have permission");
exit(0);
}
@@ -406,8 +359,7 @@ void ModelProcess::OutputModelResult(std::string& s,std::string& modelName,size_
ERROR_LOG("aclrtMallocHost failed, ret[%d]", ret);
return;
}
}
else {
} 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);
@@ -436,8 +388,7 @@ void ModelProcess::OutputModelResult(std::string& s,std::string& modelName,size_
ERROR_LOG("aclrtMemcpy failed, ret[%d]", ret);
return;
}
switch (datatype)
{
switch (datatype) {
case 0:
outData = reinterpret_cast<float*>(outHostData);
break;
@@ -482,152 +433,138 @@ void ModelProcess::OutputModelResult(std::string& s,std::string& modelName,size_
} else {
outData = reinterpret_cast<float*>(data);
}
if (f_isTXT)
{
if (f_isTXT) {
ofstream outstr(times + "/" + modelName + "_output_" + to_string(i) + ".txt", ios::out);
switch (datatype)
{
switch (datatype) {
case 0:
for (int i = 0; i < len/sizeof(float); i++)
{
for (int i = 0; i < len / sizeof(float); i++) {
float out = *((float*)outData + i);
outstr << out << " ";
for (int j = 0; j < dim->dimCount; j++)
{
if (i !=0 && i%dim->dims[j] == 0 && dim->dims[j] > 10)
{outstr << "\n" ;}
for (int j = 0; j < dim->dimCount; j++) {
if (i != 0 && i % dim->dims[j] == 0 && dim->dims[j] > 10) {
outstr << "\n";
}
}
}
break;
case 1:
for (int i = 0; i < len/sizeof(aclFloat16); i++)
{
for (int i = 0; i < len / sizeof(aclFloat16); i++) {
aclFloat16 out = *((aclFloat16*)outData + i);
outstr << out << " ";
for (int j = 0; j < dim->dimCount; j++)
{
if (i !=0 && i%dim->dims[j] == 0 && dim->dims[j] > 10)
{outstr << "\n" ;}
for (int j = 0; j < dim->dimCount; j++) {
if (i != 0 && i % dim->dims[j] == 0 && dim->dims[j] > 10) {
outstr << "\n";
}
}
}
break;
case 2:
for (int i = 0; i < len/sizeof(int8_t); i++)
{
for (int i = 0; i < len / sizeof(int8_t); i++) {
int8_t out = *((int8_t*)outData + i);
outstr << out << " ";
for (int j = 0; j < dim->dimCount; j++)
{
if (i !=0 && i%dim->dims[j] == 0 && dim->dims[j] > 10)
{outstr << "\n" ;}
for (int j = 0; j < dim->dimCount; j++) {
if (i != 0 && i % dim->dims[j] == 0 && dim->dims[j] > 10) {
outstr << "\n";
}
}
}
break;
case 3:
for (int i = 0; i < len/sizeof(int); i++)
{
for (int i = 0; i < len / sizeof(int); i++) {
int out = *((int*)outData + i);
outstr << out << " ";
for (int j = 0; j < dim->dimCount; j++)
{
if (i !=0 && i%dim->dims[j] == 0 && dim->dims[j] > 10)
{outstr << "\n" ;}
for (int j = 0; j < dim->dimCount; j++) {
if (i != 0 && i % dim->dims[j] == 0 && dim->dims[j] > 10) {
outstr << "\n";
}
}
}
break;
case 4:
for (int i = 0; i < len/sizeof(uint8_t); i++)
{
for (int i = 0; i < len / sizeof(uint8_t); i++) {
uint8_t out = *((uint8_t*)outData + i);
outstr << out << " ";
for (int j = 0; j < dim->dimCount; j++)
{
if (i !=0 && i%dim->dims[j] == 0 && dim->dims[j] > 10)
{outstr << "\n" ;}
for (int j = 0; j < dim->dimCount; j++) {
if (i != 0 && i % dim->dims[j] == 0 && dim->dims[j] > 10) {
outstr << "\n";
}
}
}
break;
case 6:
for (int i = 0; i < len/sizeof(int16_t); i++)
{
for (int i = 0; i < len / sizeof(int16_t); i++) {
int16_t out = *((int16_t*)outData + i);
outstr << out << " ";
for (int j = 0; j < dim->dimCount; j++)
{
if (i !=0 && i%dim->dims[j] == 0 && dim->dims[j] > 10)
{outstr << "\n" ;}
for (int j = 0; j < dim->dimCount; j++) {
if (i != 0 && i % dim->dims[j] == 0 && dim->dims[j] > 10) {
outstr << "\n";
}
}
}
break;
case 7:
for (int i = 0; i < len/sizeof(uint16_t); i++)
{
for (int i = 0; i < len / sizeof(uint16_t); i++) {
uint16_t out = *((uint16_t*)outData + i);
outstr << out << " ";
for (int j = 0; j < dim->dimCount; j++)
{
if (i !=0 && i%dim->dims[j] == 0 && dim->dims[j] > 10)
{outstr << "\n" ;}
for (int j = 0; j < dim->dimCount; j++) {
if (i != 0 && i % dim->dims[j] == 0 && dim->dims[j] > 10) {
outstr << "\n";
}
}
}
break;
case 8:
for (int i = 0; i < len/sizeof(uint32_t); i++)
{
for (int i = 0; i < len / sizeof(uint32_t); i++) {
uint32_t out = *((uint32_t*)outData + i);
outstr << out << " ";
for (int j = 0; j < dim->dimCount; j++)
{
if (i !=0 && i%dim->dims[j] == 0 && dim->dims[j] > 10)
{outstr << "\n" ;}
for (int j = 0; j < dim->dimCount; j++) {
if (i != 0 && i % dim->dims[j] == 0 && dim->dims[j] > 10) {
outstr << "\n";
}
}
}
break;
case 9:
for (int i = 0; i < len/sizeof(int64_t); i++)
{
for (int i = 0; i < len / sizeof(int64_t); i++) {
int64_t out = *((int64_t*)outData + i);
outstr << out << " ";
for (int j = 0; j < dim->dimCount; j++)
{
if (i !=0 && i%dim->dims[j] == 0 && dim->dims[j] > 10)
{outstr << "\n" ;}
for (int j = 0; j < dim->dimCount; j++) {
if (i != 0 && i % dim->dims[j] == 0 && dim->dims[j] > 10) {
outstr << "\n";
}
}
}
break;
case 10:
for (int i = 0; i < len/sizeof(uint64_t); i++)
{
for (int i = 0; i < len / sizeof(uint64_t); i++) {
uint64_t out = *((uint64_t*)outData + i);
outstr << out << " ";
for (int j = 0; j < dim->dimCount; j++)
{
if (i !=0 && i%dim->dims[j] == 0 && dim->dims[j] > 10)
{outstr << "\n" ;}
for (int j = 0; j < dim->dimCount; j++) {
if (i != 0 && i % dim->dims[j] == 0 && dim->dims[j] > 10) {
outstr << "\n";
}
}
}
break;
case 11:
for (int i = 0; i < len/sizeof(double); i++)
{
for (int i = 0; i < len / sizeof(double); i++) {
double out = *((double*)outData + i);
outstr << out << " ";
for (int j = 0; j < dim->dimCount; j++)
{
if (i !=0 && i%dim->dims[j] == 0 && dim->dims[j] > 10)
{outstr << "\n" ;}
for (int j = 0; j < dim->dimCount; j++) {
if (i != 0 && i % dim->dims[j] == 0 && dim->dims[j] > 10) {
outstr << "\n";
}
}
}
break;
case 12:
for (int i = 0; i < len/sizeof(bool); i++)
{
for (int i = 0; i < len / sizeof(bool); i++) {
int out = *((bool*)outData + i);
outstr << out << " ";
for (int j = 0; j < dim->dimCount; j++)
{
if (i !=0 && i%dim->dims[j] == 0 && dim->dims[j] > 10)
{outstr << "\n" ;}
for (int j = 0; j < dim->dimCount; j++) {
if (i != 0 && i % dim->dims[j] == 0 && dim->dims[j] > 10) {
outstr << "\n";
}
}
}
break;
@@ -636,16 +573,13 @@ void ModelProcess::OutputModelResult(std::string& s,std::string& modelName,size_
break;
}
outstr.close();
}
else
{
} else {
ofstream outstr(times + "/" + modelName + "_output_" + to_string(i) + ".bin", ios::out | ios::binary);
outstr.write((char*)outData, len);
outstr.close();
}
if (!g_isDevice) {
ret = aclrtFreeHost(outHostData);
if (ret != ACL_ERROR_NONE) {
Executable → Regular
+10 -57
View File
@@ -10,8 +10,8 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
#include "sample_process.h"
#include "model_process.h"
#include "acl/acl.h"
#include "model_process.h"
#include "utils.h"
using namespace std;
extern bool g_isDevice;
@@ -22,8 +22,10 @@ extern bool is_debug;
extern bool is_profi;
extern bool is_dump;
SampleProcess::SampleProcess() :deviceId_(0), context_(nullptr), stream_(nullptr)
SampleProcess::SampleProcess()
: deviceId_(0)
, context_(nullptr)
, stream_(nullptr)
{
}
@@ -39,20 +41,10 @@ Result SampleProcess::InitResource()
const char* aclConfigPath = "acl.json";
if (is_profi == true) {
ret = aclInit(aclConfigPath);
} else
{
} else {
ret = aclInit(nullptr);
}
if (ret != ACL_ERROR_NONE) {
/* if (is_debug || is_profi){
if (remove("acl.json")==0){
INFO_LOG("delete acl.json success");
}
else{
ERROR_LOG("delete acl.json failed");
}
}
*/
ERROR_LOG("acl init failed");
return FAILED;
}
@@ -93,16 +85,6 @@ Result SampleProcess::InitResource()
g_isDevice = (runMode == ACL_DEVICE);
INFO_LOG("get run mode success");
/* // dump init
if (is_dump == true){
ret = aclmdlInitDump();
if (ret != ACL_ERROR_NONE) {
ERROR_LOG("dump init failed");
return FAILED;
}
INFO_LOG("dump init success");
}
*/
return SUCCESS;
}
@@ -110,7 +92,7 @@ Result SampleProcess::Process(map<char,string>& params, vector<string>& input_fi
{
// model init
ModelProcess processModel;
const char* omModelPath = params['m'].c_str();
const std::string& omModelPath = params['m'];
std::string output_path = params['o'].c_str();
const char* outfmt = params['f'].c_str();
const char* fmt_TXT = "TXT";
@@ -133,17 +115,7 @@ Result SampleProcess::Process(map<char,string>& params, vector<string>& input_fi
ERROR_LOG("create model description failed");
return FAILED;
}
/* // dump init
if (is_dump){
const char *aclConfigPath = "acl.json";
ret = aclmdlSetDump(aclConfigPath);
if (ret != SUCCESS) {
ERROR_LOG("dump init failed");
return FAILED;
}
INFO_LOG("dump init success");
}
*/
if (is_debug) {
ret = processModel.PrintDesc();
if (ret != SUCCESS) {
@@ -163,8 +135,7 @@ Result SampleProcess::Process(map<char,string>& params, vector<string>& input_fi
ERROR_LOG("model create input failed");
return FAILED;
}
}
else {
} else {
vector<void*> picDevBuffer(input_files.size(), nullptr);
for (size_t index = 0; index < input_files.size(); ++index) {
INFO_LOG("start to process file:%s", input_files[index].c_str());
@@ -193,9 +164,6 @@ Result SampleProcess::Process(map<char,string>& params, vector<string>& input_fi
std::cout << "Inference time: " << inference_time[t] << "ms" << endl;
if (ret != SUCCESS) {
ERROR_LOG("model execute failed");
// for (size_t i = 0; i < input_files.size(); i++) {
// aclrtFree(picDevBuffer[i]);
// }
return FAILED;
}
processModel.OutputModelResult(output_path, modelName, t);
@@ -211,17 +179,11 @@ Result SampleProcess::Process(map<char,string>& params, vector<string>& input_fi
if (is_dump || is_profi) {
if (remove("acl.json") == 0) {
INFO_LOG("delete acl.json success");
}
else{
} else {
ERROR_LOG("delete acl.json failed");
}
}
// release model input buffer
// for (size_t i = 0; i < input_files.size(); i++) {
// aclrtFree(picDevBuffer[i]);
// }
return SUCCESS;
}
@@ -252,18 +214,9 @@ void SampleProcess::DestroyResource()
}
INFO_LOG("end to reset device is %d", deviceId_);
/* if (is_dump){
ret = aclmdlFinalizeDump();
if (ret != ACL_ERROR_NONE) {
ERROR_LOG("finalize dump failed");
}
}
INFO_LOG("end to finalize dump");
*/
ret = aclFinalize();
if (ret != ACL_ERROR_NONE) {
ERROR_LOG("finalize acl failed");
}
INFO_LOG("end to finalize acl");
}
Executable → Regular
+12 -40
View File
@@ -10,8 +10,8 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
#include "utils.h"
#include <sys/time.h>
#include "acl/acl.h"
#include <sys/time.h>
using namespace std;
extern bool g_isDevice;
extern bool f_isTXT;
@@ -100,8 +100,7 @@ void Utils::SplitString(std::string& s, std::vector<std::string>& v, char c)
std::string::size_type pos1, pos2;
pos2 = s.find(c);
pos1 = 0;
while(std::string::npos != pos2)
{
while (std::string::npos != pos2) {
std::string s1 = s.substr(pos1, pos2 - pos1);
size_t n = s1.find_last_not_of(" \r\n\t");
if (n != string::npos) {
@@ -115,8 +114,7 @@ void Utils::SplitString(std::string& s, std::vector<std::string>& v, char c)
pos1 = pos2 + 1;
pos2 = s.find(c, pos1);
}
if(pos1 != s.length())
{
if (pos1 != s.length()) {
std::string s1 = s.substr(pos1);
size_t n = s1.find_last_not_of(" \r\n\t");
if (n != string::npos) {
@@ -134,13 +132,11 @@ int Utils::str2num(char *str)
{
int n = 0;
int flag = 0;
while(*str >= '0' && *str <= '9')
{
while (*str >= '0' && *str <= '9') {
n = n * 10 + (*str - '0');
str++;
}
if(flag == 1)
{
if (flag == 1) {
n = -n;
}
return n;
@@ -150,8 +146,7 @@ std::string Utils::modelName(string& s)
{
string::size_type position1, position2;
position1 = s.find_last_of("/");
if (position1 == s.npos)
{
if (position1 == s.npos) {
position1 = 0;
}
position2 = s.find_last_of(".");
@@ -173,19 +168,19 @@ void Utils::printCurrentTime()
char szBuf[256] = { 0 };
struct timeval tv;
struct timezone tz;
struct tm *p;
struct tm* p = nullptr;
gettimeofday(&tv, &tz);
p = localtime(&tv.tv_sec);
printf("%02d-%02d-%02d %02d:%02d:%02d.%06ld\n", p->tm_year + 1900, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec, tv.tv_usec);
}
void Utils::printHelpLetter()
{
cout << endl;
cout << "Usage:" << endl;
cout << "generate offline model inference output file example:" << endl;
cout<< "./msame --model /home/HwHiAiUser/ljj/colorization.om --input /home/HwHiAiUser/ljj/colorization_input.bin --output /home/HwHiAiUser/ljj/AMEXEC/out/output1 --outfmt TXT --loop 2" << endl << endl;
cout << "./msame --model /home/HwHiAiUser/ljj/colorization.om --input /home/HwHiAiUser/ljj/colorization_input.bin --output /home/HwHiAiUser/ljj/AMEXEC/out/output1 --outfmt TXT --loop 2" << endl
<< endl;
cout << "arguments explain:" << endl;
cout << " --model Model file path" << endl;
@@ -197,14 +192,11 @@ void Utils::printHelpLetter()
cout << " --profiler Enable profiler (true or false)" << endl;
cout << " --device Designated the device ID(must in 0 to 255)" << endl;
cout << " --debug Debug switch,print model information (true or false)" << endl;
cout<< " --dymBatch dynamic batch (Do not support now)" << endl << endl << endl;
// cout<< "NOTECE: " << endl;
// cout<< " The order of parameter must follow in --model --input --output --outfmt --loop " << endl;
cout << " --dymBatch dynamic batch (Do not support now)" << endl
<< endl
<< endl;
}
double Utils::printDiffTime(time_t begin, time_t end)
{
double diffT = difftime(begin, end);
@@ -240,8 +232,6 @@ void Utils::ProfilerJson(bool isprof, map<char,string>& params)
outstr << "{\n\"profiler\": {\n \"switch\": \"on\",\n \"device_id\": \"";
outstr << device << "\",\n \"result_path\": \"" << out_profiler_path << "\",\n ";
outstr << "\"ai_core_metrics\": \"\"}\n}";
//outstr << "\"ai_core_metrics\": \"aicorePipelineStall\"}\n}";
//outstr <<"}]n}";
outstr.close();
//mkdir profiler output dir
@@ -253,15 +243,6 @@ void Utils::ProfilerJson(bool isprof, map<char,string>& params)
if (NULL == opendir(temp_s1)) {
mkdir(temp_s1, 0775);
}
/*{
"profiler": {
"switch": "on",
"device_id": "all",
"result_path": "/home/HwHiAiUser",
"ai_core_metrics": "aicorePipelineStall"
}
}
*/
}
}
@@ -289,14 +270,5 @@ void Utils::DumpJson(bool isdump, map<char,string>& params)
if (NULL == opendir(temp_s1)) {
mkdir(temp_s1, 0775);
}
// {
// "dump": {
// "dump_path": "output_path",
// "dump_mode": "output",
// "dump_list": [{
// "model_name": "model_name",
// }]
// }
// }
}
}