Пример #1
0
def IIR_str_to_SDFG(iir: str):
    stencilInstantiation = IIR_pb2.StencilInstantiation()
    stencilInstantiation.ParseFromString(iir)

    metadata = stencilInstantiation.metadata
    id_resolver = IdResolver(metadata.accessIDToName, metadata.APIFieldIDs,
                             metadata.temporaryFieldIDs,
                             metadata.globalVariableIDs,
                             metadata.fieldIDtoDimensions)

    imp = Importer(id_resolver)
    stencils = imp.Import_Stencils(stencilInstantiation.internalIR.stencils)

    UnparseCode(stencils, id_resolver)
    AddRegisters(stencils, id_resolver)
    SplitMultiStages(stencils)
    AddMsMemlets(stencils, id_resolver)
    AddDoMethodMemlets(stencils, id_resolver)

    exp = Exporter(id_resolver, name=metadata.stencilName)
    exp.Export_ApiFields(metadata.APIFieldIDs)
    exp.Export_TemporaryFields(metadata.temporaryFieldIDs)
    exp.Export_Globals({
        id: stencilInstantiation.internalIR.globalVariableToValue[
            id_resolver.GetName(id)].value
        for id in metadata.globalVariableIDs
    })
    exp.Export_Stencils(stencils)

    exp.sdfg.fill_scope_connectors()
    return exp.sdfg