Browse Source

2P writes

Ian Goldberg 1 year ago
parent
commit
d60d48f128

+ 5 - 5
2p-preprocessing/Makefile

@@ -5,12 +5,12 @@ LIBS = -lbsd -lboost_system -lboost_thread -pthread
 FLAGS = -DBOOST_ERROR_CODE_HEADER_ONLY #-DDEBUG 
 DEBUGFLAGS = -DBOOST_ERROR_CODE_HEADER_ONLY -DDEBUG 
 build: ot_blinds.cpp ot_blinds.h
-	g++ -DECCLVL=251 -I ~/OTExtension/extern/ENCRYPTO_utils/src/ -I ~/OTExtension/ -O3 -DNDEBUG -std=gnu++17 -o ot_blinds.cpp.o -c ot_blinds.cpp
-	g++ -O3 -DNDEBUG ot_blinds.cpp.o -o OT -lstdc++fs -lotextension -lencrypto_utils -lrelic_s -lpthread -l boost_system -l boost_thread -l gmp -l gmpxx -l crypto
+	g++ -DECCLVL=251 -I ~/OTExtension/extern/ENCRYPTO_utils/src/ -I ~/OTExtension/ -O3 -DNDEBUG -std=gnu++17 -o ot_blinds.o -c ot_blinds.cpp
+	g++ -O3 -DNDEBUG ot_blinds.o -o OT -lstdc++fs -lotextension -lencrypto_utils -lrelic_s -lpthread -l boost_system -l boost_thread -l gmp -l gmpxx -l crypto
 
 debug: ot_blinds.cpp ot_blinds.h
-	g++ -DECCLVL=251 -I ~/OTExtension/extern/ENCRYPTO_utils/src/ -I ~/OTExtension/ -O3 -g -std=gnu++17 -o ot_blinds.cpp.o -c ot_blinds.cpp
-	g++ -O3 -g ot_blinds.cpp.o -o OT -lstdc++fs -lotextension -lencrypto_utils -lrelic_s -lpthread -l boost_system -l boost_thread -l gmp -l gmpxx -l crypto
+	g++ -DECCLVL=251 -I ~/OTExtension/extern/ENCRYPTO_utils/src/ -I ~/OTExtension/ -O3 -g -std=gnu++17 -o ot_blinds.o -c ot_blinds.cpp
+	g++ -O3 -g ot_blinds.o -o OT -lstdc++fs -lotextension -lencrypto_utils -lrelic_s -lpthread -l boost_system -l boost_thread -l gmp -l gmpxx -l crypto
 
 preprocessing0: preprocessing.cpp mpc.h block.h aes.h bitutils.h prg.h prg_aes_impl.h
 	$(CXX) $(CXXFLAGS) -o preprocessing0 preprocessing.cpp $(LIBS) $(FLAGS) -DPARTY=0 -I.
@@ -36,5 +36,5 @@ directories: $(BINDIR)
 
 clean:
 	rm -f preprocessing1 preprocessing0
-	rm ot_blinds.cpp.o
+	rm ot_blinds.o
 	rm OT

+ 6 - 6
2p-preprocessing/preprocessing.cpp

@@ -431,12 +431,12 @@ int main(int argc, char *argv[])
 
 	const size_t db_nitems = 1ULL << expo;
  size_t RAM_needed = 0;
- RAM_needed = n_threads *  9 * ((sizeof(__m128i) * db_nitems));
- //std::cout << "RAM needed = " << RAM_needed << " bytes = " << RAM_needed/1073741824 << " GiB" << std::endl;
+ RAM_needed = n_threads * 18 * db_nitems;
+ std::cout << "RAM needed = " << RAM_needed << " bytes = " << RAM_needed/1073741824 << " GiB" << std::endl;
  size_t n_batches = std::ceil(double(RAM_needed)/(1073741824 * maxRAM));
- //std::cout << "n_batches = " << n_batches << std::endl;
+ std::cout << "n_batches = " << n_batches << std::endl;
  size_t thread_per_batch = std::ceil(double(n_threads)/n_batches);
- //std::cout << "thread_per_batch = " << thread_per_batch << std::endl;
+ std::cout << "thread_per_batch = " << thread_per_batch << std::endl;
 
 	std::vector<socket_t> socketsPb;
 	for (size_t j = 0; j < number_of_sockets + 1; ++j)
@@ -539,8 +539,8 @@ bool party;
 }
  auto end = std::chrono::steady_clock::now();
 	std::chrono::duration<double> elapsed_seconds = end - start;
-	std::cout << "WallClockTime: " << elapsed_seconds.count() << "s" << std::endl<< std::endl;
- std::cout << "CommunicationCost: " << communication_cost/1024 << " KiB" << std::endl;
+	std::cout << "WallClockTime: " << elapsed_seconds.count() << " s" << std::endl;
+ std::cout << "CommunicationCost: " << communication_cost << " bytes" << std::endl;
  
 
 	if(!party)

