rename amexec

This commit is contained in:
chen68
2020-08-23 22:57:46 -07:00
parent 519a1f947f
commit 1698ac5c77
13 changed files with 2 additions and 2 deletions
+181
View File
@@ -0,0 +1,181 @@
//main.cpp
/**
* @file main.cpp
*
* Copyright (C) 2020. Huawei Technologies Co., Ltd. All rights reserved.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
#include "sample_process.h"
#include "utils.h"
#include<getopt.h>
using namespace std;
bool f_isTXT = false;
bool g_isDevice = false;
int loop = 1;
int32_t device = 0;
bool is_profi = false;
bool is_dump = false;
bool is_debug = false;
string input_Ftype = ".bin";
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;
struct option opts[]={{"model",required_argument,NULL,'m'},
{"input",required_argument,NULL,'i'},
{"output",required_argument,NULL,'o'},
{"outfmt",required_argument,NULL,'f'},
{"help",no_argument,NULL,1},
{"dump",required_argument,NULL,'d'},
{"profiler",required_argument,NULL,'p'},
{"loop",required_argument,NULL,'l'},
{"dymBatch",required_argument,NULL,'y'},
{"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)
{
case 'm':
check = optarg;
if (check.find(model_Ftype) != string::npos){
// params.push_back(optarg);
params['m'] = optarg;
break;
}
else {
printf("input model file type is not .om , please check your model type!\n");
exit(0);
}
case 'i':
check = optarg;
if (check.find(input_Ftype) == string::npos){
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 '?':
printf("unknown paramenter\n");
printf("Execute sample failed.\n");
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)
{
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)
{
printf("device id must in 0 to 255\n");
exit(0);
}
break;
case 'g':
params['g'] = optarg;
break;
case 1:
Utils::printHelpLetter();
exit(0);
default:
printf("unknown paramenter\n");
printf("Execute sample failed.\n");
Utils::printHelpLetter();
exit(0);
}
}
}
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");
Utils::printHelpLetter();
return FAILED;
}
if (params['d'].compare("true") == 0) {
is_dump = true;
}
if (params['p'].compare("true") == 0) {
is_profi = true;
}
if (params['g'].compare("true") == 0) {
is_debug = true;
}
if (is_profi && is_dump){
ERROR_LOG("dump and profiler can not both be true");
return FAILED;
}
Utils::ProfilerJson(is_profi, params);
Utils::DumpJson(is_dump, params);
SampleProcess processSample;
Result ret = processSample.InitResource();
if (ret != SUCCESS) {
ERROR_LOG("Sample init resource failed.");
return FAILED;
}
ret = processSample.Process(params, inputs);
if (ret != SUCCESS) {
ERROR_LOG("Sample process failed.");
return FAILED;
}
INFO_LOG("Execute sample success.");
printf("Test Finish!\n");
printf("******************************\n");
return SUCCESS;
}