run-experiment.sh 6.6 KB

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