Adding file IO timing param

This commit is contained in:
Noah L. Schrick 2022-12-04 19:16:32 -06:00
parent fc184f4679
commit dfe2f7b3cf
8 changed files with 49168 additions and 49158 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
Key Generation Time: 0.024 s Key Generation Time: 0.023 s
Encoding and Encryption Time: 5.123 s Encoding and Encryption Time: 9.675 s
Computation Time: 1.372 s Computation Time: 1.814 s
Decryption & Decoding Time: 0.169 s Decryption & Decoding Time: 0.159 s
End-to-end Runtime: 6.994 s End-to-end Runtime: 11.974 s

View File

@ -156,6 +156,7 @@ int main(int argc, char *argv[]) {
double computationTime(0.0); double computationTime(0.0);
double decryptionTime(0.0); double decryptionTime(0.0);
double endToEndTime(0.0); double endToEndTime(0.0);
double ioTime(0.0);
//usint m = 16384; //usint m = 16384;
usint m = 65536; usint m = 65536;
@ -200,7 +201,7 @@ int main(int argc, char *argv[]) {
int file_start = node_start + (batch_size*i); int file_start = node_start + (batch_size*i);
std::cout << "Node " << world.rank() << " running batch " << i << " with batch size " << batch_gen << std::endl; std::cout << "Node " << world.rank() << " running batch " << i << " with batch size " << batch_gen << std::endl;
RunChi2(SNPDir, SNPFileName, pValue, Runtime, std::to_string(batch_gen), SNPs, file_start, keyGenTime, encryptionTime, computationTime, decryptionTime, endToEndTime, cc, keyPair, i, world); RunChi2(SNPDir, SNPFileName, pValue, Runtime, std::to_string(batch_gen), SNPs, file_start, keyGenTime, encryptionTime, computationTime, decryptionTime, endToEndTime, ioTime, cc, keyPair, i, world);
} }
std::cout << "Node " << world.rank() << " completed all batches." << std::endl; std::cout << "Node " << world.rank() << " completed all batches." << std::endl;
@ -211,6 +212,8 @@ int main(int argc, char *argv[]) {
world.isend(0, 2, computationTime); world.isend(0, 2, computationTime);
world.isend(0, 3, decryptionTime); world.isend(0, 3, decryptionTime);
world.isend(0, 4, endToEndTime); world.isend(0, 4, endToEndTime);
world.isend(0, 5, ioTime);
} }
@ -218,7 +221,7 @@ int main(int argc, char *argv[]) {
if (world.rank() == 0){ if (world.rank() == 0){
std::vector<double> task_times; std::vector<double> task_times;
for (int task = 0; task < 5; task++){ for (int task = 0; task < 6; task++){
task_times.push_back(0); task_times.push_back(0);
} }
task_times.at(0) += keyGenTime; task_times.at(0) += keyGenTime;
@ -226,9 +229,12 @@ int main(int argc, char *argv[]) {
task_times.at(2)= computationTime; task_times.at(2)= computationTime;
task_times.at(3) = decryptionTime; task_times.at(3) = decryptionTime;
task_times.at(4) = endToEndTime; task_times.at(4) = endToEndTime;
task_times.at(5) = ioTime;
if (world.size() > 1){ if (world.size() > 1){
for (int j = 0; j < 5; j++){ for (int j = 0; j < 6; j++){
while (world.iprobe(mpi::any_source, j)){ while (world.iprobe(mpi::any_source, j)){
double tmp; double tmp;
world.recv(mpi::any_source, j, tmp); world.recv(mpi::any_source, j, tmp);
@ -241,6 +247,7 @@ int main(int argc, char *argv[]) {
std::cout << "Total Encoding and Encryption Time: \t" << task_times.at(1)/1000 << " s" << std::endl; std::cout << "Total Encoding and Encryption Time: \t" << task_times.at(1)/1000 << " s" << std::endl;
std::cout << "Total Computation Time: \t\t" << task_times.at(2)/1000 << " s" << std::endl; std::cout << "Total Computation Time: \t\t" << task_times.at(2)/1000 << " s" << std::endl;
std::cout << "Total Decryption & Decoding Time: \t" << task_times.at(3)/1000 << " s" << std::endl; std::cout << "Total Decryption & Decoding Time: \t" << task_times.at(3)/1000 << " s" << std::endl;
std::cout << "Total File IO Time: \t\t\t" << task_times.at(5)/1000 << " s" << std::endl;
std::cout << "Total End-to-end Runtime: \t\t" << task_times.at(4)/1000 << " s" << std::endl; std::cout << "Total End-to-end Runtime: \t\t" << task_times.at(4)/1000 << " s" << std::endl;
} }
@ -250,7 +257,8 @@ int main(int argc, char *argv[]) {
void RunChi2(const string &SNPDir, void RunChi2(const string &SNPDir,
const string &SNPFileName, const string &pValue, const string &Runtime, const string &SampleSize, const string &SNPs, const string &SNPFileName, const string &pValue, const string &Runtime, const string &SampleSize, const string &SNPs,
size_t file_start, double &keyGenTime, double &encryptionTime, double &computationTime, double &decryptionTime, double &endToEndTime, size_t file_start,
double &keyGenTime, double &encryptionTime, double &computationTime, double &decryptionTime, double &endToEndTime, double &ioTime,
CryptoContext<DCRTPoly> &cc, auto &keyPair, int batch_num, mpi::communicator &world) { CryptoContext<DCRTPoly> &cc, auto &keyPair, int batch_num, mpi::communicator &world) {
TimeVar t; TimeVar t;
@ -271,7 +279,9 @@ void RunChi2(const string &SNPDir,
usint m = 65536; usint m = 65536;
double scalingFactor = 2.5e-6; double scalingFactor = 2.5e-6;
TIC(t);
ReadSNPFile(headersS,sData,yData,SNPDir + "/" + SNPFileName,N,M, file_start); ReadSNPFile(headersS,sData,yData,SNPDir + "/" + SNPFileName,N,M, file_start);
ioTime += TOC(t);
TIC(t); TIC(t);

View File

@ -13,7 +13,7 @@ const double EPSILON = 1.0E-08;
void RunChi2(const string &SNPDir, void RunChi2(const string &SNPDir,
const string &SNPFileName, const string &pValue, const string &Runtime, const string &SampleSize, const string &SNPs, const string &SNPFileName, const string &pValue, const string &Runtime, const string &SampleSize, const string &SNPs,
size_t file_start, size_t file_start,
double &keyGenTime, double &encryptionTime, double &computationTime, double &decryptionTime, double &endToEndTime, double &keyGenTime, double &encryptionTime, double &computationTime, double &decryptionTime, double &endToEndTime, double &ioTime,
CryptoContext<DCRTPoly> &cc, auto &keyPair, int batch_num, mpi::communicator &world); CryptoContext<DCRTPoly> &cc, auto &keyPair, int batch_num, mpi::communicator &world);