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();
}