Browse Source

change outputformat

avadapal 1 year ago
parent
commit
8b2911e277
3 changed files with 86 additions and 80 deletions
  1. 36 36
      preprocessing/filesio.h
  2. 8 6
      preprocessing/p2preprocessing.cpp
  3. 42 38
      preprocessing/preprocessing.cpp

+ 36 - 36
preprocessing/filesio.h

@@ -19,7 +19,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
 	  strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
 	  int w0 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   int written = write(w0, flags, db_nitems * sizeof(flags[0]));
+   int written = write(w0, flags, sizeof(flags));
    if(written<0)  perror("Write error"); 
    close(w0);
 
@@ -27,7 +27,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
    strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    int w1 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w1, flags, db_nitems * sizeof(flags[0]));
+   written = write(w1, flags, sizeof(flags));
    if(written<0)  perror("Write error"); 
    close(w1);
 	
@@ -35,7 +35,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
 	  strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    int w2 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w2, flags, db_nitems * sizeof(flags[0]));   
+   written = write(w2, flags, sizeof(flags));   
 	  if(written<0)  perror("Write error"); 
 	  close(w2);
 
@@ -44,7 +44,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
 	 	strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    int w4 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w4, flags, db_nitems * sizeof(flags[0]));
+   written = write(w4, flags, sizeof(flags));
    if(written<0)  perror("Write error"); 
    close(w4);
 
@@ -52,7 +52,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
    strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    int w5 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w5, flags, db_nitems * sizeof(flags[0]));
+   written = write(w5, flags, sizeof(flags));
    if(written<0)  perror("Write error"); 
    close(w5);
 	  
@@ -60,7 +60,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
 	  strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    int w6 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w6, flags, db_nitems * sizeof(flags[0]));
+   written = write(w6, flags, sizeof(flags));
    if(written<0)  perror("Write error");    
 	  close(w6);
 
@@ -68,7 +68,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
 	 	strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    w4 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w4, outs_, db_nitems * sizeof(outs_[0])); 
+   written = write(w4, outs_, sizeof(outs_)); 
    if(written<0)  perror("Write error"); 
    close(w4);
 
@@ -76,7 +76,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
 	  strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    w5 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w5, outs_, db_nitems * sizeof(outs_[0]));
+   written = write(w5, outs_, sizeof(outs_));
    if(written<0)  perror("Write error"); 
    close(w5);
 
@@ -84,7 +84,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
 		 strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    w6 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w6, outs_, db_nitems * sizeof(outs_[0]));   
+   written = write(w6, outs_, sizeof(outs_));   
    if(written<0)  perror("Write error");       
 	  close(w6);	  
   }
@@ -97,7 +97,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
 	  strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    int w0 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   int written = write(w0, flags, db_nitems * sizeof(flags[0]));
+   int written = write(w0, flags, sizeof(flags));
    if(written<0)  perror("Write error"); 
    close(w0);	
 
@@ -105,7 +105,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
 	  strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());	 
 	  int w1 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-	  written = write(w1, flags, db_nitems * sizeof(flags[0]));
+	  written = write(w1, flags, sizeof(flags));
    if(written<0)  perror("Write error"); 
    close(w1);
 
@@ -113,7 +113,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
 	  strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str()); 	  
 	  int w2 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w2,flags, db_nitems * sizeof(flags[0]));    
+   written = write(w2,flags, sizeof(flags));    
    if(written<0)  perror("Write error");      
    close(w2);
 
@@ -122,7 +122,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
 	  strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());  
 	  int w4 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w4,flags, db_nitems * sizeof(flags[0]));
+   written = write(w4,flags, sizeof(flags));
    if(written<0)  perror("Write error"); 
    close(w4);
 
@@ -130,7 +130,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
 	  strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    int w5 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w5, flags, db_nitems * sizeof(flags[0]));
+   written = write(w5, flags, sizeof(flags));
    if(written<0)  perror("Write error"); 
    close(w5);
 	
@@ -138,7 +138,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
   	strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());	   
 	  int w6 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w6, flags, db_nitems * sizeof(flags[0]));    
+   written = write(w6, flags, sizeof(flags));    
    if(written<0)  perror("Write error");    
 	  close(w6);
 
@@ -146,7 +146,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
 	  strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    w4 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w4, outs_, db_nitems * sizeof(outs_[0]));
+   written = write(w4, outs_, sizeof(outs_));
    if(written<0)  perror("Write error"); 
    close(w4);
 
@@ -154,7 +154,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
    strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    w5 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w5, outs_, db_nitems * sizeof(outs_[0]));
