ArmNN
 21.02
CommandLineProcessor Class Reference

#include <CommandLineProcessor.hpp>

Public Member Functions

bool ProcessCommandLine (int argc, char *argv[])
 
std::string GetInputFileName ()
 
std::string GetCsvFileName ()
 
std::string GetCsvFileDirectory ()
 
std::string GetOutputDirectoryName ()
 
std::string GetOutputFileName ()
 
std::string GetQuantizationScheme ()
 
QuantizationDataSet GetQuantizationDataSet ()
 
bool HasPreservedDataType ()
 
bool HasQuantizationData ()
 

Protected Attributes

std::string m_InputFileName
 
std::string m_CsvFileName
 
std::string m_CsvFileDirectory
 
std::string m_OutputDirectory
 
std::string m_OutputFileName
 
std::string m_QuantizationScheme
 
QuantizationDataSet m_QuantizationDataSet
 
bool m_PreserveDataType
 

Detailed Description

Definition at line 25 of file CommandLineProcessor.hpp.

Member Function Documentation

◆ GetCsvFileDirectory()

std::string GetCsvFileDirectory ( )
inline

◆ GetCsvFileName()

std::string GetCsvFileName ( )
inline

◆ GetInputFileName()

std::string GetInputFileName ( )
inline

Definition at line 30 of file CommandLineProcessor.hpp.

References CommandLineProcessor::m_InputFileName.

Referenced by main().

◆ GetOutputDirectoryName()

std::string GetOutputDirectoryName ( )
inline

Definition at line 33 of file CommandLineProcessor.hpp.

References CommandLineProcessor::m_OutputDirectory.

Referenced by main().

◆ GetOutputFileName()

std::string GetOutputFileName ( )
inline

Definition at line 34 of file CommandLineProcessor.hpp.

References CommandLineProcessor::m_OutputFileName.

Referenced by main().

◆ GetQuantizationDataSet()

QuantizationDataSet GetQuantizationDataSet ( )
inline

Definition at line 36 of file CommandLineProcessor.hpp.

References CommandLineProcessor::m_QuantizationDataSet.

Referenced by main().

◆ GetQuantizationScheme()

std::string GetQuantizationScheme ( )
inline

◆ HasPreservedDataType()

bool HasPreservedDataType ( )
inline

◆ HasQuantizationData()

bool HasQuantizationData ( )
inline

◆ ProcessCommandLine()

bool ProcessCommandLine ( int  argc,
char *  argv[] 
)

Definition at line 84 of file CommandLineProcessor.cpp.

References CommandLineProcessor::m_CsvFileDirectory, CommandLineProcessor::m_CsvFileName, CommandLineProcessor::m_InputFileName, CommandLineProcessor::m_OutputDirectory, CommandLineProcessor::m_OutputFileName, CommandLineProcessor::m_PreserveDataType, CommandLineProcessor::m_QuantizationDataSet, CommandLineProcessor::m_QuantizationScheme, armnnQuantizer::ValidateOutputDirectory(), armnnQuantizer::ValidateProvidedFile(), and armnnQuantizer::ValidateQuantizationScheme().

Referenced by main().

85 {
86  try
87  {
88  cxxopts::Options options("ArmnnQuantizer","Convert a Fp32 ArmNN model to a quantized ArmNN model.");
89 
90  options.add_options()
91  ("h,help", "Display help messages")
92  ("f,infile",
93  "Input file containing float 32 ArmNN Input Graph",
94  cxxopts::value<std::string>(m_InputFileName))
95  ("s,scheme",
96  "Quantization scheme,"
97  " \"QAsymmU8\" or \"QAsymmS8\" or \"QSymm16\","
98  " default value QAsymmU8",
99  cxxopts::value<std::string>(m_QuantizationScheme)->default_value("QAsymmU8"))
100  ("c,csvfile",
101  "CSV file containing paths for RAW input tensors",
102  cxxopts::value<std::string>(m_CsvFileName)->default_value(""))
103  ("p,preserve-data-type",
104  "Preserve the input and output data types",
105  cxxopts::value<bool>(m_PreserveDataType)->default_value("false"))
106  ("d,outdir",
107  "Directory that output file will be written to",
108  cxxopts::value<std::string>(m_OutputDirectory))
109  ("o,outfile",
110  "ArmNN output file name",
111  cxxopts::value<std::string>(m_OutputFileName));
112 
113  auto result = options.parse(argc, argv);
114 
115  if (result.count("help") > 0 || argc <= 1)
116  {
117  std::cout << options.help() << std::endl;
118  return false;
119  }
120 
121  // Check for mandatory single options.
122  std::string mandatorySingleParameters[] = { "infile", "outdir", "outfile" };
123  for (auto param : mandatorySingleParameters)
124  {
125  if (result.count(param) != 1)
126  {
127  std::cerr << "Parameter \'--" << param << "\' is required but missing." << std::endl;
128  return false;
129  }
130  }
131  }
132  catch (const cxxopts::OptionException& e)
133  {
134  std::cerr << e.what() << std::endl << std::endl;
135  return false;
136  }
137  catch (const std::exception& e)
138  {
139  std::cerr << "Fatal internal error: [" << e.what() << "]" << std::endl;
140  return false;
141  }
142 
144  {
145  return false;
146  }
147 
149  {
150  return false;
151  }
152 
153  if (m_CsvFileName != "")
154  {
156  {
157  return false;
158  }
159  else
160  {
161  fs::path csvFilePath(m_CsvFileName);
162  m_CsvFileDirectory = csvFilePath.parent_path().c_str();
163  }
164 
165  // If CSV file is defined, create a QuantizationDataSet for specified CSV file.
166  m_QuantizationDataSet = QuantizationDataSet(m_CsvFileName);
167  }
168 
170  {
171  return false;
172  }
173 
174  std::string output(m_OutputDirectory);
175  output.append(m_OutputFileName);
176 
177  if (fs::exists(output))
178  {
179  std::cerr << "Output file [" << output << "] already exists" << std::endl;
180  return false;
181  }
182 
183  return true;
184 }
bool ValidateQuantizationScheme(const std::string &scheme)
bool ValidateOutputDirectory(std::string &dir)
bool ValidateProvidedFile(const std::string &inputFileName)

Member Data Documentation

◆ m_CsvFileDirectory

std::string m_CsvFileDirectory
protected

◆ m_CsvFileName

std::string m_CsvFileName
protected

◆ m_InputFileName

std::string m_InputFileName
protected

◆ m_OutputDirectory

std::string m_OutputDirectory
protected

◆ m_OutputFileName

std::string m_OutputFileName
protected

◆ m_PreserveDataType

bool m_PreserveDataType
protected

◆ m_QuantizationDataSet

◆ m_QuantizationScheme

std::string m_QuantizationScheme
protected

The documentation for this class was generated from the following files: