| 232 | #endif |
| 233 | |
| 234 | int main(int argc, char *argv[]) { |
| 235 | if (argc < 3) { |
| 236 | MNN_ERROR("Usage: ./GpuInterTest.out ${test.mnn} ${Dir} [testMode] [forwardType] [numberThread] [precision | memory]\n"); |
| 237 | return 0; |
| 238 | } |
| 239 | std::string modelName = argv[1]; |
| 240 | std::string directName = argv[2]; |
| 241 | MNN_PRINT("Test %s from input info: %s\n", modelName.c_str(), directName.c_str()); |
| 242 | std::map<std::string, float> inputInfo; |
| 243 | std::map<std::string, std::vector<int>> inputShape; |
| 244 | std::vector<std::string> inputNames; |
| 245 | std::vector<std::string> outputNames; |
| 246 | int repeatNumber = 1; |
| 247 | bool shapeMutable = true; |
| 248 | std::vector<VARP> inputs; |
| 249 | std::vector<VARP> outputs; |
| 250 | if (inputNames.empty()) { |
| 251 | rapidjson::Document document; |
| 252 | std::ostringstream jsonNameOs; |
| 253 | jsonNameOs << directName << "/input.json"; |
| 254 | std::ifstream fileNames(jsonNameOs.str().c_str()); |
| 255 | std::ostringstream output; |
| 256 | output << fileNames.rdbuf(); |
| 257 | auto outputStr = output.str(); |
| 258 | document.Parse(outputStr.c_str()); |
| 259 | if (document.HasParseError()) { |
| 260 | MNN_ERROR("Invalid json\n"); |
| 261 | return 0; |
| 262 | } |
| 263 | if (document.HasMember("inputs")) { |
| 264 | auto inputsInfo = document["inputs"].GetArray(); |
| 265 | for (auto iter = inputsInfo.begin(); iter !=inputsInfo.end(); iter++) { |
| 266 | auto obj = iter->GetObject(); |
| 267 | std::string name = obj["name"].GetString(); |
| 268 | inputNames.emplace_back(name); |
| 269 | MNN_PRINT("%s\n", name.c_str()); |
| 270 | if (obj.HasMember("value")) { |
| 271 | float value = obj["value"].GetFloat(); |
| 272 | inputInfo.insert(std::make_pair(name, value)); |
| 273 | } |
| 274 | if (obj.HasMember("shape")) { |
| 275 | auto dims = obj["shape"].GetArray(); |
| 276 | std::vector<int> shapes; |
| 277 | for (auto iter = dims.begin(); iter != dims.end(); iter++) { |
| 278 | shapes.emplace_back(iter->GetInt()); |
| 279 | } |
| 280 | inputShape.insert(std::make_pair(name, shapes)); |
| 281 | } |
| 282 | } |
| 283 | } |
| 284 | if (document.HasMember("outputs")) { |
| 285 | auto array = document["outputs"].GetArray(); |
| 286 | for (auto iter = array.begin(); iter !=array.end(); iter++) { |
| 287 | std::string name = iter->GetString(); |
| 288 | MNN_PRINT("output: %s\n", name.c_str()); |
| 289 | outputNames.emplace_back(name); |
| 290 | } |
| 291 | } |
nothing calls this directly
no test coverage detected