Package org.apache.sysds.api.mlcontext
Class ScriptExecutor
java.lang.Object
org.apache.sysds.api.mlcontext.ScriptExecutor
ScriptExecutor executes a DML or PYDML Script object using SystemDS. This is
accomplished by calling the
execute(org.apache.sysds.api.mlcontext.Script) method.
Script execution via the MLContext API typically consists of the following steps:
- Language Steps
- Parse script into program
- Live variable analysis
- Validate program
- HOP (High-Level Operator) Steps
- Construct HOP DAGs
- Static rewrites
- Intra-/Inter-procedural analysis
- Dynamic rewrites
- Compute memory estimates
- Rewrite persistent reads and writes (MLContext-specific)
- LOP (Low-Level Operator) Steps
- Contruct LOP DAGs
- Generate runtime program
- Execute runtime program
- Dynamic recompilation
Modifications to these steps can be accomplished by subclassing
ScriptExecutor. For more information, please see the execute(org.apache.sysds.api.mlcontext.Script) method.
-
Constructor Summary
ConstructorsConstructorDescriptionScriptExecutor constructor.ScriptExecutor(DMLConfig config) ScriptExecutor constructor, where the configuration properties are passed in. -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidCompile a DML or PYDML script.Execute a DML or PYDML script.Obtain the SystemDS configuration properties.Obtain the programObtain the translatorObtain the execution contextObtain the current execution environment.Obtain the runtime programObtain the Script object associated with this ScriptExecutorbooleanObtain whether or not all values should be maintained in the symbol table after execution.voidSet the SystemDS configuration properties.voidsetExecutionType(MLContext.ExecutionType executionType) Set the execution environment.voidsetExplain(boolean explain) Whether or not an explanation of the DML/PYDML program should be output to standard output.voidsetExplainLevel(MLContext.ExplainLevel explainLevel) Set the level of program explanation that should be displayed if explain is set to true.voidsetForceGPU(boolean enabled) Whether or not to force GPU usage.voidsetGPU(boolean enabled) Whether or not to enable GPU usage.voidsetInit(boolean init) Whether or not to initialize the scratch_space, bufferpool, etc.voidsetMaintainSymbolTable(boolean maintainSymbolTable) Set whether or not all values should be maintained in the symbol table after execution.voidsetStatistics(boolean statistics) Whether or not statistics about the DML/PYDML program should be output to standard output.voidsetStatisticsMaxHeavyHitters(int maxHeavyHitters) Set the maximum number of heavy hitters to display with statistics.
-
Constructor Details
-
ScriptExecutor
public ScriptExecutor()ScriptExecutor constructor. -
ScriptExecutor
ScriptExecutor constructor, where the configuration properties are passed in.- Parameters:
config- the configuration properties to use by the ScriptExecutor
-
-
Method Details
-
compile
-
compile
Compile a DML or PYDML script. This will help analysis of DML programs that have dynamic recompilation flag set to false without actually executing it. This is broken down into the following primary methods:setup(Script)parseScript()liveVariableAnalysis()validateScript()constructHops()rewriteHops()rewritePersistentReadsAndWrites()constructLops()generateRuntimeProgram()showExplanation()countCompiledMRJobsAndSparkInstructions()initializeCachingAndScratchSpace()cleanupRuntimeProgram()
- Parameters:
script- the DML or PYDML script to compileperformHOPRewrites- should perform static rewrites, perform intra-/inter-procedural analysis to propagate size information into functions and apply dynamic rewrites
-
execute
Execute a DML or PYDML script. This is broken down into the following primary methods:compile(Script)createAndInitializeExecutionContext()executeRuntimeProgram()cleanupAfterExecution()
- Parameters:
script- the DML or PYDML script to execute- Returns:
- the results as a MLResults object
-
setConfig
Set the SystemDS configuration properties.- Parameters:
config- The configuration properties
-
getDmlProgram
Obtain the program- Returns:
- the program
-
getDmlTranslator
Obtain the translator- Returns:
- the translator
-
getRuntimeProgram
Obtain the runtime program- Returns:
- the runtime program
-
getExecutionContext
Obtain the execution context- Returns:
- the execution context
-
getScript
Obtain the Script object associated with this ScriptExecutor- Returns:
- the Script object associated with this ScriptExecutor
-
setExplain
public void setExplain(boolean explain) Whether or not an explanation of the DML/PYDML program should be output to standard output.- Parameters:
explain-trueif explanation should be output,falseotherwise
-
setStatistics
public void setStatistics(boolean statistics) Whether or not statistics about the DML/PYDML program should be output to standard output.- Parameters:
statistics-trueif statistics should be output,falseotherwise
-
setStatisticsMaxHeavyHitters
public void setStatisticsMaxHeavyHitters(int maxHeavyHitters) Set the maximum number of heavy hitters to display with statistics.- Parameters:
maxHeavyHitters- the maximum number of heavy hitters
-
isMaintainSymbolTable
public boolean isMaintainSymbolTable()Obtain whether or not all values should be maintained in the symbol table after execution.- Returns:
trueif all values should be maintained in the symbol table,falseotherwise
-
setMaintainSymbolTable
public void setMaintainSymbolTable(boolean maintainSymbolTable) Set whether or not all values should be maintained in the symbol table after execution.- Parameters:
maintainSymbolTable-trueif all values should be maintained in the symbol table,falseotherwise
-
setInit
public void setInit(boolean init) Whether or not to initialize the scratch_space, bufferpool, etc. Note that any redundant initialize (e.g., multiple scripts from one MLContext) clears existing files from the scratch space and buffer pool.- Parameters:
init-trueif should initialize,falseotherwise
-
setExplainLevel
Set the level of program explanation that should be displayed if explain is set to true.- Parameters:
explainLevel- the level of program explanation
-
setGPU
public void setGPU(boolean enabled) Whether or not to enable GPU usage.- Parameters:
enabled-trueif enabled,falseotherwise
-
setForceGPU
public void setForceGPU(boolean enabled) Whether or not to force GPU usage.- Parameters:
enabled-trueif enabled,falseotherwise
-
getConfig
Obtain the SystemDS configuration properties.- Returns:
- the configuration properties
-
getExecutionType
Obtain the current execution environment.- Returns:
- the execution environment
-
setExecutionType
Set the execution environment.- Parameters:
executionType- the execution environment
-