run-experiment.sh 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. #!/bin/bash
  2. # Get the IP addresses
  3. p0addr=$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' duoram_p0)
  4. p1addr=$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' duoram_p1)
  5. p2addr=$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' duoram_p2)
  6. # The Duoram mode and size
  7. # mode is read, write, readwrite, or init
  8. duoramtype=2P
  9. phase=online
  10. mode=read
  11. size=20
  12. iters=128
  13. ramgb=128
  14. if [ "$1" != "" ]; then
  15. mode="$1"
  16. fi
  17. if [ "$2" != "" ]; then
  18. size="$2"
  19. fi
  20. if [ "$3" != "" ]; then
  21. iters="$3"
  22. fi
  23. if [ "$4" != "" ]; then
  24. phase="$4"
  25. fi
  26. if [ "$5" != "" ]; then
  27. duoramtype="$5"
  28. fi
  29. if [ "$6" != "" ]; then
  30. ramgb="$6"
  31. fi
  32. if [ "$duoramtype" = "3P" -a "$phase" = "preproc" ]; then
  33. numdpfs=$iters
  34. if [ "$mode" = "read" -o "$mode" = "write" ]; then
  35. numdpfs=$((3*iters))
  36. fi
  37. if [ "$mode" = "readwrite" ]; then
  38. numdpfs=$((6*iters))
  39. fi
  40. fi
  41. echo ===== Running duoram $mode $size $iters $phase $duoramtype $ramgb
  42. date "+===== Start %s %F %T"
  43. if [ "$4" = "online" -a "$5" = "3P" ]; then
  44. # Run, saving the output
  45. savefilep0=$$.p0.out
  46. savefilep1=$$.p1.out
  47. savefilep2=$$.p2.out
  48. docker exec -w /root/duoram/duoram-online duoram_p2 bash -c "$DUORAM_NUMA_P2 stdbuf -o 0 ./p2 $p0addr $p1addr $size $iters 0 $iters 1 > $savefilep2 2>&1" &
  49. sleep 4
  50. docker exec -w /root/duoram/duoram-online duoram_p1 bash -c "$DUORAM_NUMA_P1 stdbuf -o 0 ./duoram1 $p0addr $p2addr $size $iters 0 $iters 1 > $savefilep1 2>&1" &
  51. sleep 2
  52. docker exec -w /root/duoram/duoram-online duoram_p0 bash -c "$DUORAM_NUMA_P0 stdbuf -o 0 ./duoram0 $p1addr $p2addr $size $iters 0 $iters 1 > $savefilep0 2>&1" &
  53. wait
  54. echo ===== P0 output
  55. docker exec -w /root/duoram/duoram-online duoram_p0 cat $savefilep0
  56. docker exec -w /root/duoram/duoram-online duoram_p0 rm -f $savefilep0
  57. echo ===== P1 output
  58. docker exec -w /root/duoram/duoram-online duoram_p1 cat $savefilep1
  59. docker exec -w /root/duoram/duoram-online duoram_p1 rm -f $savefilep1
  60. echo ===== P2 output
  61. docker exec -w /root/duoram/duoram-online duoram_p2 cat $savefilep2
  62. docker exec -w /root/duoram/duoram-online duoram_p2 rm -f $savefilep2
  63. date "+===== End %s %F %T"
  64. fi
  65. if [ "$4" = "preproc" -a "$5" = "3P" ]; then
  66. # Run, saving the output
  67. savefilep0=$$.p0.out
  68. savefilep1=$$.p1.out
  69. savefilep2=$$.p2.out
  70. docker exec -w /root/duoram/duoram-online/preprocflags duoram_p0 bash -c "rm -f *" &
  71. docker exec -w /root/duoram/duoram-online/preprocflags duoram_p1 bash -c "rm -f *" &
  72. docker exec -w /root/duoram/duoram-online/preprocflags duoram_p2 bash -c "rm -f *" &
  73. wait
  74. docker exec -w /root/duoram/preprocessing duoram_p2 bash -c "$DUORAM_NUMA_P2 stdbuf -o 0 ./p2preprocessing $p0addr $p1addr $numdpfs $size $ramgb > $savefilep2 2>&1" &
  75. sleep 4
  76. docker exec -w /root/duoram/preprocessing duoram_p1 bash -c "$DUORAM_NUMA_P1 stdbuf -o 0 ./preprocessing1 $p0addr $p2addr $numdpfs $size $ramgb > $savefilep1 2>&1" &
  77. sleep 2
  78. docker exec -w /root/duoram/preprocessing duoram_p0 bash -c "$DUORAM_NUMA_P0 stdbuf -o 0 ./preprocessing0 $p1addr $p2addr $numdpfs $size $ramgb > $savefilep0 2>&1" &
  79. wait
  80. echo ===== P0 output
  81. docker exec -w /root/duoram/preprocessing duoram_p0 cat $savefilep0
  82. docker exec -w /root/duoram/preprocessing duoram_p0 rm -f $savefilep0
  83. echo ===== P1 output
  84. docker exec -w /root/duoram/preprocessing duoram_p1 cat $savefilep1
  85. docker exec -w /root/duoram/preprocessing duoram_p1 rm -f $savefilep1
  86. echo ===== P2 output
  87. docker exec -w /root/duoram/preprocessing duoram_p2 cat $savefilep2
  88. docker exec -w /root/duoram/preprocessing duoram_p2 rm -f $savefilep2
  89. date "+===== End %s %F %T"
  90. fi
  91. if [ "$1" = "read" -a "$5" = "2P" ]; then
  92. # Run, saving the output
  93. savefilep0=$$.p0.out
  94. savefilep1=$$.p1.out
  95. nproc0=$(docker exec -w /root/duoram/cpir-read/cxx duoram_p0 bash -c "$DUORAM_NUMA_P0 nproc 2>/dev/null")
  96. nproc1=$(docker exec -w /root/duoram/cpir-read/cxx duoram_p1 bash -c "$DUORAM_NUMA_P1 nproc 2>/dev/null")
  97. docker exec -w /root/duoram/cpir-read/cxx duoram_p1 bash -c "$DUORAM_NUMA_P1 stdbuf -o 0 ./spir_test1 $p0addr $size $nproc1 $iters $iters > $savefilep1 2>&1" &
  98. echo "P1 launched"
  99. sleep 4
  100. docker exec -w /root/duoram/cpir-read/cxx duoram_p0 bash -c "$DUORAM_NUMA_P0 stdbuf -o 0 ./spir_test0 $p1addr $size $nproc0 $iters $iters > $savefilep0 2>&1" &
  101. echo "P0 launched"
  102. wait
  103. echo ===== P0 output
  104. docker exec -w /root/duoram/cpir-read/cxx duoram_p0 cat $savefilep0
  105. docker exec -w /root/duoram/cpir-read/cxx duoram_p0 rm -f $savefilep0
  106. echo ===== P1 output
  107. docker exec -w /root/duoram/cpir-read/cxx duoram_p1 cat $savefilep1
  108. docker exec -w /root/duoram/cpir-read/cxx duoram_p1 rm -f $savefilep1
  109. date "+===== End %s %F %T"
  110. fi
  111. if [ "$1" = "write" -a "$5" = "2P" -a "$4" = "preproc" ]; then
  112. # Run, saving the output
  113. savefilep0=$$.p0.out
  114. savefilep1=$$.p1.out
  115. docker exec -w /root/duoram/duoram-online/preprocflags duoram_p0 bash -c "rm -f *" &
  116. docker exec -w /root/duoram/duoram-online/preprocflags duoram_p1 bash -c "rm -f *" &
  117. wait
  118. docker exec -w /root/duoram/2p-preprocessing duoram_p1 bash -c "$DUORAM_NUMA_P1 stdbuf -o 0 ./OT $p0addr $p1addr 1 $((128*iters*size*3)) > $savefilep1 2>&1" &
  119. echo "P1 launched"
  120. sleep 1
  121. docker exec -w /root/duoram/2p-preprocessing duoram_p0 bash -c "$DUORAM_NUMA_P0 stdbuf -o 0 ./OT $p0addr $p1addr 0 $((128*iters*size*3)) > $savefilep0 2>&1" &
  122. echo "P0 launched"
  123. sleep 2
  124. wait
  125. docker exec -w /root/duoram/2p-preprocessing duoram_p1 bash -c "$DUORAM_NUMA_P1 stdbuf -o 0 ./preprocessing1 $p0addr $iters $size $ramgb >> $savefilep1 2>&1" &
  126. echo "P1 launched"
  127. sleep 4
  128. docker exec -w /root/duoram/2p-preprocessing duoram_p0 bash -c "$DUORAM_NUMA_P0 stdbuf -o 0 ./preprocessing0 $p1addr $iters $size $ramgb >> $savefilep0 2>&1" &
  129. echo "P0 launched"
  130. wait
  131. echo ===== P0 output
  132. docker exec -w /root/duoram/2p-preprocessing duoram_p0 cat $savefilep0
  133. docker exec -w /root/duoram/2p-preprocessing duoram_p0 rm -f $savefilep0
  134. echo ===== P1 output
  135. docker exec -w /root/duoram/2p-preprocessing duoram_p1 cat $savefilep1
  136. docker exec -w /root/duoram/2p-preprocessing duoram_p1 rm -f $savefilep1
  137. date "+===== End %s %F %T"
  138. fi
  139. if [ "$1" = "write" -a "$5" = "2P" -a "$4" = "online" ]; then
  140. # Run, saving the output
  141. savefilep0=$$.p0.out
  142. savefilep1=$$.p1.out
  143. docker exec -w /root/duoram/duoram-online duoram_p1 bash -c "$DUORAM_NUMA_P1 stdbuf -o 0 ./2Pduoram1 $p0addr $p2addr $size $iters $iters $iters 1 > $savefilep1 2>&1" &
  144. echo "P1 launched"
  145. sleep 4
  146. docker exec -w /root/duoram/duoram-online duoram_p0 bash -c "$DUORAM_NUMA_P0 stdbuf -o 0 ./2Pduoram0 $p1addr $p2addr $size $iters $iters $iters 1 > $savefilep0 2>&1" &
  147. echo "P0 launched"
  148. wait
  149. echo ===== P0 output
  150. docker exec -w /root/duoram/duoram-online duoram_p0 cat $savefilep0
  151. docker exec -w /root/duoram/duoram-online duoram_p0 rm -f $savefilep0
  152. echo ===== P1 output
  153. docker exec -w /root/duoram/duoram-online duoram_p1 cat $savefilep1
  154. docker exec -w /root/duoram/duoram-online duoram_p1 rm -f $savefilep1
  155. date "+===== End %s %F %T"
  156. fi