Error fromDynamicImpl()

in torch_glow/src/GlowCompileSpec.h [898:1141]


  Error fromDynamicImpl(const folly::dynamic &dyn,
                        int64_t bc_version_when_serialized) override {
    RETURN_ERR_IF_NOT(
        bc_version_when_serialized == 0,
        strFormat("Only bc_version 0 is supported, got bc_version %d",
                  int(bc_version_when_serialized)));

    if (dyn.count("fusionPassEnabled")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.fusionPassEnabled,
                                               "fusionPassEnabled");
    }
    if (dyn.count("dumpGlowDag")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.dumpGlowDag,
                                               "dumpGlowDag");
    }
    // In Glow deserialization, we first deserialize opBlocklistStrVec to get
    // the op black list, then use the list to initialize opBlockList attribute,
    if (dyn.count("opBlocklistStrVec")) {
      CHECK_DYN_CONTAINS_ARRAY(dyn, "opBlocklistStrVec");
      std::vector<std::string> opBlocklistStrVec;
      ASSIGN_VALUE_OR_RETURN_ERR(
          opBlocklistStrVec,
          dynArrayToVec<std::string>(dyn.at("opBlocklistStrVec")));
      for (const auto &opStr : opBlocklistStrVec) {
        settings_.opBlocklist.insert(torch::jit::Symbol::fromQualString(opStr));
      }
    }
    if (dyn.count("minFusionGroupSize")) {
      ASSIGN_INT_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.minFusionGroupSize,
                                              "minFusionGroupSize");
    }
    if (dyn.count("maxFusionMergeSize")) {
      ASSIGN_INT_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.maxFusionMergeSize,
                                              "maxFusionMergeSize");
    }
    if (dyn.count("fusionStartIndex")) {
      ASSIGN_INT_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.fusionStartIndex,
                                              "fusionStartIndex");
    }
    if (dyn.count("fusionEndIndex")) {
      ASSIGN_INT_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.fusionEndIndex,
                                              "fusionEndIndex");
    }
    if (dyn.count("convertToFP16")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.convertToFP16,
                                               "convertToFP16");
    }
    if (dyn.count("convertFusedToFP16")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.convertFusedToFP16, "convertFusedToFP16");
    }
    if (dyn.count("printJITIndex")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.printJITIndex,
                                               "printJITIndex");
    }
    if (dyn.count("ignoreDivRoundingArgs")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.ignoreDivRoundingArgs, "ignoreDivRoundingArgs");
    }
    if (dyn.count("clipFP16")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.clipFP16,
                                               "clipFP16");
    }
    if (dyn.count("clipFP16SkipInputs")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.clipFP16SkipInputs, "clipFP16SkipInputs");
    }
    if (dyn.count("convertPlaceholdersToFP16")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.convertPlaceholdersToFP16,
          "convertPlaceholdersToFP16");
    }
    if (dyn.count("convertConstantsToFP16")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.convertConstantsToFP16, "convertConstantsToFP16");
    }
    if (dyn.count("forceFP16AccumSLS")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.forceFP16AccumSLS,
                                               "forceFP16AccumSLS");
    }
    if (dyn.count("dumpFinalGlowGraph")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.dumpFinalGlowGraph, "dumpFinalGlowGraph");
    }
    if (dyn.count("enableGlowTracing")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.enableGlowTracing,
                                               "enableGlowTracing");
    }
    if (dyn.count("enableRemoveMutation")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.enableRemoveMutation, "enableRemoveMutation");
    }
    if (dyn.count("disableLayoutVerifying")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.disableLayoutVerifying, "disableLayoutVerifying");
    }
    if (dyn.count("dumpOperatorInventory")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.dumpOperatorInventory, "dumpOperatorInventory");
    }
    if (dyn.count("numTracesPerDump")) {
      ASSIGN_INT_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.numTracesPerDump,
                                              "numTracesPerDump");
    }
    if (dyn.count("replicationCount")) {
      ASSIGN_INT_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.replicationCount,
                                              "replicationCount");
    }
    if (dyn.count("backendSpecificOpts")) {
      // Maps are serialized as Arrays
      CHECK_DYN_CONTAINS_ARRAY(dyn, "backendSpecificOpts");
      ASSIGN_VALUE_OR_RETURN_ERR(settings_.backendSpecificOpts,
                                 (dynArrayToMap<std::string, std::string>(
                                     dyn.at("backendSpecificOpts"))));
    }
    if (dyn.count("writeToOnnx")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.writeToOnnx,
                                               "writeToOnnx");
    }
    if (dyn.count("onnxZipMode")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.onnxZipMode,
                                               "onnxZipMode");
    }
    if (dyn.count("writeOnnxToTmp")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.writeOnnxToTmp,
                                               "writeOnnxToTmp");
    }
    if (dyn.count("onnxFileNamePrefix")) {
      ASSIGN_STRING_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.onnxFileNamePrefix, "onnxFileNamePrefix");
    }
    if (dyn.count("jitVsGlowCompare")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.jitVsGlowCompare,
                                               "jitVsGlowCompare");
    }
    if (dyn.count("backendOptionsFile")) {
      ASSIGN_STRING_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.backendOptionsFile, "backendOptionsFile");
    }
    if (dyn.count("saturateHost")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.saturateHost,
                                               "saturateHost");
    }
    if (dyn.count("saturateKDevices")) {
      ASSIGN_INT_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.saturateKDevices,
                                              "saturateKDevices");
    }
    if (dyn.count("randomizeConstants")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.randomizeConstants, "randomizeConstants");
    }
    if (dyn.count("writeWithoutRandomize")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.writeWithoutRandomize, "writeWithoutRandomize");
    }
    if (dyn.count("backendName")) {
      ASSIGN_STRING_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.backendName,
                                                 "backendName");
    }
    if (dyn.count("numDevices")) {
      ASSIGN_INT_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.numDevices,
                                              "numDevices");
    }
    if (dyn.count("scanDevices")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.scanDevices,
                                               "scanDevices");
    }
    if (dyn.count("runShapeInference")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.runShapeInference,
                                               "runShapeInference");
    }
    if (dyn.count("enableDebugFuser")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.enableDebugFuser,
                                               "enableDebugFuser");
    }
    if (dyn.count("setIncludeLastOffsets")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.setIncludeLastOffsets, "setIncludeLastOffsets");
    }
    if (dyn.count("debugContinuouslyVerifyDuringModelLoading")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.debugContinuouslyVerifyDuringModelLoading,
          "debugContinuouslyVerifyDuringModelLoading");
    }
    if (dyn.count("nominalBatchIdx")) {
      ASSIGN_INT_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.nominalBatchIdx,
                                              "nominalBatchIdx");
    }
    if (dyn.count("availableDevices")) {
      CHECK_DYN_CONTAINS_ARRAY(dyn, "availableDevices");
      ASSIGN_VALUE_OR_RETURN_ERR(
          settings_.availableDevices,
          dynArrayToVec<int32_t>(dyn.at("availableDevices")));
    }
    if (dyn.count("dumpFailedInputsToOnnxFiles")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.dumpFailedInputsToOnnxFiles,
          "dumpFailedInputsToOnnxFiles");
    }
    if (dyn.count("lazyCompile")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.lazyCompile,
                                               "lazyCompile");
    }
    if (dyn.count("enableDeviceTracing")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.enableDeviceTracing, "enableDeviceTracing");
    }

    if (dyn.count("use_dag_optimizer")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.use_dag_optimizer,
                                               "use_dag_optimizer");
    }

    if (dyn.count("apl_parallelization_alg")) {
      ASSIGN_STRING_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.apl_parallelization_alg, "apl_parallelization_alg");
    }
    if (dyn.count("apl_num_parallel_chunks")) {
      ASSIGN_INT_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.apl_num_parallel_chunks, "apl_num_parallel_chunks");
    }

    if (dyn.count("saveGlowIRIntoONNX")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.saveGlowIRIntoONNX, "saveGlowIRIntoONNX");
    }

    if (dyn.count("loadGlowIRFromONNX")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(
          dyn, settings_.loadGlowIRFromONNX, "loadGlowIRFromONNX");
    }

    if (dyn.count("skipProvisioning")) {
      ASSIGN_BOOL_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.skipProvisioning,
                                               "skipProvisioning");
    }

    if (dyn.count("debugLayers")) {
      ASSIGN_INT_FROM_DYN_FIELD_OR_RETURN_ERR(dyn, settings_.debugLayers,
                                              "debugLayers");
    }

    return Error::success();
  }