Ver código fonte

Improved the timing experiment script.

Improved the timing experiment bash script so that it can run both the controller/worker version and the cudadl version. It is also more customizable.
Steven Engler 8 anos atrás
pai
commit
47faf09287
3 arquivos alterados com 66 adições e 25 exclusões
  1. 9 0
      gen_all_N.sh
  2. 57 0
      run_timing_experiment.sh
  3. 0 25
      run_timing_multiprocess.sh

+ 9 - 0
gen_all_N.sh

@@ -0,0 +1,9 @@
+#!/bin/bash
+#
+DATA_PATH="/home/sengler/data"
+PROBLEMS=(44 46 48 50 52 54 56 58 60 62 64 66 68 70 74 78 82 84 72 76 80 86 88)
+#
+for i in ${PROBLEMS[@]} ; do
+    echo "Starting ${i}..."
+    ./gen_N 1536 $i > "${DATA_PATH}/N_${i}" 2> /dev/null
+done

+ 57 - 0
run_timing_experiment.sh

@@ -0,0 +1,57 @@
+#!/bin/bash
+#
+if [ "${1}" == "dlrho" ] && [ "${#}" != "2" ] ; then
+    echo "Usage (dlrho): ${0} dlrho mem_per_computer"
+    exit
+elif [ "${1}" == "controller" ] && [ "${#}" != "4" ] ; then
+    echo "Usage (controller): ${0} controller mem_per_computer num_dpnodes num_workers"
+    exit
+elif [ "${#}" != "2" ] && [ "${#}" != "4" ] ; then
+    echo "Usage: ${0} {dlrho, controller} mem_per_computer [num_dpnodes] [num_workers]"
+    exit
+fi
+#
+DATA_PATH="/home/sengler/data"
+PORT=42000
+PROBLEMS=(44 46 48 50 52 54 56 58 60 62 64 66 68 70 74 78 82 84 72 76 80 86 88)
+#
+MEM_PER_COMPUTER=${2} # ex: 200
+#
+NUM_DPNODES=${3} # ex: 1
+NUM_WORKERS=${4} # ex: 8
+#
+MEM_PER_DPNODE=$((MEM_PER_COMPUTER/NUM_DPNODES))
+#
+# Make sure to run 'gen_all_N.sh' first to generate the problems.
+#
+for i in ${PROBLEMS[@]} ; do
+    echo "Starting ${i}..."
+    #
+    if [ ! -f "${DATA_PATH}/N_${i}" ]; then
+        echo "File ${DATA_PATH}/N_${i} was not found. Skipping..."
+        continue
+    fi
+    #
+    if [ "${1}" == "dlrho" ] ; then
+        ./dlrho $MEM_PER_COMPUTER < "${DATA_PATH}/N_${i}" > "${DATA_PATH}/dlrho_${i}" 2>&1
+    elif [ "${1}" == "controller" ] ; then
+        ./controller -p $PORT -n $NUM_DPNODES -m $MEM_PER_DPNODE "${DATA_PATH}/N_${i}" 1 > "${DATA_PATH}/controller_${i}" 2>&1 &
+        CONTROLLER_PID=$!
+        trap "kill $CONTROLLER_PID ; exit" SIGINT
+        #
+        sleep 5
+        # let the controller have time to start listening
+        #
+        for (( j=0; j<${NUM_DPNODES}; j++)); do
+            ./dpnode 127.0.1.1 $PORT > "${DATA_PATH}/dpnode_${i}_${j}" 2>&1 &
+        done
+        #
+        for (( j=0; j<${NUM_WORKERS}; j++)); do
+            ./worker 127.0.1.1 $PORT $j > "${DATA_PATH}/worker_${i}_${j}" 2>&1 &
+        done
+        #
+        wait $CONTROLLER_PID
+    else
+        echo "Option ${1} not recognized."
+    fi
+done

+ 0 - 25
run_timing_multiprocess.sh

@@ -1,25 +0,0 @@
-#!/bin/bash
-#
-DATA_PATH="/home/sengler/data-multiprocess"
-PORT=42000
-#
-for i in 44 46 48 50 52 54 56 58 60 62 64 66 68 70 74 78 82 84 72 76 80 86 88 ; do
-    echo "Starting ${i}..."
-    ./gen_N 1536 $i > "${DATA_PATH}/N_${i}" 2> /dev/null
-    #
-    ./controller -p $PORT -n 1 -m 240 "${DATA_PATH}/N_${i}" 1 > "${DATA_PATH}/controller_${i}" 2>&1 &
-    CONTROLLER_PID=$!
-    trap "kill $CONTROLLER_PID ; exit" SIGINT
-    echo "Started Controller"
-    #
-    sleep 5
-    #
-    ./dpnode 127.0.1.1 $PORT > "${DATA_PATH}/dpnode_${i}" 2>&1 &
-    echo "Started DPNode"
-    #
-    for j in 0 1 2 3 4 5 6 7; do
-        ./worker 127.0.1.1 $PORT $j > "${DATA_PATH}/worker_${i}_${j}" 2>&1 &
-    done
-    #
-    wait $CONTROLLER_PID
-done