+   written = write(w5, outs_, sizeof(outs_));
    if(written<0)  perror("Write error"); 
    close(w5);
 	   
@@ -162,7 +162,7 @@ void write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,  in
 	  strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    w6 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w6, outs_, db_nitems * sizeof(outs_[0]));    
+   written = write(w6, outs_, sizeof(outs_));    
 	  if(written<0)  perror("Write error");    
 	  close(w6);
 
@@ -229,7 +229,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
  	 strcat(tmp, std::to_string(i).c_str());
 	
 	  int w0 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   int written = write(w0, flags, db_nitems * sizeof(int8_t));
+   int written = write(w0, flags, sizeof(flags));
    if(written<0) perror("Write error");
    close(w0);
 
@@ -237,7 +237,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
    strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    int w1 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w1, flags, db_nitems * sizeof(int8_t));
+   written = write(w1, flags, sizeof(flags));
    if(written<0) perror("Write error");
    close(w1);
 	
@@ -245,7 +245,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
 	  strcpy(tmp, p0_filename0);
    strcat(tmp, std::to_string(i).c_str());
    int w2 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w2, flags, db_nitems * sizeof(int8_t));
+   written = write(w2, flags, sizeof(flags));
    if(written<0) perror("Write error");
    close(w2);
 
@@ -253,7 +253,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
 	 	strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    int w4 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w4, flags, db_nitems * sizeof(int8_t));
+   written = write(w4, flags, sizeof(flags));
    if(written<0) perror("Write error");
    close(w4);
 
@@ -261,7 +261,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
    strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    int w5 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w5, flags, db_nitems * sizeof(int8_t));
+   written = write(w5, flags, sizeof(flags));
    if(written<0) perror("Write error");
    close(w5);
 	  
@@ -269,7 +269,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
 	  strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    int w6 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w6, flags, db_nitems * sizeof(int8_t));
+   written = write(w6, flags, sizeof(flags));
    if(written<0) perror("Write error"); 
 	  close(w6);
 
@@ -277,7 +277,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
    strcpy(tmp, p0_filename0);
    strcat(tmp, std::to_string(i).c_str());
    w4 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w4, outs_, db_nitems * sizeof(int64_t));
+   written = write(w4, outs_, sizeof(outs_));
    if(written<0) perror("Write error"); 
    close(w4);
 
@@ -285,7 +285,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
 	  strcpy(tmp, p0_filename0);
  	 strcat(tmp, std::to_string(i).c_str());
    w5 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w5, outs_, db_nitems * sizeof(int64_t));
+   written = write(w5, outs_, sizeof(outs_));
    if(written<0) perror("Write error"); 
    close(w5);
 
@@ -293,7 +293,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
 		 strcpy(tmp, p0_filename0);
    strcat(tmp, std::to_string(i).c_str());
    w6 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   written = write(w6, outs_, db_nitems * sizeof(int64_t));
+   written = write(w6, outs_, sizeof(outs_));
    if(written<0) perror("Write error"); 
  	 close(w6);	  
   }
@@ -307,7 +307,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
  	  strcat(tmp, std::to_string(i).c_str());
      
 	   int w0 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-    int written = write(w0, flags, db_nitems * sizeof(int8_t));
+    int written = write(w0, flags, sizeof(flags));
     if(written<0) perror("Write error");   
 	   close(w0);	
 
@@ -315,7 +315,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
 	   strcpy(tmp, p0_filename0);
  	  strcat(tmp, std::to_string(i).c_str());
    	int w1 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-	   written = write(w1, flags, db_nitems * sizeof(int8_t));
+	   written = write(w1, flags, sizeof(flags));
 	   if(written<0)  perror("Write error");
     close(w1);
 
@@ -323,7 +323,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
 	   strcpy(tmp, p0_filename0);
  	  strcat(tmp, std::to_string(i).c_str());  
 	   int w2 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-    written = write(w2,flags, db_nitems * sizeof(int8_t));
+    written = write(w2,flags, sizeof(flags));
     if(written<0)  perror("Write error"); 
     close(w2);
 
@@ -331,7 +331,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
 	   strcpy(tmp, p0_filename0);
  	  strcat(tmp, std::to_string(i).c_str());
 	   int w4 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-    written = write(w4,flags, db_nitems * sizeof(int8_t));
+    written = write(w4,flags, sizeof(flags));
     if(written<0)  perror("Write error"); 
     close(w4);
 
@@ -339,7 +339,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
 	   strcpy(tmp, p0_filename0);
  	  strcat(tmp, std::to_string(i).c_str());
 	   int w5 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-    written = write(w5, flags, db_nitems * sizeof(int8_t));
