## Uses of Class
org.apache.sysds.runtime.controlprogram.ProgramBlock

Packages that use ProgramBlock
org.apache.sysds.api.jmlc
org.apache.sysds.hops.codegen
org.apache.sysds.hops.cost
org.apache.sysds.hops.recompile
org.apache.sysds.parser
org.apache.sysds.runtime.controlprogram
org.apache.sysds.runtime.controlprogram.paramserv
org.apache.sysds.runtime.controlprogram.parfor
org.apache.sysds.runtime.controlprogram.parfor.opt
org.apache.sysds.runtime.lineage
org.apache.sysds.runtime.util
org.apache.sysds.utils

### Uses of ProgramBlock in org.apache.sysds.api.jmlc

Methods in org.apache.sysds.api.jmlc with parameters of type ProgramBlock
`static void` JMLCUtils.`rCleanupRuntimeProgram(ProgramBlock pb, HashSet<String> outputs)` Cleanup program blocks (called recursively).

### Uses of ProgramBlock in org.apache.sysds.hops.codegen

Methods in org.apache.sysds.hops.codegen with parameters of type ProgramBlock
`static void` SpoofCompiler.`generateCodeFromProgramBlock(ProgramBlock current)`

### Uses of ProgramBlock in org.apache.sysds.hops.cost

Methods in org.apache.sysds.hops.cost with parameters of type ProgramBlock
`static double` CostEstimationWrapper.`getTimeEstimate(ProgramBlock pb, ExecutionContext ec, boolean recursive)`
`double` CostEstimator.`getTimeEstimate(ProgramBlock pb, LocalVariableMap vars, HashMap<String,VarStats> stats, boolean recursive)`

### Uses of ProgramBlock in org.apache.sysds.hops.recompile

Methods in org.apache.sysds.hops.recompile with parameters of type ProgramBlock
`static void` Recompiler.`recompileProgramBlockInstructions(ProgramBlock pb)` This method does NO full program block recompile (no stats update, no rewrites, no recursion) but only regenerates lops and instructions.
`static void` Recompiler.`rRecompileProgramBlock2Forced(ProgramBlock pb, long tid, HashSet<String> fnStack, Types.ExecType et)`

Method parameters in org.apache.sysds.hops.recompile with type arguments of type ProgramBlock
`static void` Recompiler.`recompileProgramBlockHierarchy(ArrayList<ProgramBlock> pbs, LocalVariableMap vars, long tid, boolean inplace, Recompiler.ResetType resetRecompile)`
`static void` Recompiler.`recompileProgramBlockHierarchy2Forced(ArrayList<ProgramBlock> pbs, long tid, HashSet<String> fnStack, Types.ExecType et)` Method to recompile program block hierarchy to forced execution time.

### Uses of ProgramBlock in org.apache.sysds.parser

Methods in org.apache.sysds.parser that return ProgramBlock
`ProgramBlock` DMLTranslator.`createRuntimeProgramBlock(Program prog, StatementBlock sb, DMLConfig config)`

Methods in org.apache.sysds.parser with parameters of type ProgramBlock
`void` DMLTranslator.`codgenHopsDAG(ProgramBlock pb)`

### Uses of ProgramBlock in org.apache.sysds.runtime.controlprogram

Subclasses of ProgramBlock in org.apache.sysds.runtime.controlprogram
`class` `BasicProgramBlock`
`class` `ForProgramBlock`
`class` `FunctionProgramBlock`
`class` `IfProgramBlock`
`class` `ParForProgramBlock` The ParForProgramBlock has the same execution semantics as a ForProgamBlock but executes the independent iterations in parallel.
`class` `WhileProgramBlock`

Methods in org.apache.sysds.runtime.controlprogram that return types with arguments of type ProgramBlock
`ArrayList<ProgramBlock>` ForProgramBlock.`getChildBlocks()`
`ArrayList<ProgramBlock>` IfProgramBlock.`getChildBlocks()`
`ArrayList<ProgramBlock>` WhileProgramBlock.`getChildBlocks()`
`abstract ArrayList<ProgramBlock>` ProgramBlock.`getChildBlocks()` Get the list of child program blocks if nested; otherwise this method returns null.
`ArrayList<ProgramBlock>` FunctionProgramBlock.`getChildBlocks()`
`ArrayList<ProgramBlock>` BasicProgramBlock.`getChildBlocks()`
`ArrayList<ProgramBlock>` IfProgramBlock.`getChildBlocksElseBody()`
`ArrayList<ProgramBlock>` IfProgramBlock.`getChildBlocksIfBody()`
`ArrayList<ProgramBlock>` Program.`getProgramBlocks()`

