2020#include < vector>
2121#include " paddle/fluid/pir/dialect/operator/ir/op_attribute.h"
2222#include " paddle/fluid/pir/serialize_deserialize/include/schema.h"
23+ #include " paddle/fluid/pir/serialize_deserialize/patch/patch.h"
2324#include " paddle/phi/common/data_type.h"
2425#include " paddle/pir/include/core/builtin_attribute.h"
2526#include " paddle/pir/include/core/builtin_type.h"
@@ -262,8 +263,8 @@ Json ParseOpPairPatches(const YAML::Node &root) {
262263 VLOG (8 ) << " Op_pair_name: " << name;
263264 j_patch[" op_pair" ].push_back (op_name);
264265 }
265- j_patch[" patch " ] = Json::object ();
266- j_patch[" patch " ][" op_pair" ] = j_patch[" op_pair" ];
266+ j_patch[PATCH ] = Json::object ();
267+ j_patch[PATCH ][" op_pair" ] = j_patch[" op_pair" ];
267268 // parse actions
268269 auto actions = node[" actions" ];
269270 for (size_t j = 0 ; j < actions.size (); j++) {
@@ -278,20 +279,20 @@ Json ParseOpPairPatches(const YAML::Node &root) {
278279 Json j_add_out;
279280 j_add_out[ID] = out_id;
280281 j_add_out[TYPE_TYPE] = BuildTypeJsonPatch (action);
281- j_patch[" patch " ][OPRESULTS][" ADD" ].push_back (j_add_out);
282+ j_patch[PATCH ][OPRESULTS][ADD].push_back (j_add_out);
282283 Json j_add_in;
283284 j_add_in[ID] = in_id;
284- j_patch[" patch " ][OPOPERANDS][" ADD" ].push_back (j_add_in);
285+ j_patch[PATCH ][OPOPERANDS][ADD].push_back (j_add_in);
285286 } else if (action_name == " delete_value" ) {
286287 VLOG (8 ) << " Patch for deleting values." ;
287288 int out_id = action[" object" ][0 ].as <int >();
288289 int in_id = action[" object" ][1 ].as <int >();
289290 Json j_del_out;
290291 j_del_out[ID] = out_id;
291- j_patch[" patch " ][OPRESULTS][" DELETE" ].push_back (j_del_out);
292+ j_patch[PATCH ][OPRESULTS][DELETE].push_back (j_del_out);
292293 Json j_del_in;
293294 j_del_in[ID] = in_id;
294- j_patch[" patch " ][OPOPERANDS][" DELETE" ].push_back (j_del_in);
295+ j_patch[PATCH ][OPOPERANDS][DELETE].push_back (j_del_in);
295296 }
296297 }
297298 json_patch.push_back (j_patch);
@@ -314,7 +315,7 @@ Json ParseOpPatches(const YAML::Node &root) {
314315 VLOG (8 ) << " Parse patches for " << op_name;
315316 Json j_patch;
316317 j_patch[" op_name" ] = op_name;
317- j_patch[" patch " ] = Json::object ();
318+ j_patch[PATCH ] = Json::object ();
318319 // parse actions
319320 auto actions = node[" actions" ];
320321
@@ -335,10 +336,10 @@ Json ParseOpPatches(const YAML::Node &root) {
335336 j_attr[ATTR_TYPE] = BuildAttrJsonPatch (action);
336337 if (action_name == " add_attr" ) {
337338 Json j_add = Json::object ();
338- j_add[" ADD" ] = j_attr;
339- j_patch[" patch " ][ATTRS].push_back (j_add);
339+ j_add[ADD] = j_attr;
340+ j_patch[PATCH ][ATTRS].push_back (j_add);
340341 } else {
341- j_patch[" patch " ][ATTRS].push_back (j_attr);
342+ j_patch[PATCH ][ATTRS].push_back (j_attr);
342343 }
343344 } else if (action_name == " add_output_attr" ||
344345 action_name == " modify_output_attr" ||
@@ -350,10 +351,10 @@ Json ParseOpPatches(const YAML::Node &root) {
350351 j_attr[ATTR_TYPE] = BuildAttrJsonPatch (action);
351352 if (action_name == " add_output_attr" ) {
352353 Json j_add = Json::object ();
353- j_add[" ADD" ] = j_attr;
354- j_patch[" patch " ][OPRESULTS_ATTRS].push_back (j_add);
354+ j_add[ADD] = j_attr;
355+ j_patch[PATCH ][OPRESULTS_ATTRS].push_back (j_add);
355356 } else {
356- j_patch[" patch " ][OPRESULTS_ATTRS].push_back (j_attr);
357+ j_patch[PATCH ][OPRESULTS_ATTRS].push_back (j_attr);
357358 }
358359 } else if (action_name == " modify_attr_name" ||
359360 action_name == " modify_output_attr_name" ) {
@@ -362,35 +363,35 @@ Json ParseOpPatches(const YAML::Node &root) {
362363 std::string new_name = action[" default" ].as <std::string>();
363364 Json j_attr;
364365 j_attr[NAME] = old_name;
365- j_attr[" NEW_NAME" ] = new_name;
366+ j_attr[NEW_NAME] = new_name;
366367 std::string col =
367368 action_name == " modify_attr_name" ? ATTRS : OPRESULTS_ATTRS;
368- j_patch[" patch " ][col].push_back (j_attr);
369+ j_patch[PATCH ][col].push_back (j_attr);
369370 } else if (action_name == " delete_input" ) {
370371 VLOG (8 ) << " Patch for delete_input" ;
371372 Json j_input;
372373 int op_id = action[" object" ].as <int >();
373374 j_input[ID] = op_id;
374- j_patch[" patch " ][OPOPERANDS][" DELETE" ].push_back (j_input);
375+ j_patch[PATCH ][OPOPERANDS][DELETE].push_back (j_input);
375376 } else if (action_name == " add_output" ) {
376377 VLOG (8 ) << " Patch for add_output" ;
377378 Json j_output;
378379 int op_id = action[" object" ].as <int >();
379380 j_output[ID] = op_id;
380381 j_output[TYPE_TYPE] = BuildTypeJsonPatch (action);
381- j_patch[" patch " ][OPRESULTS][" ADD" ].push_back (j_output);
382+ j_patch[PATCH ][OPRESULTS][ADD].push_back (j_output);
382383 } else if (action_name == " modify_output_type" ) {
383384 VLOG (8 ) << " Patch for modify_output_type" ;
384385 int op_id = action[" object" ].as <int >();
385386 Json j_type;
386387 j_type[ID] = op_id;
387388 j_type[TYPE_TYPE] = BuildTypeJsonPatch (action);
388- j_patch[" patch " ][OPRESULTS][" UPDATE" ].push_back (j_type);
389+ j_patch[PATCH ][OPRESULTS][UPDATE].push_back (j_type);
389390 } else if (action_name == " modify_name" ) {
390391 VLOG (8 ) << " Patch for modify_name" ;
391392 std::string op_name = action[" default" ].as <std::string>();
392393 GetCompressOpName (&op_name);
393- j_patch[" patch " ][ " NEW_NAME" ] = op_name;
394+ j_patch[PATCH][ NEW_NAME] = op_name;
394395 }
395396 }
396397 json_patch.push_back (j_patch);
@@ -410,15 +411,15 @@ Json ParseTypePatches(const YAML::Node &root) {
410411 VLOG (8 ) << " Type name after compressing: " << type_name;
411412 Json j_patch;
412413 j_patch[" type_name" ] = type_name;
413- j_patch[" patch " ] = Json::object ();
414+ j_patch[PATCH ] = Json::object ();
414415 auto actions = node[" actions" ];
415416 for (size_t j = 0 ; j < actions.size (); j++) {
416417 YAML::Node action = actions[j];
417418 std::string action_name = action[" action" ].as <std::string>();
418419 if (action_name == " modify_name" ) {
419- j_patch[" patch " ][ " NEW_NAME" ] = GetTypeName (action);
420+ j_patch[PATCH][ NEW_NAME] = GetTypeName (action);
420421 } else if (action_name == " delete_type" ) {
421- j_patch[" patch " ][ " NEW_NAME" ] = " " ;
422+ j_patch[PATCH][ NEW_NAME] = " " ;
422423 }
423424 }
424425 json_patch.push_back (j_patch);
@@ -439,31 +440,36 @@ Json ParseAttrPatches(const YAML::Node &root) {
439440 VLOG (8 ) << attr_name;
440441 Json j_patch;
441442 j_patch[" attr_name" ] = attr_name;
442- j_patch[" patch " ] = Json::object ();
443+ j_patch[PATCH ] = Json::object ();
443444 auto actions = node[" actions" ];
444445 for (size_t j = 0 ; j < actions.size (); j++) {
445446 YAML::Node action = actions[j];
446447 std::string action_name = action[" action" ].as <std::string>();
447448 if (action_name == " modify_name" ) {
448- j_patch[" patch " ][ " NEW_NAME" ] = GetAttrName (action);
449+ j_patch[PATCH][ NEW_NAME] = GetAttrName (action);
449450 } else if (action_name == " delete_attr" ) {
450- j_patch[" patch " ][ " NEW_NAME" ] = " " ;
451+ j_patch[PATCH][ NEW_NAME] = " " ;
451452 }
452453 }
453454 json_patch.push_back (j_patch);
454455 }
455456 return json_patch;
456457}
457458
458- Json YamlParser (const std::string &yaml_file) {
459+ Json YamlParser (const std::string &version, const std::string &yaml_file) {
460+ YAML::Node root;
459461 std::ifstream fin;
460- VLOG (8 ) << yaml_file;
461- fin.open (yaml_file);
462- if (!fin) {
463- VLOG (8 ) << yaml_file << " is not fin and return empty. " ;
464- return Json::object ();
462+ if (yaml_file.empty ()) {
463+ root = YAML::Load (yaml_files.at (version));
464+ } else {
465+ VLOG (8 ) << yaml_file;
466+ fin.open (yaml_file);
467+ if (!fin) {
468+ VLOG (8 ) << yaml_file << " is not fin and return empty. " ;
469+ return Json::object ();
470+ }
471+ root = YAML::Load (fin);
465472 }
466- YAML::Node root = YAML::Load (fin);
467473 Json json_patch;
468474 if (!root.IsDefined ()) {
469475 VLOG (8 ) << " Not defined" ;
@@ -484,7 +490,9 @@ Json YamlParser(const std::string &yaml_file) {
484490 Yaml attr_patch = root[" attr_patches" ];
485491 json_patch[" attr_patches" ] = ParseAttrPatches (attr_patch);
486492 VLOG (8 ) << " Finish attr json_patch: " << json_patch;
487- fin.close ();
493+ if (fin) {
494+ fin.close ();
495+ }
488496 return json_patch;
489497}
490498} // namespace pir
0 commit comments