| 83 | } |
| 84 | |
| 85 | void test_metadata(GraphDumpFormat format) { |
| 86 | auto fname = GET_OUTPUT_FILE(format); |
| 87 | TensorShape shape{2, 3}; |
| 88 | |
| 89 | auto dump = [&]() { |
| 90 | auto cn = CompNode::load("xpu0"); |
| 91 | auto host_x = std::make_shared<HostTensorND>(cn, shape), |
| 92 | host_y = std::make_shared<HostTensorND>(cn, shape); |
| 93 | auto graph = ComputingGraph::make(); |
| 94 | auto x = opr::Host2DeviceCopy::make(*graph, host_x, {"x"}), |
| 95 | y = opr::Host2DeviceCopy::make(*graph, host_y, {"y"}); |
| 96 | using Mode = opr::Elemwise::Mode; |
| 97 | auto z = opr::Elemwise::make({x, y}, Mode::ADD, {"add(x, y)"}); |
| 98 | |
| 99 | Metadata metadata; |
| 100 | metadata.user_info = "TEST_METADATA"; |
| 101 | metadata.has_user_info = true; |
| 102 | |
| 103 | auto dumper = GraphDumper::make(OutputFile::make_fs(fname.c_str()), format); |
| 104 | auto rst = dumper->dump({z.rename("z")}, {}, metadata); |
| 105 | }; |
| 106 | |
| 107 | auto load = [&]() { |
| 108 | HostTensorGenerator<> gen; |
| 109 | auto loader = GraphLoader::make(InputFile::make_fs(fname.c_str()), format); |
| 110 | auto rst = loader->load(); |
| 111 | auto metadata = rst.metadata; |
| 112 | int cmp = strcmp(metadata.user_info.c_str(), "TEST_METADATA"); |
| 113 | EXPECT_EQ(cmp, 0); |
| 114 | }; |
| 115 | |
| 116 | dump(); |
| 117 | load(); |
| 118 | } |
| 119 | |
| 120 | void test_serializer_APlusB(GraphDumpFormat format) { |
| 121 | auto fname = GET_OUTPUT_FILE(format); |