Repository: systemml Updated Branches: refs/heads/master e106966a9 -> c69bd7f30
[SYSTEMML-446] Allow SystemML to run in -exec singlenode with gpu Currently, we can either force all instructions to: - CP (via -exec singlenode) OR - GPU (via -gpu force) However, a typical user may want to run in singlenode with GPU acceleration by using the option '-exec singlenode -gpu'. This commit enables such an option. Closes #684. Project: http://git-wip-us.apache.org/repos/asf/systemml/repo Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/c69bd7f3 Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/c69bd7f3 Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/c69bd7f3 Branch: refs/heads/master Commit: c69bd7f30023cc40351a70586c54cf83d893ce23 Parents: e106966 Author: Niketan Pansare <npan...@us.ibm.com> Authored: Fri Oct 13 18:35:31 2017 -0800 Committer: Niketan Pansare <npan...@us.ibm.com> Committed: Fri Oct 13 19:35:31 2017 -0700 ---------------------------------------------------------------------- src/main/java/org/apache/sysml/hops/Hop.java | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/systemml/blob/c69bd7f3/src/main/java/org/apache/sysml/hops/Hop.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/Hop.java b/src/main/java/org/apache/sysml/hops/Hop.java index 23d4346..ec0a80c 100644 --- a/src/main/java/org/apache/sysml/hops/Hop.java +++ b/src/main/java/org/apache/sysml/hops/Hop.java @@ -195,13 +195,23 @@ public abstract class Hop implements ParseInfo public void checkAndSetForcedPlatform() { if(DMLScript.USE_ACCELERATOR && DMLScript.FORCE_ACCELERATOR && isGPUEnabled()) - _etypeForced = ExecType.GPU; - else if ( DMLScript.rtplatform == RUNTIME_PLATFORM.SINGLE_NODE ) - _etypeForced = ExecType.CP; + _etypeForced = ExecType.GPU; // enabled with -gpu force option + else if ( DMLScript.rtplatform == RUNTIME_PLATFORM.SINGLE_NODE ) { + if(OptimizerUtils.isMemoryBasedOptLevel() && DMLScript.USE_ACCELERATOR && isGPUEnabled()) { + // enabled with -exec singlenode -gpu option + _etypeForced = findExecTypeByMemEstimate(); + if(_etypeForced != ExecType.CP && _etypeForced != ExecType.GPU) + _etypeForced = ExecType.CP; + } + else { + // enabled with -exec singlenode option + _etypeForced = ExecType.CP; + } + } else if ( DMLScript.rtplatform == RUNTIME_PLATFORM.HADOOP ) - _etypeForced = ExecType.MR; + _etypeForced = ExecType.MR; // enabled with -exec hadoop option else if ( DMLScript.rtplatform == RUNTIME_PLATFORM.SPARK ) - _etypeForced = ExecType.SPARK; + _etypeForced = ExecType.SPARK; // enabled with -exec spark option } public void checkAndSetInvalidCPDimsAndSize()