xref: /aosp_15_r20/external/clpeak/src/options.cpp (revision 1cd03ba3888297bc945f2c84574e105e3ced3e34)
1*1cd03ba3SJeremy Kemp #include <clpeak.h>
2*1cd03ba3SJeremy Kemp 
3*1cd03ba3SJeremy Kemp #define DEFAULT_XML_FILE_NAME "clpeak_results.xml"
4*1cd03ba3SJeremy Kemp 
5*1cd03ba3SJeremy Kemp static const char *helpStr =
6*1cd03ba3SJeremy Kemp     "\n clpeak [OPTIONS]"
7*1cd03ba3SJeremy Kemp     "\n"
8*1cd03ba3SJeremy Kemp     "\n OPTIONS:"
9*1cd03ba3SJeremy Kemp     "\n  -p, --platform num          choose platform (num starts with 0)"
10*1cd03ba3SJeremy Kemp     "\n  -d, --device num            choose device (num starts with 0)"
11*1cd03ba3SJeremy Kemp     "\n  -pn, --platformName name    choose platform name"
12*1cd03ba3SJeremy Kemp     "\n  -dn, --deviceName name      choose device name"
13*1cd03ba3SJeremy Kemp     "\n  -tn, --testName name        choose test name"
14*1cd03ba3SJeremy Kemp     "\n  --use-event-timer           time using cl events instead of std chrono timer"
15*1cd03ba3SJeremy Kemp     "\n                              hide driver latencies [default: No]"
16*1cd03ba3SJeremy Kemp     "\n  --global-bandwidth          selectively run global bandwidth test"
17*1cd03ba3SJeremy Kemp     "\n  --compute-hp                selectively run half precision compute test"
18*1cd03ba3SJeremy Kemp     "\n  --compute-sp                selectively run single precision compute test"
19*1cd03ba3SJeremy Kemp     "\n  --compute-dp                selectively run double precision compute test"
20*1cd03ba3SJeremy Kemp     "\n  --compute-integer           selectively run integer compute test"
21*1cd03ba3SJeremy Kemp     "\n  --compute-intfast           selectively run integer 24bit compute test"
22*1cd03ba3SJeremy Kemp     "\n  --compute-char              selectively run char (integer 8bit) compute test"
23*1cd03ba3SJeremy Kemp     "\n  --compute-short             selectively run short (integer 16bit) compute test"
24*1cd03ba3SJeremy Kemp     "\n  --transfer-bandwidth        selectively run transfer bandwidth test"
25*1cd03ba3SJeremy Kemp     "\n  --kernel-latency            selectively run kernel latency test"
26*1cd03ba3SJeremy Kemp     "\n  --all-tests                 run all above tests [default]"
27*1cd03ba3SJeremy Kemp     "\n  --enable-xml-dump           Dump results to xml file"
28*1cd03ba3SJeremy Kemp     "\n  -f, --xml-file file_name    specify file name for xml dump"
29*1cd03ba3SJeremy Kemp     "\n  -v, --version               display version"
30*1cd03ba3SJeremy Kemp     "\n  -h, --help                  display help message"
31*1cd03ba3SJeremy Kemp     "\n";
32*1cd03ba3SJeremy Kemp 
parseArgs(int argc,char ** argv)33*1cd03ba3SJeremy Kemp int clPeak::parseArgs(int argc, char **argv)
34*1cd03ba3SJeremy Kemp {
35*1cd03ba3SJeremy Kemp   bool forcedTests = false;
36*1cd03ba3SJeremy Kemp   bool enableXml = false;
37*1cd03ba3SJeremy Kemp   string xmlFileName;
38*1cd03ba3SJeremy Kemp 
39*1cd03ba3SJeremy Kemp   for (int i = 1; i < argc; i++)
40*1cd03ba3SJeremy Kemp   {
41*1cd03ba3SJeremy Kemp     if ((strcmp(argv[i], "-h") == 0) || (strcmp(argv[i], "--help") == 0))
42*1cd03ba3SJeremy Kemp     {
43*1cd03ba3SJeremy Kemp       log->print(helpStr);
44*1cd03ba3SJeremy Kemp       log->print(NEWLINE);
45*1cd03ba3SJeremy Kemp       exit(0);
46*1cd03ba3SJeremy Kemp     }
47*1cd03ba3SJeremy Kemp     else if ((strcmp(argv[i], "-v") == 0) || (strcmp(argv[i], "--version") == 0))
48*1cd03ba3SJeremy Kemp     {
49*1cd03ba3SJeremy Kemp       stringstream versionStr;
50*1cd03ba3SJeremy Kemp       versionStr << "clpeak version: " << VERSION_STR;
51*1cd03ba3SJeremy Kemp 
52*1cd03ba3SJeremy Kemp       log->print(versionStr.str().c_str());
53*1cd03ba3SJeremy Kemp       log->print(NEWLINE);
54*1cd03ba3SJeremy Kemp       exit(0);
55*1cd03ba3SJeremy Kemp     }
56*1cd03ba3SJeremy Kemp     else if ((strcmp(argv[i], "-p") == 0) || (strcmp(argv[i], "--platform") == 0))
57*1cd03ba3SJeremy Kemp     {
58*1cd03ba3SJeremy Kemp       if ((i + 1) < argc)
59*1cd03ba3SJeremy Kemp       {
60*1cd03ba3SJeremy Kemp         forcePlatform = true;
61*1cd03ba3SJeremy Kemp         specifiedPlatform = strtoul(argv[i + 1], NULL, 0);
62*1cd03ba3SJeremy Kemp         i++;
63*1cd03ba3SJeremy Kemp       }
64*1cd03ba3SJeremy Kemp     }
65*1cd03ba3SJeremy Kemp     else if ((strcmp(argv[i], "-d") == 0) || (strcmp(argv[i], "--device") == 0))
66*1cd03ba3SJeremy Kemp     {
67*1cd03ba3SJeremy Kemp       if ((i + 1) < argc)
68*1cd03ba3SJeremy Kemp       {
69*1cd03ba3SJeremy Kemp         forceDevice = true;
70*1cd03ba3SJeremy Kemp         specifiedDevice = strtoul(argv[i + 1], NULL, 0);
71*1cd03ba3SJeremy Kemp         i++;
72*1cd03ba3SJeremy Kemp       }
73*1cd03ba3SJeremy Kemp     }
74*1cd03ba3SJeremy Kemp     else if ((strcmp(argv[i], "-pn") == 0) || (strcmp(argv[i], "--platformName") == 0))
75*1cd03ba3SJeremy Kemp     {
76*1cd03ba3SJeremy Kemp       if ((i + 1) < argc)
77*1cd03ba3SJeremy Kemp       {
78*1cd03ba3SJeremy Kemp         forcePlatformName = true;
79*1cd03ba3SJeremy Kemp         specifiedPlatformName = argv[i + 1];
80*1cd03ba3SJeremy Kemp         i++;
81*1cd03ba3SJeremy Kemp       }
82*1cd03ba3SJeremy Kemp     }
83*1cd03ba3SJeremy Kemp     else if ((strcmp(argv[i], "-dn") == 0) || (strcmp(argv[i], "--deviceName") == 0))
84*1cd03ba3SJeremy Kemp     {
85*1cd03ba3SJeremy Kemp       if ((i + 1) < argc)
86*1cd03ba3SJeremy Kemp       {
87*1cd03ba3SJeremy Kemp         forceDeviceName = true;
88*1cd03ba3SJeremy Kemp         specifiedDeviceName = argv[i + 1];
89*1cd03ba3SJeremy Kemp         i++;
90*1cd03ba3SJeremy Kemp       }
91*1cd03ba3SJeremy Kemp     }
92*1cd03ba3SJeremy Kemp     else if ((strcmp(argv[i], "-tn") == 0) || (strcmp(argv[i], "--testName") == 0))
93*1cd03ba3SJeremy Kemp     {
94*1cd03ba3SJeremy Kemp       if ((i + 1) < argc)
95*1cd03ba3SJeremy Kemp       {
96*1cd03ba3SJeremy Kemp         forceTest = true;
97*1cd03ba3SJeremy Kemp         specifiedTestName = argv[i + 1];
98*1cd03ba3SJeremy Kemp         i++;
99*1cd03ba3SJeremy Kemp       }
100*1cd03ba3SJeremy Kemp     }
101*1cd03ba3SJeremy Kemp     else if (strcmp(argv[i], "--use-event-timer") == 0)
102*1cd03ba3SJeremy Kemp     {
103*1cd03ba3SJeremy Kemp       useEventTimer = true;
104*1cd03ba3SJeremy Kemp     }
105*1cd03ba3SJeremy Kemp     else if ((strcmp(argv[i], "--global-bandwidth") == 0) || (strcmp(argv[i], "--compute-hp") == 0) || (strcmp(argv[i], "--compute-sp") == 0) || (strcmp(argv[i], "--compute-dp") == 0) || (strcmp(argv[i], "--compute-integer") == 0) || (strcmp(argv[i], "--compute-intfast") == 0) || (strcmp(argv[i], "--transfer-bandwidth") == 0) || (strcmp(argv[i], "--kernel-latency") == 0) || (strcmp(argv[i], "--compute-char") == 0) || (strcmp(argv[i], "--compute-short") == 0))
106*1cd03ba3SJeremy Kemp     {
107*1cd03ba3SJeremy Kemp       // Disable all and enable only selected ones
108*1cd03ba3SJeremy Kemp       if (!forcedTests)
109*1cd03ba3SJeremy Kemp       {
110*1cd03ba3SJeremy Kemp         isGlobalBW = isComputeHP = isComputeSP = isComputeDP = isComputeInt = isComputeIntFast = isComputeChar = isComputeShort = isTransferBW = isKernelLatency = false;
111*1cd03ba3SJeremy Kemp         forcedTests = true;
112*1cd03ba3SJeremy Kemp       }
113*1cd03ba3SJeremy Kemp 
114*1cd03ba3SJeremy Kemp       if (strcmp(argv[i], "--global-bandwidth") == 0)
115*1cd03ba3SJeremy Kemp       {
116*1cd03ba3SJeremy Kemp         isGlobalBW = true;
117*1cd03ba3SJeremy Kemp       }
118*1cd03ba3SJeremy Kemp       else if (strcmp(argv[i], "--compute-hp") == 0)
119*1cd03ba3SJeremy Kemp       {
120*1cd03ba3SJeremy Kemp         isComputeHP = true;
121*1cd03ba3SJeremy Kemp       }
122*1cd03ba3SJeremy Kemp       else if (strcmp(argv[i], "--compute-sp") == 0)
123*1cd03ba3SJeremy Kemp       {
124*1cd03ba3SJeremy Kemp         isComputeSP = true;
125*1cd03ba3SJeremy Kemp       }
126*1cd03ba3SJeremy Kemp       else if (strcmp(argv[i], "--compute-dp") == 0)
127*1cd03ba3SJeremy Kemp       {
128*1cd03ba3SJeremy Kemp         isComputeDP = true;
129*1cd03ba3SJeremy Kemp       }
130*1cd03ba3SJeremy Kemp       else if (strcmp(argv[i], "--compute-integer") == 0)
131*1cd03ba3SJeremy Kemp       {
132*1cd03ba3SJeremy Kemp         isComputeInt = true;
133*1cd03ba3SJeremy Kemp       }
134*1cd03ba3SJeremy Kemp       else if (strcmp(argv[i], "--compute-intfast") == 0)
135*1cd03ba3SJeremy Kemp       {
136*1cd03ba3SJeremy Kemp         isComputeIntFast = true;
137*1cd03ba3SJeremy Kemp       }
138*1cd03ba3SJeremy Kemp       else if (strcmp(argv[i], "--compute-char") == 0)
139*1cd03ba3SJeremy Kemp       {
140*1cd03ba3SJeremy Kemp         isComputeChar = true;
141*1cd03ba3SJeremy Kemp       }
142*1cd03ba3SJeremy Kemp       else if (strcmp(argv[i], "--compute-short") == 0)
143*1cd03ba3SJeremy Kemp       {
144*1cd03ba3SJeremy Kemp         isComputeShort = true;
145*1cd03ba3SJeremy Kemp       }
146*1cd03ba3SJeremy Kemp       else if (strcmp(argv[i], "--transfer-bandwidth") == 0)
147*1cd03ba3SJeremy Kemp       {
148*1cd03ba3SJeremy Kemp         isTransferBW = true;
149*1cd03ba3SJeremy Kemp       }
150*1cd03ba3SJeremy Kemp       else if (strcmp(argv[i], "--kernel-latency") == 0)
151*1cd03ba3SJeremy Kemp       {
152*1cd03ba3SJeremy Kemp         isKernelLatency = true;
153*1cd03ba3SJeremy Kemp       }
154*1cd03ba3SJeremy Kemp     }
155*1cd03ba3SJeremy Kemp     else if (strcmp(argv[i], "--all-tests") == 0)
156*1cd03ba3SJeremy Kemp     {
157*1cd03ba3SJeremy Kemp       isGlobalBW = isComputeHP = isComputeSP = isComputeDP = isComputeInt = isComputeIntFast = isTransferBW = isKernelLatency = true;
158*1cd03ba3SJeremy Kemp     }
159*1cd03ba3SJeremy Kemp     else if (strcmp(argv[i], "--enable-xml-dump") == 0)
160*1cd03ba3SJeremy Kemp     {
161*1cd03ba3SJeremy Kemp       enableXml = true;
162*1cd03ba3SJeremy Kemp       if (xmlFileName.length() < 1)
163*1cd03ba3SJeremy Kemp       {
164*1cd03ba3SJeremy Kemp         xmlFileName = DEFAULT_XML_FILE_NAME;
165*1cd03ba3SJeremy Kemp       }
166*1cd03ba3SJeremy Kemp     }
167*1cd03ba3SJeremy Kemp     else if ((strcmp(argv[i], "-f") == 0) || (strcmp(argv[i], "--xml-file") == 0))
168*1cd03ba3SJeremy Kemp     {
169*1cd03ba3SJeremy Kemp       if ((i + 1) < argc)
170*1cd03ba3SJeremy Kemp       {
171*1cd03ba3SJeremy Kemp         enableXml = true;
172*1cd03ba3SJeremy Kemp         xmlFileName = argv[i + 1];
173*1cd03ba3SJeremy Kemp         i++;
174*1cd03ba3SJeremy Kemp       }
175*1cd03ba3SJeremy Kemp     }
176*1cd03ba3SJeremy Kemp     else
177*1cd03ba3SJeremy Kemp     {
178*1cd03ba3SJeremy Kemp       log->print(helpStr);
179*1cd03ba3SJeremy Kemp       log->print(NEWLINE);
180*1cd03ba3SJeremy Kemp       exit(-1);
181*1cd03ba3SJeremy Kemp     }
182*1cd03ba3SJeremy Kemp   }
183*1cd03ba3SJeremy Kemp 
184*1cd03ba3SJeremy Kemp   // Allocate logger after parsing
185*1cd03ba3SJeremy Kemp   log = new logger(enableXml, xmlFileName);
186*1cd03ba3SJeremy Kemp   return 0;
187*1cd03ba3SJeremy Kemp }
188