Methods in org.apache.sysds.runtime.controlprogram with parameters of type ProgramBlock
`void` ForProgramBlock.`addProgramBlock(ProgramBlock childBlock)`
`void` WhileProgramBlock.`addProgramBlock(ProgramBlock childBlock)`
`void` FunctionProgramBlock.`addProgramBlock(ProgramBlock childBlock)`
`void` Program.`addProgramBlock(ProgramBlock pb)`
`void` IfProgramBlock.`addProgramBlockElseBody(ProgramBlock pb)`
`void` IfProgramBlock.`addProgramBlockIfBody(ProgramBlock pb)`

Method parameters in org.apache.sysds.runtime.controlprogram with type arguments of type ProgramBlock
`void` ForProgramBlock.`setChildBlocks(ArrayList<ProgramBlock> pbs)`
`void` WhileProgramBlock.`setChildBlocks(ArrayList<ProgramBlock> childs)`
`void` FunctionProgramBlock.`setChildBlocks(ArrayList<ProgramBlock> pbs)`
`void` IfProgramBlock.`setChildBlocksElseBody(ArrayList<ProgramBlock> blocks)`
`void` IfProgramBlock.`setChildBlocksIfBody(ArrayList<ProgramBlock> blocks)`

### Uses of ProgramBlock in org.apache.sysds.runtime.controlprogram.paramserv

Method parameters in org.apache.sysds.runtime.controlprogram.paramserv with type arguments of type ProgramBlock
`static void` ParamservUtils.`recompileProgramBlocks(int k, List<ProgramBlock> pbs)`
`static void` ParamservUtils.`recompileProgramBlocks(int k, List<ProgramBlock> pbs, boolean forceExecTypeCP)`

### Uses of ProgramBlock in org.apache.sysds.runtime.controlprogram.parfor

Methods in org.apache.sysds.runtime.controlprogram.parfor that return types with arguments of type ProgramBlock
`ArrayList<ProgramBlock>` ParForBody.`getChildBlocks()`

Method parameters in org.apache.sysds.runtime.controlprogram.parfor with type arguments of type ProgramBlock
`void` ParForBody.`setChildBlocks(ArrayList<ProgramBlock> childBlocks)`

Constructor parameters in org.apache.sysds.runtime.controlprogram.parfor with type arguments of type ProgramBlock
Constructor and Description
`ParForBody(ArrayList<ProgramBlock> childBlocks, ArrayList<ParForStatementBlock.ResultVar> resultVars, ExecutionContext ec)`

### Uses of ProgramBlock in org.apache.sysds.runtime.controlprogram.parfor.opt

Methods in org.apache.sysds.runtime.controlprogram.parfor.opt that return ProgramBlock
`ProgramBlock` OptTreePlanMappingAbstract.`getMappedProgramBlock(long id)`
`ProgramBlock` OptTree.`getMappedProgramBlock(long id)`

Methods in org.apache.sysds.runtime.controlprogram.parfor.opt that return types with arguments of type ProgramBlock
`static ArrayList<ProgramBlock>` ProgramRecompiler.`generatePartitialRuntimeProgram(Program rtprog, ArrayList<StatementBlock> sbs)`

Methods in org.apache.sysds.runtime.controlprogram.parfor.opt with parameters of type ProgramBlock
`static void` OptTreePlanChecker.`checkProgramCorrectness(ProgramBlock pb, StatementBlock sb, Set<String> fnStack)`
`static boolean` ProgramRecompiler.`containsAtLeastOneFunction(ProgramBlock pb)`
`long` OptTreePlanMappingRuntime.`putMapping(ProgramBlock pb, OptNode n)`
`long` OptTreePlanMappingAbstract.`putProgMapping(StatementBlock sb, ProgramBlock pb, OptNode n)`
`static boolean` OptTreeConverter.`rContainsSparkInstruction(ProgramBlock pb, boolean inclFunctions)`
`static OptNode` OptTreeConverter.`rCreateAbstractOptNode(StatementBlock sb, ProgramBlock pb, LocalVariableMap vars, boolean topLevel, OptTreePlanMappingAbstract hlMap, Set<String> memo)`
`static OptNode` OptTreeConverter.`rCreateOptNode(ProgramBlock pb, LocalVariableMap vars, boolean topLevel, OptTreePlanMappingRuntime rtMap, boolean storeObjs)`
`void` OptTreePlanMappingAbstract.`replaceMapping(ProgramBlock pb, OptNode n)`
`void` OptTreePlanMappingRuntime.`replaceMapping(ProgramBlock pb, OptNode n)`
`static void` OptTreeConverter.`replaceProgramBlock(List<ProgramBlock> pbs, ProgramBlock pbOld, ProgramBlock pbNew)`
`static void` OptTreeConverter.`replaceProgramBlock(OptNode parent, OptNode n, ProgramBlock pbOld, ProgramBlock pbNew, OptTreePlanMappingAbstract hlMap)`
`static void` OptTreeConverter.`replaceProgramBlock(OptNode parent, OptNode n, ProgramBlock pbOld, ProgramBlock pbNew, OptTreePlanMappingRuntime rtMap)`
`static void` ProgramRecompiler.`rFindAndRecompileIndexingHOP(StatementBlock sb, ProgramBlock pb, String var, ExecutionContext ec, boolean force)` NOTE: if force is set, we set and recompile the respective indexing hops; otherwise, we release the forced exec type and recompile again.

