Skip to content

Commit 851e87d

Browse files
authored
Merge pull request #26 from sethigeet/set_num_thread_automatically
Automatically set the number of threads to max available threads in calculation of std dev
2 parents 37e6f7b + 0820781 commit 851e87d

File tree

4 files changed

+26
-24
lines changed

4 files changed

+26
-24
lines changed

concat

-17 KB
Binary file not shown.

src/max

-151 KB
Binary file not shown.

src/standard_dev

-26.1 KB
Binary file not shown.

src/standard_dev.cpp

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,48 @@
11
// statistics.cpp
2-
#include "statistics.h"
32
#include <omp.h>
3+
44
#include <cmath>
55
#include <iostream>
6+
7+
#include "statistics.h"
8+
69
// Function to compute the mean
710
double computeMean(const std::vector<int>& data, int num_threads) {
8-
double sum = 0.0;
11+
double sum = 0.0;
912

10-
#pragma omp parallel for reduction(+:sum) num_threads(num_threads)
11-
for (size_t i = 0; i < data.size(); i++) {
12-
sum += data[i];
13-
}
13+
#pragma omp parallel for reduction(+ : sum) num_threads(num_threads)
14+
for (size_t i = 0; i < data.size(); i++) {
15+
sum += data[i];
16+
}
1417

15-
return sum / data.size();
18+
return sum / data.size();
1619
}
1720

1821
// Function to compute the standard deviation
1922
double computeStandardDeviation(const std::vector<int>& data, int num_threads) {
20-
double mean = computeMean(data, num_threads);
23+
double mean = computeMean(data, num_threads);
2124

22-
double variance_sum = 0.0;
25+
double variance_sum = 0.0;
2326

24-
#pragma omp parallel for reduction(+:variance_sum) num_threads(num_threads)
25-
for (size_t i = 0; i < data.size(); i++) {
26-
variance_sum += (data[i] - mean) * (data[i] - mean);
27-
}
27+
#pragma omp parallel for reduction(+ : variance_sum) num_threads(num_threads)
28+
for (size_t i = 0; i < data.size(); i++) {
29+
variance_sum += (data[i] - mean) * (data[i] - mean);
30+
}
2831

29-
double variance = variance_sum / data.size();
30-
return std::sqrt(variance);
32+
double variance = variance_sum / data.size();
33+
return std::sqrt(variance);
3134
}
3235

33-
3436
int main() {
35-
// Data set
36-
std::vector<int> data = {1, 2, 3, 4, 5, 6};
37+
// Data set
38+
std::vector<int> data = {1, 2, 3, 4, 5, 6};
3739

38-
// Number of threads for OpenMP
39-
int num_threads = 4;
40+
// Number of threads for OpenMP
41+
int num_threads = omp_get_max_threads();
4042

41-
// Calculate and print the standard deviation
42-
double stddev = computeStandardDeviation(data, num_threads);
43-
std::cout << "Standard Deviation: " << stddev << std::endl;
43+
// Calculate and print the standard deviation
44+
double stddev = computeStandardDeviation(data, num_threads);
45+
std::cout << "Standard Deviation: " << stddev << std::endl;
4446

45-
return 0;
47+
return 0;
4648
}

0 commit comments

Comments
 (0)