| 835 | } |
| 836 | |
| 837 | static bool SaveInputsOneByOne(const Runtime* runtime) { |
| 838 | for (uint32_t c = 0; c < runtime->GetInputCount(); ++c) { |
| 839 | auto t = runtime->GetInputTensor(c); |
| 840 | auto shape = t->GetShape(); |
| 841 | |
| 842 | auto bytes = shape->CalcBytesIncludingPadding(); |
| 843 | vector<char> buffer(bytes); |
| 844 | |
| 845 | ppl::nn::TensorShape src_desc = *t->GetShape(); |
| 846 | src_desc.SetDataFormat(DATAFORMAT_NDARRAY); |
| 847 | auto status = t->ConvertToHost(buffer.data(), src_desc); |
| 848 | if (status != RC_SUCCESS) { |
| 849 | LOG(ERROR) << "convert data failed: " << GetRetCodeStr(status); |
| 850 | return false; |
| 851 | } |
| 852 | |
| 853 | const char* data_type_str = FindDataTypeStr(shape->GetDataType()); |
| 854 | if (!data_type_str) { |
| 855 | LOG(ERROR) << "unsupported data type[" << GetDataTypeStr(shape->GetDataType()) << "]"; |
| 856 | return false; |
| 857 | } |
| 858 | |
| 859 | char name_prefix[32]; |
| 860 | sprintf(name_prefix, "pplnn_input_%05u_", c); |
| 861 | const string in_file_name = g_flag_save_data_dir + "/" + string(name_prefix) + t->GetName() + "-" + |
| 862 | GetDimsStr(t) + "-" + string(data_type_str) + ".dat"; |
| 863 | ofstream ofs(in_file_name, ios_base::out | ios_base::binary | ios_base::trunc); |
| 864 | if (!ofs.is_open()) { |
| 865 | LOG(ERROR) << "save input file[" << in_file_name << "] failed."; |
| 866 | return false; |
| 867 | } |
| 868 | |
| 869 | ofs.write(buffer.data(), bytes); |
| 870 | } |
| 871 | |
| 872 | return true; |
| 873 | } |
| 874 | |
| 875 | static bool SaveInputsAllInOne(const Runtime* runtime) { |
| 876 | const string in_file_name = g_flag_save_data_dir + "/pplnn_input.dat"; |
no test coverage detected