Browse Source

3P online

Ian Goldberg 1 year ago
parent
commit
a34d59304c
2 changed files with 37 additions and 5 deletions
  1. 4 5
      duoram-online/duoram.cpp
  2. 33 0
      duoram-online/p2.cpp

+ 4 - 5
duoram-online/duoram.cpp

@@ -37,7 +37,6 @@ size_t communication_cost_ind_read = 0;
 
 double dependent_read_time = 0.0;
 double write_time = 0.0;
-double interleaved_time = 0.0;
 
 void accept_conncections_from_Pb(boost::asio::io_context&io_context, std::vector<socket_t>& sockets_, int port, size_t j)
 {
@@ -407,13 +406,13 @@ std::chrono::duration<double> elapsed_seconds_total = end_total - start_total;
 //printf("elapsed_seconds_total = %f\n",elapsed_seconds_total.count());
 
 std::cout << "write_time = " << write_time << std::endl;
-std::cout << "communication_cost_writes = " << communication_cost_write/1024 << " KiB" << std::endl; 
+std::cout << "communication_cost_writes = " << communication_cost_write << " bytes" << std::endl; 
 
 #ifdef ThreeParty
  std::cout << "dependent_read_time =  " << dependent_read_time << std::endl;
- std::cout << "communication_cost_dep_read = " << communication_cost_dep_read/1024 << " KiB" << std::endl; 
- std::cout << "interleaved_read_time =  " << dependent_read_time + write_time  << std::endl;
- std::cout << "communication_cost_interleaved = " << (communication_cost_dep_read + communication_cost_write)/1024 << " KiB" << std::endl; 
+ std::cout << "communication_cost_dep_read = " << communication_cost_dep_read << " bytes" << std::endl; 
+ std::cout << "interleaved_time =  " << dependent_read_time + write_time  << std::endl;
+ std::cout << "communication_cost_interleaved = " << (communication_cost_dep_read + communication_cost_write) << " bytes" << std::endl; 
 #endif
 free(reading_temp);
 

+ 33 - 0
duoram-online/p2.cpp

@@ -41,6 +41,13 @@ using socket_t = boost::asio::ip::tcp::socket;
 
 using namespace std;
  
+size_t communication_cost_dep_read = 0;
+size_t communication_cost_write    = 0;
+size_t communication_cost_ind_read = 0;
+
+double dependent_read_time = 0.0;
+double write_time = 0.0;
+
 auto generate_cancelation_terms(int8_t c0[], int8_t d1[], size_t db_nitems, size_t rotate_by = 0)
 {
    DB_t Z0 =  dot_product_with_bool(X0, d1, db_nitems, rotate_by);
@@ -157,6 +164,7 @@ int main(int argc, char* argv[])
  
    for(size_t i = 0; i < number_of_accesses; ++i)
    {
+    auto start_writes = std::chrono::steady_clock::now();
      for(size_t w = 0; w < number_of_ind_writes; ++w)
      {
        read_flags_for_refreshing(db_nitems);
@@ -171,6 +179,8 @@ int main(int argc, char* argv[])
        boost::asio::read(sockets_1[0], boost::asio::buffer(&WriteP1_recv[w],  sizeof(DuORAM_Write)));
        boost::asio::write(sockets_0[1], boost::asio::buffer(&Gamma0_[w], sizeof(DB_t))); 
        boost::asio::write(sockets_1[1], boost::asio::buffer(&Gamma1_[w], sizeof(DB_t)));
+       communication_cost_write += sizeof(DB_t);
+       communication_cost_write += sizeof(DB_t);
        boost::asio::read(sockets_0[2], boost::asio::buffer(&update_message0[w],  sizeof(DB_t))); 
        boost::asio::read(sockets_1[2], boost::asio::buffer(&update_message1[w],  sizeof(DB_t)));
        
@@ -191,6 +201,11 @@ int main(int argc, char* argv[])
        #endif
      }
 
+   auto end_writes = std::chrono::steady_clock::now();
+   std::chrono::duration<double> elapsed_seconds_writes = end_writes - start_writes;
+   write_time = elapsed_seconds_writes.count();
+
+    auto start_ind_reads = std::chrono::steady_clock::now();
      DB_t * Gamma0_reads = new DB_t[number_of_ind_reads];
      DB_t * Gamma1_reads = new DB_t[number_of_ind_reads];
 
@@ -216,7 +231,12 @@ int main(int argc, char* argv[])
 
      boost::asio::write(sockets_0[4], boost::asio::buffer(Gamma0_reads, number_of_ind_reads * sizeof(DB_t)));  
      boost::asio::write(sockets_1[4], boost::asio::buffer(Gamma1_reads, number_of_ind_reads * sizeof(DB_t)));
+     communication_cost_ind_read += number_of_ind_reads * sizeof(DB_t);
+     communication_cost_ind_read += number_of_ind_reads * sizeof(DB_t);
+    auto end_ind_reads = std::chrono::steady_clock::now();
+    std::chrono::duration<double> elapsed_seconds_ind_reads = end_ind_reads - start_ind_reads;
 
+    auto start_dep_reads = std::chrono::steady_clock::now();
      for(size_t d = 0; d < number_of_dep_reads; ++d)
      {  
        size_t shifts0, shifts1, rotate;
@@ -229,9 +249,22 @@ int main(int argc, char* argv[])
        auto [Gamma0, Gamma1] =   generate_cancelation_terms(reading_c, reading_d, db_nitems, rotate);
        boost::asio::write(sockets_0[6], boost::asio::buffer(&Gamma0, sizeof(Gamma0)));  
        boost::asio::write(sockets_1[6], boost::asio::buffer(&Gamma1, sizeof(Gamma1)));
+       communication_cost_dep_read += sizeof(Gamma0);
+       communication_cost_dep_read += sizeof(Gamma1);
      }
+    auto end_dep_reads = std::chrono::steady_clock::now();
+    std::chrono::duration<double> elapsed_seconds_dep_reads = end_dep_reads - start_dep_reads;
+    dependent_read_time = elapsed_seconds_dep_reads.count();
   }
 
+std::cout << "write_time = " << write_time << std::endl;
+std::cout << "communication_cost_writes = " << communication_cost_write << " bytes" << std::endl; 
+
+ std::cout << "dependent_read_time =  " << dependent_read_time << std::endl;
+ std::cout << "communication_cost_dep_read = " << communication_cost_dep_read << " bytes" << std::endl; 
+ std::cout << "interleaved_time =  " << dependent_read_time + write_time  << std::endl;
+ std::cout << "communication_cost_interleaved = " << (communication_cost_dep_read + communication_cost_write) << " bytes" << std::endl; 
+
   return 0;
 }