Task 5, 5* some fixes and cleanup
This commit is contained in:
parent
64c7aed176
commit
c8bf307391
154 changed files with 214851 additions and 93 deletions
|
|
@ -183,50 +183,63 @@ int main(int argc, char **argv)
|
|||
|
||||
|
||||
|
||||
const int NLOOPS = 20;
|
||||
|
||||
for (int k = 3; k <= 8; ++k)
|
||||
{
|
||||
unsigned int n = pow(10.0, k);
|
||||
|
||||
vector<double> x(n), y(n);
|
||||
for (unsigned int i = 0; i < n; ++i)
|
||||
{
|
||||
size_t n = (size_t)pow(10, k);
|
||||
|
||||
vector<double> x(n), y(n);
|
||||
for (unsigned int i = 0; i < n; ++i)
|
||||
{
|
||||
double xi= (i % 219) + 1;
|
||||
x[i] = xi;
|
||||
y[i] = 1.0 / xi;
|
||||
}
|
||||
|
||||
// ---- SUM benchmark (sequential) ----
|
||||
double t0 = omp_get_wtime();
|
||||
double s1 = benchmark_A_sum_old(x);
|
||||
double t_sum_seq = omp_get_wtime() - t0;
|
||||
|
||||
// ---- SUM benchmark (parallel) ----
|
||||
t0 = omp_get_wtime();
|
||||
double s2 = benchmark_A_sum(x);
|
||||
double t_sum_omp = omp_get_wtime() - t0;
|
||||
|
||||
double sum_speedup = t_sum_seq / t_sum_omp;
|
||||
|
||||
|
||||
// ---- INNER PRODUCT benchmark (sequential) ----
|
||||
t0 = omp_get_wtime();
|
||||
double ip1 = benchmark_A_old(x, y);
|
||||
double t_inner_seq = omp_get_wtime() - t0;
|
||||
|
||||
// ---- INNER PRODUCT benchmark (parallel) ----
|
||||
t0 = omp_get_wtime();
|
||||
double ip2 = benchmark_A(x, y);
|
||||
double t_inner_omp = omp_get_wtime() - t0;
|
||||
|
||||
double inner_speedup = t_inner_seq / t_inner_omp;
|
||||
|
||||
// ---- Print results ----
|
||||
cout << k << endl;
|
||||
cout << t_sum_seq << ", " << t_sum_omp << ", " << sum_speedup << endl;
|
||||
cout << t_inner_seq << ", " << t_inner_omp << ", " << inner_speedup << endl;
|
||||
cout << endl;
|
||||
double xi = (i % 219) + 1;
|
||||
x[i] = xi;
|
||||
y[i] = 1.0 / xi;
|
||||
}
|
||||
|
||||
double s1_guard = 0.0, s2_guard = 0.0;
|
||||
double ip1_guard = 0.0, ip2_guard = 0.0;
|
||||
|
||||
// ---- SUM benchmark (sequential) ----
|
||||
double t0 = omp_get_wtime();
|
||||
for (int r = 0; r < NLOOPS; ++r)
|
||||
s1_guard += benchmark_A_sum_old(x);
|
||||
double t_sum_seq = (omp_get_wtime() - t0) / NLOOPS;
|
||||
|
||||
// ---- SUM benchmark (parallel) ----
|
||||
t0 = omp_get_wtime();
|
||||
for (int r = 0; r < NLOOPS; ++r)
|
||||
s2_guard += benchmark_A_sum(x);
|
||||
double t_sum_omp = (omp_get_wtime() - t0) / NLOOPS;
|
||||
|
||||
double sum_speedup = t_sum_seq / t_sum_omp;
|
||||
|
||||
// ---- INNER PRODUCT benchmark (sequential) ----
|
||||
t0 = omp_get_wtime();
|
||||
for (int r = 0; r < NLOOPS; ++r)
|
||||
ip1_guard += benchmark_A_old(x, y);
|
||||
double t_inner_seq = (omp_get_wtime() - t0) / NLOOPS;
|
||||
|
||||
// ---- INNER PRODUCT benchmark (parallel) ----
|
||||
t0 = omp_get_wtime();
|
||||
for (int r = 0; r < NLOOPS; ++r)
|
||||
ip2_guard += benchmark_A(x, y);
|
||||
double t_inner_omp = (omp_get_wtime() - t0) / NLOOPS;
|
||||
|
||||
double inner_speedup = t_inner_seq / t_inner_omp;
|
||||
|
||||
// ---- Print results ----
|
||||
std::cout << "k = " << k << " (n = 10^" << k << " = " << n << ")\n";
|
||||
std::cout << "SUM seq: " << t_sum_seq << " s, omp: " << t_sum_omp
|
||||
<< " s, speedup = " << sum_speedup << '\n';
|
||||
std::cout << "INNER seq: " << t_inner_seq << " s, omp: " << t_inner_omp
|
||||
<< " s, speedup = " << inner_speedup << '\n';
|
||||
std::cout << "guards: "
|
||||
<< s1_guard << ", " << s2_guard << ", "
|
||||
<< ip1_guard << ", " << ip2_guard << "\n\n";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue