[SYSTEMDS-2760] Transpose micro benchmark

This micro benchmark considers multiple cases, tallskinny, shortwide
and "normal" matrices. It gives an indication of if the transpose is
parallelizing and using the hardware appropriately.

Closes # 1127
diff --git a/.gitignore b/.gitignore
index f8b2e00..227fabd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -112,4 +112,5 @@
 *.dmlt
 
 # Performance Test artifacts
-scripts/perftest/results
\ No newline at end of file
+scripts/perftest/results
+scripts/perftest/in
\ No newline at end of file
diff --git a/scripts/perftest/MatrixTranspose.sh b/scripts/perftest/MatrixTranspose.sh
new file mode 100755
index 0000000..151d53a
--- /dev/null
+++ b/scripts/perftest/MatrixTranspose.sh
@@ -0,0 +1,95 @@
+#!/usr/bin/env bash
+#-------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#-------------------------------------------------------------
+
+# Set properties
+export LOG4JPROP='scripts/perftest/conf/log4j-off.properties'
+export SYSDS_QUIET=1
+export SYSTEMDS_ROOT=$(pwd)
+export PATH=$SYSTEMDS_ROOT/bin:$PATH
+
+export SYSTEMDS_STANDALONE_OPTS="-Xmx20g -Xms20g -Xmn2000m"
+
+mkdir -p 'scripts/perftest/results'
+
+repeatScript=5
+methodRepeat=5
+sparsities=("1.0 0.1")
+
+for s in $sparsities; do
+
+    LogName="scripts/perftest/results/transpose-skinny-$s.log"
+    rm -f $LogName
+
+    # Baseline
+    perf stat -d -d -d -r $repeatScript \
+        systemds scripts/perftest/scripts/transpose.dml \
+        -config scripts/perftest/conf/std.xml \
+        -stats \
+        -args 2500000 50 $s $methodRepeat \
+        >>$LogName 2>&1
+
+    echo $LogName
+    cat $LogName | grep -E '  r. |Total elapsed time|-----------| instructions |  cycles | CPUs utilized ' | tee $LogName.log
+
+    LogName="scripts/perftest/results/transpose-wide-$s.log"
+    rm -f $LogName
+
+    # Baseline
+    perf stat -d -d -d -r $repeatScript \
+        systemds scripts/perftest/scripts/transpose.dml \
+        -config scripts/perftest/conf/std.xml \
+        -stats \
+        -args 50 2500000 $s $methodRepeat \
+        >>$LogName 2>&1
+
+    echo $LogName
+    cat $LogName | grep -E '  r. |Total elapsed time|-----------| instructions |  cycles | CPUs utilized ' | tee $LogName.log
+
+    LogName="scripts/perftest/results/transpose-full-$s.log"
+    rm -f $LogName
+
+    # Baseline
+    perf stat -d -d -d -r $repeatScript \
+        systemds scripts/perftest/scripts/transpose.dml \
+        -config scripts/perftest/conf/std.xml \
+        -stats \
+        -args 20000 5000 $s $methodRepeat \
+        >>$LogName 2>&1
+
+    echo $LogName
+    cat $LogName | grep -E '  r. |Total elapsed time|-----------| instructions |  cycles | CPUs utilized ' | tee $LogName.log
+done
+
+LogName="scripts/perftest/results/transpose-large.log"
+rm -f $LogName
+# Baseline
+perf stat -d -d -d -r $repeatScript \
+    systemds scripts/perftest/scripts/transpose.dml \
+    -config scripts/perftest/conf/std.xml \
+    -stats \
+    -args 15000000 30 0.8 $methodRepeat \
+    >>$LogName 2>&1
+
+echo $LogName
+cat $LogName | grep -E '  r. |Total elapsed time|-----------| instructions |  cycles | CPUs utilized ' | tee $LogName.log
+
+
diff --git a/scripts/perftest/runAll.sh b/scripts/perftest/runAll.sh
index 88974f9..a168a51 100755
--- a/scripts/perftest/runAll.sh
+++ b/scripts/perftest/runAll.sh
@@ -24,6 +24,7 @@
 # Micro Benchmarks:
 
 ./scripts/perftest/MatrixMult.sh
+./scripts/perftest/MatrixTranspose.sh
 
 # Algorithms Benchmarks:
 
diff --git a/scripts/perftest/scripts/transpose.dml b/scripts/perftest/scripts/transpose.dml
new file mode 100644
index 0000000..ec5e0ac
--- /dev/null
+++ b/scripts/perftest/scripts/transpose.dml
@@ -0,0 +1,26 @@
+#-------------------------------------------------------------
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#-------------------------------------------------------------
+
+x = rand(rows=$1, cols=$2, min= 0.0, max= 1.0, sparsity=$3, seed= 12)
+for(i in 1:$4) {
+    res = t(x) 
+}
+print(sum(res))
\ No newline at end of file