+    written = write(w5, flags, sizeof(flags));
     if(written<0)  perror("Write error"); 
     close(w5);
 	
@@ -347,7 +347,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
    	strcpy(tmp, p0_filename0);
  	  strcat(tmp, std::to_string(i).c_str());   
 	   int w6 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-   	written = write(w6, flags, db_nitems * sizeof(int8_t));  
+   	written = write(w6, flags, sizeof(flags));  
     if(written<0)  perror("Write error");   
    	close(w6);
 
@@ -355,7 +355,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
 	   strcpy(tmp, p0_filename0);
  	  strcat(tmp, std::to_string(i).c_str());
     w4 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-    written = write(w4, outs_, db_nitems * sizeof(int64_t));
+    written = write(w4, outs_, sizeof(outs_));
     if(written<0)  perror("Write error"); 
     close(w4);
 
@@ -364,7 +364,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
    	strcpy(tmp, p0_filename0);
  	  strcat(tmp, std::to_string(i).c_str());
     w5 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-    written = write(w5, outs_, db_nitems * sizeof(int64_t));
+    written = write(w5, outs_, sizeof(outs_));
     if(written<0)  perror("Write error"); 
     close(w5);
 	
@@ -372,7 +372,7 @@ void P2_write_evalfull_outs_into_a_file(bool party, size_t i, size_t db_nitems,
 	   strcpy(tmp, p0_filename0);
  	  strcat(tmp, std::to_string(i).c_str());
     w6 = open( tmp, O_WRONLY | O_CREAT, S_IWRITE | S_IREAD);
-    written = write(w6, outs_, db_nitems * sizeof(int64_t));
+    written = write(w6, outs_, sizeof(outs_));
     if(written<0)  perror("Write error");   
 	   close(w6);
   } 

+ 8 - 6
preprocessing/p2preprocessing.cpp

@@ -82,6 +82,7 @@ int main(int argc, char* argv[])
  const size_t n_threads = atoi(argv[3]);
  const size_t number_of_sockets = 5 * n_threads;
  const size_t db_nitems = 1ULL << atoi(argv[4]);
+ 
  const size_t depth = std::ceil(std::log2(db_nitems));
     
  std::vector<int> ports2_0;
@@ -185,13 +186,14 @@ int main(int argc, char* argv[])
 
   boost::asio::read(sockets0[0], boost::asio::buffer(dpf_instance0, n_threads * sizeof(dpfP2)));
   boost::asio::read(sockets1[0], boost::asio::buffer(dpf_instance1, n_threads * sizeof(dpfP2))); 
