This is an automated email from the ASF dual-hosted git repository. niketanpansare pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/systemml.git
commit adff5ee743992fdcfed9923ee876791e01532220 Author: Niketan Pansare <npan...@us.ibm.com> AuthorDate: Thu Feb 28 09:29:56 2019 -0800 added profiling info --- .../sysml/runtime/matrix/data/LibMatrixDNN.java | 37 ++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNN.java b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNN.java index 0f932ba..e2742d8 100644 --- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNN.java +++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNN.java @@ -333,10 +333,25 @@ public class LibMatrixDNN { MatrixBlock W2 = W.slice(D, D+M-1); MatrixBlock c_t = null; MatrixBlock out_t = null; + + boolean profile = true; + long t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0; for(int t = 1; t <= T; t++) { + long s = profile ? System.nanoTime() : 0; MatrixBlock X_t = X.slice(0, N-1, (t-1)*D, t*D-1, new MatrixBlock()); + if(profile) { + long e = System.nanoTime(); + t1 += e - s; + } + + s = profile ? System.nanoTime() : 0; MatrixBlock ifog_raw = add(add(matmult(X_t, W1, numThreads), matmult(out_prev, W2, numThreads), true), b, true); + if(profile) { + long e = System.nanoTime(); + t2 += e - s; + } + s = profile ? System.nanoTime() : 0; MatrixBlock ifo = ifog_raw.slice(0, N-1, 0, 3*M-1, new MatrixBlock()); ifo = sigmoid(ifo, numThreads, true); MatrixBlock i = ifo.slice(0, N-1, 0, M-1, new MatrixBlock()); @@ -345,16 +360,30 @@ public class LibMatrixDNN { MatrixBlock g = ifog_raw.slice(0, N-1, 3*M, 4*M-1, new MatrixBlock()); g = tanh(g, numThreads, true); + if(profile) { + long e = System.nanoTime(); + t3 += e - s; + } + s = profile ? System.nanoTime() : 0; // c_t = f*c_prev + i*g c_t = plusMultiply(multiply(f, c_prev, true), i, g); - // out_t = o*tanh(c) out_t = multiply(o, tanh(c_t, numThreads, false), true); + if(profile) { + long e = System.nanoTime(); + t4 += e - s; + } + s = profile ? System.nanoTime() : 0; if(return_seq) { out = out.leftIndexingOperations(out_t, 0, N-1, (t-1)*M, t*M-1, new MatrixBlock(), UpdateType.INPLACE); } + if(profile) { + long e = System.nanoTime(); + t5 += e - s; + } + out_prev = out_t; c_prev = c_t; @@ -369,7 +398,11 @@ public class LibMatrixDNN { c.copy(c_t); else c.copy(c0); - + System.out.println("Time taken in lstm forward call: [X_t indexing:" + String.format("%.3f", t1*1e-9) + + ", ifog_raw computation:" + String.format("%.3f", t2*1e-9) + + ", lstm_squash computation:" + String.format("%.3f", t3*1e-9) + + ", c_t/out_t computation:" + String.format("%.3f", t4*1e-9) + + ", out leftIndexing computation:" + String.format("%.3f", t5*1e-9)); } /**