@@ -171,13 +171,14 @@ static std::string get_gpu_info() {
171
171
}
172
172
173
173
// command line params
174
- enum output_formats {NONE, CSV, JSON, MARKDOWN, SQL};
174
+ enum output_formats {NONE, CSV, JSON, JSONL, MARKDOWN, SQL};
175
175
176
176
static const char * output_format_str (output_formats format) {
177
177
switch (format) {
178
178
case NONE: return " none" ;
179
179
case CSV: return " csv" ;
180
180
case JSON: return " json" ;
181
+ case JSONL: return " jsonl" ;
181
182
case MARKDOWN: return " md" ;
182
183
case SQL: return " sql" ;
183
184
default : GGML_ABORT (" invalid output format" );
@@ -191,6 +192,8 @@ static bool output_format_from_str(const std::string & s, output_formats & forma
191
192
format = CSV;
192
193
} else if (s == " json" ) {
193
194
format = JSON;
195
+ } else if (s == " jsonl" ) {
196
+ format = JSONL;
194
197
} else if (s == " md" ) {
195
198
format = MARKDOWN;
196
199
} else if (s == " sql" ) {
@@ -283,34 +286,34 @@ static void print_usage(int /* argc */, char ** argv) {
283
286
printf (" \n " );
284
287
printf (" options:\n " );
285
288
printf (" -h, --help\n " );
286
- printf (" -m, --model <filename> (default: %s)\n " , join (cmd_params_defaults.model , " ," ).c_str ());
287
- printf (" -p, --n-prompt <n> (default: %s)\n " , join (cmd_params_defaults.n_prompt , " ," ).c_str ());
288
- printf (" -n, --n-gen <n> (default: %s)\n " , join (cmd_params_defaults.n_gen , " ," ).c_str ());
289
- printf (" -pg <pp,tg> (default: %s)\n " , join (transform_to_str (cmd_params_defaults.n_pg , pair_str), " ," ).c_str ());
290
- printf (" -b, --batch-size <n> (default: %s)\n " , join (cmd_params_defaults.n_batch , " ," ).c_str ());
291
- printf (" -ub, --ubatch-size <n> (default: %s)\n " , join (cmd_params_defaults.n_ubatch , " ," ).c_str ());
292
- printf (" -ctk, --cache-type-k <t> (default: %s)\n " , join (transform_to_str (cmd_params_defaults.type_k , ggml_type_name), " ," ).c_str ());
293
- printf (" -ctv, --cache-type-v <t> (default: %s)\n " , join (transform_to_str (cmd_params_defaults.type_v , ggml_type_name), " ," ).c_str ());
294
- printf (" -t, --threads <n> (default: %s)\n " , join (cmd_params_defaults.n_threads , " ," ).c_str ());
295
- printf (" -C, --cpu-mask <hex,hex> (default: %s)\n " , join (cmd_params_defaults.cpu_mask , " ," ).c_str ());
296
- printf (" --cpu-strict <0|1> (default: %s)\n " , join (cmd_params_defaults.cpu_strict , " ," ).c_str ());
297
- printf (" --poll <0...100> (default: %s)\n " , join (cmd_params_defaults.poll , " ," ).c_str ());
298
- printf (" -ngl, --n-gpu-layers <n> (default: %s)\n " , join (cmd_params_defaults.n_gpu_layers , " ," ).c_str ());
299
- printf (" -rpc, --rpc <rpc_servers> (default: %s)\n " , join (cmd_params_defaults.rpc_servers , " ," ).c_str ());
300
- printf (" -sm, --split-mode <none|layer|row> (default: %s)\n " , join (transform_to_str (cmd_params_defaults.split_mode , split_mode_str), " ," ).c_str ());
301
- printf (" -mg, --main-gpu <i> (default: %s)\n " , join (cmd_params_defaults.main_gpu , " ," ).c_str ());
302
- printf (" -nkvo, --no-kv-offload <0|1> (default: %s)\n " , join (cmd_params_defaults.no_kv_offload , " ," ).c_str ());
303
- printf (" -fa, --flash-attn <0|1> (default: %s)\n " , join (cmd_params_defaults.flash_attn , " ," ).c_str ());
304
- printf (" -mmp, --mmap <0|1> (default: %s)\n " , join (cmd_params_defaults.use_mmap , " ," ).c_str ());
305
- printf (" --numa <distribute|isolate|numactl> (default: disabled)\n " );
306
- printf (" -embd, --embeddings <0|1> (default: %s)\n " , join (cmd_params_defaults.embeddings , " ," ).c_str ());
307
- printf (" -ts, --tensor-split <ts0/ts1/..> (default: 0)\n " );
308
- printf (" -r, --repetitions <n> (default: %d)\n " , cmd_params_defaults.reps );
309
- printf (" --prio <0|1|2|3> (default: %d)\n " , cmd_params_defaults.prio );
310
- printf (" --delay <0...N> (seconds) (default: %d)\n " , cmd_params_defaults.delay );
311
- printf (" -o, --output <csv|json|md|sql> (default: %s)\n " , output_format_str (cmd_params_defaults.output_format ));
312
- printf (" -oe, --output-err <csv|json|md|sql> (default: %s)\n " , output_format_str (cmd_params_defaults.output_format_stderr ));
313
- printf (" -v, --verbose (default: %s)\n " , cmd_params_defaults.verbose ? " 1" : " 0" );
289
+ printf (" -m, --model <filename> (default: %s)\n " , join (cmd_params_defaults.model , " ," ).c_str ());
290
+ printf (" -p, --n-prompt <n> (default: %s)\n " , join (cmd_params_defaults.n_prompt , " ," ).c_str ());
291
+ printf (" -n, --n-gen <n> (default: %s)\n " , join (cmd_params_defaults.n_gen , " ," ).c_str ());
292
+ printf (" -pg <pp,tg> (default: %s)\n " , join (transform_to_str (cmd_params_defaults.n_pg , pair_str), " ," ).c_str ());
293
+ printf (" -b, --batch-size <n> (default: %s)\n " , join (cmd_params_defaults.n_batch , " ," ).c_str ());
294
+ printf (" -ub, --ubatch-size <n> (default: %s)\n " , join (cmd_params_defaults.n_ubatch , " ," ).c_str ());
295
+ printf (" -ctk, --cache-type-k <t> (default: %s)\n " , join (transform_to_str (cmd_params_defaults.type_k , ggml_type_name), " ," ).c_str ());
296
+ printf (" -ctv, --cache-type-v <t> (default: %s)\n " , join (transform_to_str (cmd_params_defaults.type_v , ggml_type_name), " ," ).c_str ());
297
+ printf (" -t, --threads <n> (default: %s)\n " , join (cmd_params_defaults.n_threads , " ," ).c_str ());
298
+ printf (" -C, --cpu-mask <hex,hex> (default: %s)\n " , join (cmd_params_defaults.cpu_mask , " ," ).c_str ());
299
+ printf (" --cpu-strict <0|1> (default: %s)\n " , join (cmd_params_defaults.cpu_strict , " ," ).c_str ());
300
+ printf (" --poll <0...100> (default: %s)\n " , join (cmd_params_defaults.poll , " ," ).c_str ());
301
+ printf (" -ngl, --n-gpu-layers <n> (default: %s)\n " , join (cmd_params_defaults.n_gpu_layers , " ," ).c_str ());
302
+ printf (" -rpc, --rpc <rpc_servers> (default: %s)\n " , join (cmd_params_defaults.rpc_servers , " ," ).c_str ());
303
+ printf (" -sm, --split-mode <none|layer|row> (default: %s)\n " , join (transform_to_str (cmd_params_defaults.split_mode , split_mode_str), " ," ).c_str ());
304
+ printf (" -mg, --main-gpu <i> (default: %s)\n " , join (cmd_params_defaults.main_gpu , " ," ).c_str ());
305
+ printf (" -nkvo, --no-kv-offload <0|1> (default: %s)\n " , join (cmd_params_defaults.no_kv_offload , " ," ).c_str ());
306
+ printf (" -fa, --flash-attn <0|1> (default: %s)\n " , join (cmd_params_defaults.flash_attn , " ," ).c_str ());
307
+ printf (" -mmp, --mmap <0|1> (default: %s)\n " , join (cmd_params_defaults.use_mmap , " ," ).c_str ());
308
+ printf (" --numa <distribute|isolate|numactl> (default: disabled)\n " );
309
+ printf (" -embd, --embeddings <0|1> (default: %s)\n " , join (cmd_params_defaults.embeddings , " ," ).c_str ());
310
+ printf (" -ts, --tensor-split <ts0/ts1/..> (default: 0)\n " );
311
+ printf (" -r, --repetitions <n> (default: %d)\n " , cmd_params_defaults.reps );
312
+ printf (" --prio <0|1|2|3> (default: %d)\n " , cmd_params_defaults.prio );
313
+ printf (" --delay <0...N> (seconds) (default: %d)\n " , cmd_params_defaults.delay );
314
+ printf (" -o, --output <csv|json|jsonl| md|sql> (default: %s)\n " , output_format_str (cmd_params_defaults.output_format ));
315
+ printf (" -oe, --output-err <csv|json|jsonl| md|sql> (default: %s)\n " , output_format_str (cmd_params_defaults.output_format_stderr ));
316
+ printf (" -v, --verbose (default: %s)\n " , cmd_params_defaults.verbose ? " 1" : " 0" );
314
317
printf (" \n " );
315
318
printf (" Multiple values can be given for each parameter by separating them with ',' or by specifying the parameter multiple times.\n " );
316
319
}
@@ -1074,37 +1077,38 @@ struct csv_printer : public printer {
1074
1077
}
1075
1078
};
1076
1079
1077
- struct json_printer : public printer {
1078
- bool first = true ;
1079
1080
1080
- static std::string escape_json (const std::string & value) {
1081
- std::string escaped;
1082
- for (auto c : value) {
1083
- if (c == ' "' ) {
1084
- escaped += " \\\" " ;
1085
- } else if (c == ' \\ ' ) {
1086
- escaped += " \\\\ " ;
1087
- } else if (c <= 0x1f ) {
1088
- char buf[8 ];
1089
- snprintf (buf, sizeof (buf), " \\ u%04x" , c);
1090
- escaped += buf;
1091
- } else {
1092
- escaped += c;
1093
- }
1081
+ static std::string escape_json (const std::string & value) {
1082
+ std::string escaped;
1083
+ for (auto c : value) {
1084
+ if (c == ' "' ) {
1085
+ escaped += " \\\" " ;
1086
+ } else if (c == ' \\ ' ) {
1087
+ escaped += " \\\\ " ;
1088
+ } else if (c <= 0x1f ) {
1089
+ char buf[8 ];
1090
+ snprintf (buf, sizeof (buf), " \\ u%04x" , c);
1091
+ escaped += buf;
1092
+ } else {
1093
+ escaped += c;
1094
1094
}
1095
- return escaped;
1096
1095
}
1096
+ return escaped;
1097
+ }
1097
1098
1098
- static std::string format_value (const std::string & field, const std::string & value) {
1099
- switch (test::get_field_type (field)) {
1100
- case test::STRING:
1101
- return " \" " + escape_json (value) + " \" " ;
1102
- case test::BOOL:
1103
- return value == " 0" ? " false" : " true" ;
1104
- default :
1105
- return value;
1106
- }
1099
+ static std::string format_json_value (const std::string & field, const std::string & value) {
1100
+ switch (test::get_field_type (field)) {
1101
+ case test::STRING:
1102
+ return " \" " + escape_json (value) + " \" " ;
1103
+ case test::BOOL:
1104
+ return value == " 0" ? " false" : " true" ;
1105
+ default :
1106
+ return value;
1107
1107
}
1108
+ }
1109
+
1110
+ struct json_printer : public printer {
1111
+ bool first = true ;
1108
1112
1109
1113
void print_header (const cmd_params & params) override {
1110
1114
fprintf (fout, " [\n " );
@@ -1114,7 +1118,7 @@ struct json_printer : public printer {
1114
1118
void print_fields (const std::vector<std::string> & fields, const std::vector<std::string> & values) {
1115
1119
assert (fields.size () == values.size ());
1116
1120
for (size_t i = 0 ; i < fields.size (); i++) {
1117
- fprintf (fout, " \" %s\" : %s,\n " , fields.at (i).c_str (), format_value (fields.at (i), values.at (i)).c_str ());
1121
+ fprintf (fout, " \" %s\" : %s,\n " , fields.at (i).c_str (), format_json_value (fields.at (i), values.at (i)).c_str ());
1118
1122
}
1119
1123
}
1120
1124
@@ -1137,6 +1141,25 @@ struct json_printer : public printer {
1137
1141
}
1138
1142
};
1139
1143
1144
+
1145
+ struct jsonl_printer : public printer {
1146
+ void print_fields (const std::vector<std::string> & fields, const std::vector<std::string> & values) {
1147
+ assert (fields.size () == values.size ());
1148
+ for (size_t i = 0 ; i < fields.size (); i++) {
1149
+ fprintf (fout, " \" %s\" : %s, " , fields.at (i).c_str (), format_json_value (fields.at (i), values.at (i)).c_str ());
1150
+ }
1151
+ }
1152
+
1153
+ void print_test (const test & t) override {
1154
+ fprintf (fout, " {" );
1155
+ print_fields (test::get_fields (), t.get_values ());
1156
+ fprintf (fout, " \" samples_ns\" : [ %s ]," , join (t.samples_ns , " , " ).c_str ());
1157
+ fprintf (fout, " \" samples_ts\" : [ %s ]" , join (t.get_ts (), " , " ).c_str ());
1158
+ fprintf (fout, " }\n " );
1159
+ fflush (fout);
1160
+ }
1161
+ };
1162
+
1140
1163
struct markdown_printer : public printer {
1141
1164
std::vector<std::string> fields;
1142
1165
@@ -1437,6 +1460,8 @@ static std::unique_ptr<printer> create_printer(output_formats format) {
1437
1460
return std::unique_ptr<printer>(new csv_printer ());
1438
1461
case JSON:
1439
1462
return std::unique_ptr<printer>(new json_printer ());
1463
+ case JSONL:
1464
+ return std::unique_ptr<printer>(new jsonl_printer ());
1440
1465
case MARKDOWN:
1441
1466
return std::unique_ptr<printer>(new markdown_printer ());
1442
1467
case SQL:
0 commit comments