Repository: systemml Updated Branches: refs/heads/master 6b877b04c -> 3ca91e68c
http://git-wip-us.apache.org/repos/asf/systemml/blob/3ca91e68/src/main/java/org/apache/sysml/hops/UnaryOp.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/UnaryOp.java b/src/main/java/org/apache/sysml/hops/UnaryOp.java index 94b33f8..2e03a2b 100644 --- a/src/main/java/org/apache/sysml/hops/UnaryOp.java +++ b/src/main/java/org/apache/sysml/hops/UnaryOp.java @@ -113,6 +113,7 @@ public class UnaryOp extends Hop implements MultiThreadedHop case ASIN:case ACOS:case ATAN: case SINH:case COSH: case TANH: case SIGN: + case SIGMOID: return true; default: return false; http://git-wip-us.apache.org/repos/asf/systemml/blob/3ca91e68/src/main/java/org/apache/sysml/runtime/instructions/GPUInstructionParser.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/instructions/GPUInstructionParser.java b/src/main/java/org/apache/sysml/runtime/instructions/GPUInstructionParser.java index ae19969..c07f2b8 100644 --- a/src/main/java/org/apache/sysml/runtime/instructions/GPUInstructionParser.java +++ b/src/main/java/org/apache/sysml/runtime/instructions/GPUInstructionParser.java @@ -99,6 +99,7 @@ public class GPUInstructionParser extends InstructionParser String2GPUInstructionType.put( "acos", GPUINSTRUCTION_TYPE.BuiltinUnary); String2GPUInstructionType.put( "atan", GPUINSTRUCTION_TYPE.BuiltinUnary); String2GPUInstructionType.put( "sign", GPUINSTRUCTION_TYPE.BuiltinUnary); + String2GPUInstructionType.put( "sigmoid", GPUINSTRUCTION_TYPE.BuiltinUnary); // Binary Builtin functions String2GPUInstructionType.put( "solve", GPUINSTRUCTION_TYPE.BuiltinBinary); http://git-wip-us.apache.org/repos/asf/systemml/blob/3ca91e68/src/main/java/org/apache/sysml/runtime/instructions/gpu/GPUInstruction.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/instructions/gpu/GPUInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/gpu/GPUInstruction.java index 1883582..87bac47 100644 --- a/src/main/java/org/apache/sysml/runtime/instructions/gpu/GPUInstruction.java +++ b/src/main/java/org/apache/sysml/runtime/instructions/gpu/GPUInstruction.java @@ -113,6 +113,7 @@ public abstract class GPUInstruction extends Instruction { public final static String MISC_TIMER_ACOS_KERNEL = "acosk"; // time spent in the acos kernel public final static String MISC_TIMER_ATAN_KERNEL = "atank"; // time spent in the atan kernel public final static String MISC_TIMER_SIGN_KERNEL = "signk"; // time spent in the sign kernel + public final static String MISC_TIMER_SIGMOID_KERNEL = "sigmk"; // time spent in the sigmoid kernel public final static String MISC_TIMER_CBIND_KERNEL = "cbindk"; // time spent in the cbind kernel public final static String MISC_TIMER_RBIND_KERNEL = "rbindk"; // time spent in the rbind kernel http://git-wip-us.apache.org/repos/asf/systemml/blob/3ca91e68/src/main/java/org/apache/sysml/runtime/instructions/gpu/MatrixBuiltinGPUInstruction.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/instructions/gpu/MatrixBuiltinGPUInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/gpu/MatrixBuiltinGPUInstruction.java index 1718d69..27eeefe 100644 --- a/src/main/java/org/apache/sysml/runtime/instructions/gpu/MatrixBuiltinGPUInstruction.java +++ b/src/main/java/org/apache/sysml/runtime/instructions/gpu/MatrixBuiltinGPUInstruction.java @@ -80,6 +80,8 @@ public class MatrixBuiltinGPUInstruction extends BuiltinUnaryGPUInstruction { LibMatrixCUDA.atan(ec, ec.getGPUContext(0), getExtendedOpcode(), mat, _output.getName()); break; case "sign": LibMatrixCUDA.sign(ec, ec.getGPUContext(0), getExtendedOpcode(), mat, _output.getName()); break; + case "sigmoid": + LibMatrixCUDA.sigmoid(ec, ec.getGPUContext(0), getExtendedOpcode(), mat, _output.getName()); break; default: throw new DMLRuntimeException("Unsupported GPU operator:" + opcode); } http://git-wip-us.apache.org/repos/asf/systemml/blob/3ca91e68/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixCUDA.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixCUDA.java b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixCUDA.java index 59a9e49..bbc4727 100644 --- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixCUDA.java +++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixCUDA.java @@ -2265,6 +2265,23 @@ public class LibMatrixCUDA { // sign(0) = 0 unaryOp(ec, gCtx, in1, "matrix_sign", 0, outputName, instName, GPUInstruction.MISC_TIMER_SIGN_KERNEL); } + + /** + * Performs an "sigmoid" operation on a matrix on the GPU + * @param ec execution context + * @param gCtx a valid {@link GPUContext} + * @param instName the invoking instruction's name for record {@link Statistics}. + * @param in1 input matrix + * @param outputName output matrix name + * @throws DMLRuntimeException if DMLRuntimeException occurs + */ + public static void sigmoid(ExecutionContext ec, GPUContext gCtx, String instName, MatrixObject in1, String outputName) throws DMLRuntimeException { + if(LOG.isTraceEnabled()) { + LOG.trace("GPU : sigmoid" + ", GPUContext=" + gCtx); + } + // sigmoid(0) = 0.5 + unaryOp(ec, gCtx, in1, "matrix_sigmoid", 0.5, outputName, instName, GPUInstruction.MISC_TIMER_SIGMOID_KERNEL); + } /**