-
- for(size_t j = 0; j < n_threads; ++j)
- {
-   boost::asio::post(pool, std::bind(mpc_gen,  std::ref(depth), std::ref(aeskey), db_nitems, n_threads,  std::ref(sockets0), std::ref(sockets1), 
+  for(size_t jj = 0; jj < 16; ++jj)
+  {
+    for(size_t j = 0; j < n_threads; ++j)
+    {
+     boost::asio::post(pool, std::bind(mpc_gen,  std::ref(depth), std::ref(aeskey), db_nitems, n_threads,  std::ref(sockets0), std::ref(sockets1), 
                                      output0, flags0,  output1, flags1,  std::ref(dpf_instance0), std::ref(dpf_instance1), j, 5 * j));    
- }
-
+    }  
+  }
   pool.join();
 
 

+ 42 - 38
preprocessing/preprocessing.cpp

@@ -53,6 +53,7 @@ int main(int argc, char * argv[])
    const size_t n_threads = atoi(argv[3]);
    const size_t expo = atoi(argv[4]);
    const size_t op = atoi(argv[5]);
+ 
    const size_t number_of_sockets = 5 * n_threads;
 
    std::vector<socket_t> socketsPb, socketsP2;
@@ -99,42 +100,43 @@ int main(int argc, char * argv[])
 
   cw_construction computecw_array;
   auto start = std::chrono::steady_clock::now(); 
-
-  boost::asio::read(socketsP2[0], boost::asio::buffer(&computecw_array, sizeof(computecw_array)));
-
-  #ifdef VERBOSE
-   std::cout << "computecw_array.rand_b: " << computecw_array.rand_b[0] << " " << computecw_array.rand_b[1] << std::endl;
-  #endif
-
-   /* The function create_dpfs appears in dpf-gen.h*/
-   bool reading = true;
-   boost::asio::thread_pool pool(n_threads);
-   for(size_t j = 0; j < n_threads; ++j)
-   {
-     boost::asio::post(pool,  std::bind(create_dpfs, reading,  db_nitems,	std::ref(aeskey),  target_share_read[j],  std::ref(socketsPb), std::ref(socketsP2), 0, db_nitems-1, 
-                                         output[j],  flags[j], std::ref(final_correction_word[j]), computecw_array, std::ref(dpf_instance),  party, 5 * j, j));	 	  
-   }
-   
-   pool.join();  
-
-   bool interleaved = false;
-   if(op == 1) interleaved = true;
-   if(interleaved)
-   {
-    boost::asio::thread_pool pool2(n_threads);
-    for(size_t j = 0; j < n_threads; ++j)
-    {
-      boost::asio::post(pool2,  std::bind(create_dpfs, reading,  db_nitems,	std::ref    (aeskey),  target_share_read[j],  std::ref(socketsPb), std::ref(socketsP2), 0, db_nitems-1, 
-                                          output[j],  flags[j], std::ref(final_correction_word[j]), computecw_array, std::ref(dpf_instance),  party, 5 * j, j));	 	  
-    }
-    
-    pool2.join();  
-   }
-
-  boost::asio::write(socketsP2[0], boost::asio::buffer(dpf_instance, n_threads * sizeof(dpfP2))); // do this in parallel.
-
-
+ 
+     boost::asio::read(socketsP2[0], boost::asio::buffer(&computecw_array, sizeof(computecw_array)));
+     communication_cost += sizeof(computecw_array);
+     #ifdef VERBOSE
+      std::cout << "computecw_array.rand_b: " << computecw_array.rand_b[0] << " " << computecw_array.rand_b[1] << std::endl;
+     #endif
+
+      /* The function create_dpfs appears in dpf-gen.h*/
+      bool reading = true;
+      boost::asio::thread_pool pool(n_threads);
+
+      for(size_t j = 0; j < n_threads; ++j)
+      {
+       boost::asio::post(pool,  std::bind(create_dpfs, reading,  db_nitems,	std::ref(aeskey),  target_share_read[j],  std::ref(socketsPb), std::ref(socketsP2), 0, db_nitems-1, 
+                                             output[j],  flags[j], std::ref(final_correction_word[j]), computecw_array, std::ref(dpf_instance),  party, 5 * j, j));	 	  
+      }    
+      pool.join();  
+      
+      bool interleaved = false;
+      
+      if(op == 1) interleaved = true;
+      
+      if(interleaved)
+      {
+       boost::asio::thread_pool pool2(n_threads);
+       for(size_t j = 0; j < n_threads; ++j)
+       {
+         boost::asio::post(pool2,  std::bind(create_dpfs, reading,  db_nitems,	std::ref    (aeskey),  target_share_read[j],  std::ref(socketsPb), std::ref(socketsP2), 0, db_nitems-1, 
+                                             output[j],  flags[j], std::ref(final_correction_word[j]), computecw_array, std::ref(dpf_instance),  party, 5 * j, j));	 	  
+       }
+       pool2.join();  
+      }
+     boost::asio::write(socketsP2[0], boost::asio::buffer(dpf_instance, n_threads * sizeof(dpfP2))); // do this in parallel.
+     communication_cost += (n_threads * sizeof(dpfP2));
+ 
    #ifdef DEBUG
+   
     for(size_t j = 0; j < n_threads; ++j)
     {
       std::cout << "n_threads = " << j << std::endl;
@@ -196,8 +198,8 @@ int main(int argc, char * argv[])
     
     auto end = std::chrono::steady_clock::now();
     std::chrono::duration<double> elapsed_seconds = end-start;
-    std::cerr << "time to generate and evaluate " << n_threads << " dpfs of size 2^" << atoi(argv[4]) << " is: " << elapsed_seconds.count() << "s\n";
-    std::cout << elapsed_seconds.count() << std::endl;
+    //std::cout << "time to generate and evaluate " << n_threads << " dpfs of size 2^" << atoi(argv[4]) << " is: " << elapsed_seconds.count() << "s\n";
+    std::cout << "WallClockTime: "  << elapsed_seconds.count() << std::endl;
     start = std::chrono::steady_clock::now();
     
     for(size_t i = 0; i < n_threads; ++i)
@@ -208,7 +210,9 @@ int main(int argc, char * argv[])
     end = std::chrono::steady_clock::now();
     elapsed_seconds = end-start;
 
-    std::cerr << "communication cost = " << communication_cost << " bytes" << std::endl;
+    // std::cout << "elapsed_ FIO = " << elapsed_seconds.count() << std::endl;
+
+    std::cout << "CommunicationCost: " << communication_cost/1024 << " KiB" << std::endl;
     #ifdef VERBOSE
      for(size_t j = 0; j < n_threads; ++j)
      {