+ 1 - 1
Docker/Dockerfile

@@ -1,7 +1,7 @@
 FROM ubuntu:20.04
 ARG DEBIAN_FRONTEND=noninteractive 
 #the above line is avoid interaction
-RUN apt update && apt install -y wget git build-essential net-tools iproute2 iperf iputils-ping libgmp-dev libbsd-dev libssl-dev libboost-all-dev iproute2 iperf iputils-ping wget cargo cmake time
+RUN apt update && apt install -y wget git build-essential net-tools iproute2 iperf iputils-ping libgmp-dev libbsd-dev libssl-dev libboost-all-dev iproute2 iperf iputils-ping wget cargo cmake numactl time
 WORKDIR /root
 RUN git clone https://github.com/encryptogroup/OTExtension.git
 RUN cd OTExtension/ && git checkout a9aa1ac94b7b3f171424af26c211c13dd342f712 && mkdir build && cd build && cmake .. && make && make install

+ 3 - 3
Docker/run-docker.sh

@@ -10,8 +10,8 @@ fi
 # The SYS_NICE capability allows you to use numactl to pin processes to
 # NUMA nodes and/or individual cores
 
-docker run --cap-add SYS_NICE -d --rm --name duoram_p0 $S0ARG -t duoram
-docker run --cap-add SYS_NICE -d --rm --name duoram_p1 $S1ARG -t duoram
-docker run --cap-add SYS_NICE -d --rm --name duoram_p2 $S2ARG -t duoram
+docker run --cap-add SYS_NICE -d --rm --name duoram_p0 -h duoram_p0 $S0ARG -t duoram
+docker run --cap-add SYS_NICE -d --rm --name duoram_p1 -h duoram_p1 $S1ARG -t duoram
+docker run --cap-add SYS_NICE -d --rm --name duoram_p2 -h duoram_p2 $S2ARG -t duoram
 
 echo "All dockers launched"

+ 15 - 23
Docker/run-experiment.sh

@@ -103,10 +103,10 @@ date "+===== Start %s %F %T"
         savefilep0=$$.p0.out
         savefilep1=$$.p1.out
         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" &
-        echo "P0 launched"
+        echo "P1 launched"
         sleep 4
         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" &
-        echo "P1 launched"
+        echo "P0 launched"
         wait
         echo ===== P0 output
         docker exec -w /root/duoram/cpir-read/cxx duoram_p0 cat $savefilep0
@@ -121,15 +121,21 @@ date "+===== Start %s %F %T"
         # Run, saving the output
         savefilep0=$$.p0.out
         savefilep1=$$.p1.out
-        docker exec -w /root/duoram/2p-preprocessing duoram_p1 ./OT $p0addr $p1addr 1  $((128*iters*size*3))  &
+        docker exec -w /root/duoram/duoram-online/preprocflags duoram_p0 bash -c "rm -f *" &
+        docker exec -w /root/duoram/duoram-online/preprocflags duoram_p1 bash -c "rm -f *" &
+        wait
+        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" &
         echo "P1 launched"
         sleep 1
-        docker exec -w /root/duoram/2p-preprocessing duoram_p0 ./OT $p0addr $p1addr 0  $((128*iters*size*3))  &
+        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" &
+        echo "P0 launched"
         sleep 2
         wait
-        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" &
+        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" &
+        echo "P1 launched"
         sleep 4
-        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" &
+        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" &
+        echo "P0 launched"
         wait
         echo ===== P0 output
         docker exec -w /root/duoram/2p-preprocessing duoram_p0 cat $savefilep0
@@ -140,29 +146,15 @@ date "+===== Start %s %F %T"
         date "+===== End %s %F %T"
     fi
 
-    if [ "$1" = "readwrite" -a "$5" = "2P" -a "$4" = "online" ]; then
+    if [ "$1" = "write" -a "$5" = "2P" -a "$4" = "online" ]; then
         # Run, saving the output
         savefilep0=$$.p0.out
         savefilep1=$$.p1.out
-        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" &
-        echo "P0 launched"
-        sleep 4
-        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" &
-        echo "P1 launched"
-        wait
-        docker exec -w /root/duoram/2p-preprocessing duoram_p1 ./OT $p0addr $p1addr 1  $((128*iters*size*3))  &
-        echo "P1 launched"
-        sleep 1
-        docker exec -w /root/duoram/2p-preprocessing duoram_p0 ./OT $p0addr $p1addr 0  $((128*iters*size*3))  &
-        sleep 2
-        wait
-        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" &
-        sleep 4
-        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" &
-        wait
         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" &
+        echo "P1 launched"
         sleep 4
         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" &
+        echo "P0 launched"
         wait
         echo ===== P0 output
         docker exec -w /root/duoram/duoram-online duoram_p0 cat $savefilep0