| 18 | |
| 19 | namespace { |
| 20 | void test_graph_load_dump(GraphDumpFormat format) { |
| 21 | auto fname = GET_OUTPUT_FILE(format); |
| 22 | |
| 23 | auto orig_id = -1; |
| 24 | auto dump = [&]() { |
| 25 | auto cn = CompNode::load("cpu0"); |
| 26 | auto graph = ComputingGraph::make(); |
| 27 | auto x = opr::ImmutableTensor::make(*graph, 1926.0817f, {cn}); |
| 28 | x.rename("varz"); |
| 29 | auto dumper = GraphDumper::make(OutputFile::make_fs(fname.c_str()), format); |
| 30 | auto rst = dumper->dump({x}); |
| 31 | ASSERT_EQ(rst.nr_opr, 1); |
| 32 | ASSERT_EQ(rst.inputs.size(), 0); |
| 33 | ASSERT_EQ(rst.outputs.size(), 1); |
| 34 | ASSERT_EQ(rst.params.size(), 0); |
| 35 | orig_id = x.node()->id(); |
| 36 | mgb_log("%zu of %zu", rst.tensor_value_bytes, rst.tot_bytes); |
| 37 | }; |
| 38 | auto load = [&]() { |
| 39 | auto loader = GraphLoader::make(InputFile::make_fs(fname.c_str()), format); |
| 40 | auto rst = loader->load(); |
| 41 | ASSERT_EQ(rst.tensor_map.size(), 0); |
| 42 | ASSERT_EQ(rst.output_var_list.size(), 1); |
| 43 | ASSERT_EQ(rst.output_var_map.size(), 1); |
| 44 | ASSERT_EQ(rst.output_var_map_id.size(), 1); |
| 45 | ASSERT_EQ(rst.output_var_map.count("varz"), 1); |
| 46 | ASSERT_EQ(rst.output_var_map_id.count(orig_id), 1); |
| 47 | |
| 48 | HostTensorND host_x; |
| 49 | |
| 50 | auto func = |
| 51 | rst.graph_compile({make_callback_copy(rst.output_var_list[0], host_x)}); |
| 52 | func->execute().wait(); |
| 53 | EXPECT_NEAR(*host_x.ptr<float>(), 1926.0817f, 1e-6); |
| 54 | }; |
| 55 | dump(); |
| 56 | load(); |
| 57 | } |
| 58 | |
| 59 | void test_multi_graph_dump_load(GraphDumpFormat format) { |
| 60 | auto fname = GET_OUTPUT_FILE(format); |
no test coverage detected