Method parameters in org.apache.sysds.runtime.controlprogram.parfor.opt with type arguments of type ProgramBlock
`static void` OptTreeConverter.`replaceProgramBlock(List<ProgramBlock> pbs, ProgramBlock pbOld, ProgramBlock pbNew)`

### Uses of ProgramBlock in org.apache.sysds.runtime.lineage

Methods in org.apache.sysds.runtime.lineage that return types with arguments of type ProgramBlock
`Map<ProgramBlock,LineageDedupBlock>` Lineage.`getDedupBlocks()`

Methods in org.apache.sysds.runtime.lineage with parameters of type ProgramBlock
`static LineageDedupBlock` LineageDedupUtils.`computeDedupBlock(ProgramBlock fpb, ExecutionContext ec)`
`static long` LineageDedupUtils.`computeNumPaths(ProgramBlock fpb, ExecutionContext ec)`
`void` Lineage.`createDedupPatch(ProgramBlock pb, ExecutionContext ec)`
`void` Lineage.`initializeDedupBlock(ProgramBlock pb, ExecutionContext ec)`
`static LineageDedupBlock` LineageDedupUtils.`initializeDedupBlock(ProgramBlock fpb, ExecutionContext ec)`
`static boolean` LineageDedupUtils.`isValidDedupBlock(ProgramBlock pb, boolean inLoop)`
`static void` LineageDedupUtils.`setNewDedupPatch(LineageDedupBlock ldb, ProgramBlock fpb, ExecutionContext ec)`
`void` Lineage.`traceCurrentDedupPath(ProgramBlock pb, ExecutionContext ec)`
`void` LineageDedupBlock.`traceProgramBlock(ProgramBlock pb, ExecutionContext ec, Collection<Map.Entry<Long,LineageMap>> paths)`

Method parameters in org.apache.sysds.runtime.lineage with type arguments of type ProgramBlock
`static long` LineageDedupUtils.`numPathsInPBs(ArrayList<ProgramBlock> pbs, ExecutionContext ec)`
`void` LineageDedupBlock.`setNumPathsInPBs(ArrayList<ProgramBlock> pbs, ExecutionContext ec)`
`void` LineageDedupBlock.`traceProgramBlocks(ArrayList<ProgramBlock> pbs, ExecutionContext ec)`

### Uses of ProgramBlock in org.apache.sysds.runtime.util

Methods in org.apache.sysds.runtime.util that return types with arguments of type ProgramBlock

`static ArrayList<ProgramBlock>`

ProgramConverter.`rcreateDeepCopyProgramBlocks(ArrayList<ProgramBlock> childBlocks, long pid, int IDPrefix, Set<String> fnStack, Set<String> fnCreated, boolean plain, boolean forceDeepCopy)`
This recursively creates a deep copy of program blocks and transparently replaces filenames according to the specified parallel worker in order to avoid conflicts between parworkers.

Method parameters in org.apache.sysds.runtime.util with type arguments of type ProgramBlock

`static ArrayList<ProgramBlock>`

ProgramConverter.`rcreateDeepCopyProgramBlocks(ArrayList<ProgramBlock> childBlocks, long pid, int IDPrefix, Set<String> fnStack, Set<String> fnCreated, boolean plain, boolean forceDeepCopy)`
This recursively creates a deep copy of program blocks and transparently replaces filenames according to the specified parallel worker in order to avoid conflicts between parworkers.

`static String` ProgramConverter.`serializeProgram(Program prog, ArrayList<ProgramBlock> pbs, HashMap<String,byte[]> clsMap)`

### Uses of ProgramBlock in org.apache.sysds.utils

Methods in org.apache.sysds.utils with parameters of type ProgramBlock
`static String` Explain.`explain(ProgramBlock pb)`