From fdb7e2cc2e28e5c86189d8941c8e05404fdb4630 Mon Sep 17 00:00:00 2001 From: kulbitsky99 Date: Mon, 19 Oct 2020 17:39:20 +0300 Subject: [PATCH 1/6] heatmap --- Heatmap/Heatmap.png | Bin 0 -> 10163 bytes Heatmap/Makefile | 5 +++ Heatmap/heat | Bin 0 -> 18312 bytes Heatmap/heatmap_script.py | 24 +++++++++++ Heatmap/main.cpp | 86 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 115 insertions(+) create mode 100644 Heatmap/Heatmap.png create mode 100644 Heatmap/Makefile create mode 100755 Heatmap/heat create mode 100644 Heatmap/heatmap_script.py create mode 100644 Heatmap/main.cpp diff --git a/Heatmap/Heatmap.png b/Heatmap/Heatmap.png new file mode 100644 index 0000000000000000000000000000000000000000..3fc4b443366a95466daabc3224d2e9ef9eebe11e GIT binary patch literal 10163 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 literal 0 HcmV?d00001 diff --git a/Heatmap/Makefile b/Heatmap/Makefile new file mode 100644 index 0000000..65996b3 --- /dev/null +++ b/Heatmap/Makefile @@ -0,0 +1,5 @@ +all: heatmap +heatmap: main.cpp + g++ main.cpp -o heat -fopenmp +clean: + rm -rf heat \ No newline at end of file diff --git a/Heatmap/heat b/Heatmap/heat new file mode 100755 index 0000000000000000000000000000000000000000..f9264d0f8a2dd7e5deacb988c11b57234f03d74b GIT binary patch literal 18312 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 literal 0 HcmV?d00001 diff --git a/Heatmap/heatmap_script.py b/Heatmap/heatmap_script.py new file mode 100644 index 0000000..29e7816 --- /dev/null +++ b/Heatmap/heatmap_script.py @@ -0,0 +1,24 @@ +import os +import numpy as np +import matplotlib.pyplot as plt + +def test_heatmap(n_of_external_threads, n_of_internal_threads, heat_matrix): + for external in range(0, n_of_external_threads, 2): + for internal in range(0, n_of_internal_threads, 2): + cmd = './heat ' + str(external) + ' ' + str(internal) + heat_value = os.popen(cmd).read() + print(heat_value) + heat_matrix[external][internal] = heat_value + + +def draw(heat_matrix): + plt.imshow(heat_matrix, cmap='hot', interpolation='nearest') + plt.show() + +if __name__ == "__main__": + n_of_external_threads = 8 + n_of_internal_threads = 32 + heat_matrix = np.zeros((n_of_external_threads, n_of_internal_threads)) + + test_heatmap(n_of_external_threads, n_of_internal_threads, heat_matrix) + draw(heat_matrix) \ No newline at end of file diff --git a/Heatmap/main.cpp b/Heatmap/main.cpp new file mode 100644 index 0000000..e2d5edd --- /dev/null +++ b/Heatmap/main.cpp @@ -0,0 +1,86 @@ +#include +#include +#include +#include +#include +#include +#include + + +int create_threads(int n_of_threads); +long int ReadArg(char * str); + +int main(int argc, char** argv) +{ + // Check arguments + if (argc != 3) + { + std::cout << "[Error] Usage \n"; + return 1; + } + + int n_of_external_threads = ReadArg(argv[1]); + int n_of_internal_threads = ReadArg(argv[2]); + + // enables to run nested parallelism + omp_set_nested(true); + int res = 0; + double start = omp_get_wtime(); + + // start of parallel code + #pragma omp parallel num_threads(n_of_external_threads) + { + for(int i = 0; i < 100; ++i) + { + res += create_threads(n_of_internal_threads); + } + } + + // end of parallel code + + double end = omp_get_wtime(); + + double delta = end - start; + std::cout << delta << std::endl; + + return 0; +} + +int create_threads(int n_of_threads) +{ + int res = 0; + #pragma omp parallel num_threads(n_of_threads) + { + res++; + } + return res; +} + +long int ReadArg(char * str) +{ + char* endptr; + errno = 0; + + long int number = strtol(str, &endptr, 10); + + + if ((errno == ERANGE && (number == LONG_MAX || number == LONG_MIN)) || (errno != 0 && number == 0)) + { + perror("strtol"); + exit(EXIT_FAILURE); + } + + if (endptr == str) + { + fprintf(stderr, "Error!\n"); + exit(EXIT_FAILURE); + } + if (*endptr != '\0') + { + fprintf(stderr, "Error!\n"); + exit(EXIT_FAILURE); + } + + return number; +} + From 4dd63ef17759f14062748eecf2a2d75bb626ef29 Mon Sep 17 00:00:00 2001 From: kulbitsky99 Date: Mon, 19 Oct 2020 17:49:13 +0300 Subject: [PATCH 2/6] deleted binary file --- Heatmap/heat | Bin 18312 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 Heatmap/heat diff --git a/Heatmap/heat b/Heatmap/heat deleted file mode 100755 index f9264d0f8a2dd7e5deacb988c11b57234f03d74b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18312 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 From 330c78bf544393a70d9b74baca8dc12a16fc1b4e Mon Sep 17 00:00:00 2001 From: kulbitsky99 Date: Mon, 19 Oct 2020 22:31:36 +0300 Subject: [PATCH 3/6] 2 and 3 tasks realization --- OpenMP2/src/main.cpp | 13 ++++++++++++- OpenMP3/src/main.cpp | 26 +++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/OpenMP2/src/main.cpp b/OpenMP2/src/main.cpp index 8dab215..89cf1e2 100644 --- a/OpenMP2/src/main.cpp +++ b/OpenMP2/src/main.cpp @@ -5,7 +5,18 @@ double calc(uint32_t x_last, uint32_t num_threads) { - return 0; + double res = 0.0; + double * elems = new double[x_last]; + #pragma omp parallel num_threads(num_threads) + { + #pragma omp for + for(int i = x_last; i >= 1; i--) + elems[i - 1] = 1.0 / i; + } + for(int i = x_last - 1; i >= 0; i--) + res += elems[i]; + delete [] elems; + return res; } int main(int argc, char** argv) diff --git a/OpenMP3/src/main.cpp b/OpenMP3/src/main.cpp index 416ee06..567fd5b 100644 --- a/OpenMP3/src/main.cpp +++ b/OpenMP3/src/main.cpp @@ -4,6 +4,10 @@ #include #include +enum Const +{ + NUM_PLACES = 100 +}; double func(double x) { return sin(x); @@ -11,7 +15,27 @@ double func(double x) double calc(double x0, double x1, double dx, uint32_t num_threads) { - return 0; + double res = 0.0; + double * part_sum = new double[NUM_PLACES]; + int n_of_steps = (x1 - x0) / dx; + int n_of_elems = n_of_steps / NUM_PLACES; + #pragma omp parallel num_threads(num_threads) + { + #pragma omp for + for(int i = 0; i < n_of_elems * NUM_PLACES; i++) + { + int id = i / n_of_elems; + part_sum[id] += func(x0 + i * dx); + } + } + for(int i = n_of_elems * NUM_PLACES; i < n_of_steps; i++) + res += func(x0 + i * dx); + for(int i = 0; i < NUM_PLACES; i++) + res += part_sum[i]; + res *= dx; + res += func(x1) * (x1 - x0 - n_of_steps * dx); + delete [] part_sum; + return res; } int main(int argc, char** argv) From c6efe3bef9537f3c9289cbef56780bf539366ca4 Mon Sep 17 00:00:00 2001 From: kulbitsky99 Date: Tue, 20 Oct 2020 11:21:04 +0300 Subject: [PATCH 4/6] src/main.cpp --- OpenMP4/src/main.cpp | 71 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/OpenMP4/src/main.cpp b/OpenMP4/src/main.cpp index 036d8e3..60459bc 100644 --- a/OpenMP4/src/main.cpp +++ b/OpenMP4/src/main.cpp @@ -3,9 +3,78 @@ #include #include +enum BORDERS +{ + N_of_borders = 6, + Border_gate = 4 +}; + + +double inverted_fact(int n) +{ + double fact = 1.0; + for(int i = 1; i <= n; ++i) + { + fact /= double(i); + } + return fact; +} + +double inverted_fact_from_border(int n, double border_value, int border) +{ + double fact = 1.0; + for(int i = border + 1; i <= n; ++i) + { + fact /= double(i); + } + return fact * border_value; +} + double calc(uint32_t x_last, uint32_t num_threads) { - return 0; + double sum = 0.0; + double* res = new double[num_threads]; + double* borders = new double[N_of_borders]; + double* border_value = new double[N_of_borders]; + + borders[0] = Border_gate; + border_value[0] = inverted_fact(Border_gate); + //std::cout << borders[0] << " " << border_value[0] << std::endl; + for(int i = 1; i < N_of_borders; i++) + { + borders[i] = Border_gate * (i + 1); + border_value[i] = inverted_fact_from_border(Border_gate * (i + 1), border_value[i - 1], Border_gate * i); + //std::cout << borders[i] << " " << border_value[i] << std::endl; + } + + int new_x_last = std::min(int(x_last), Border_gate * N_of_borders); + #pragma omp parallel num_threads(num_threads) + { + #pragma omp for + for(int i = 0; i < new_x_last; ++i) + { + double temp_value = 0.0; + if(i < borders[1]) + temp_value = inverted_fact(i); + + for(int j = 1; j < N_of_borders - 1; ++j) + { + if(i == borders[j]) + temp_value = border_value[j]; + if(i > borders[j]) + temp_value = inverted_fact_from_border(i, border_value[j], borders[j]); + } + int thread_id = omp_get_thread_num(); + res[thread_id] += temp_value; + } + } + for(int i = 0; i < int(num_threads); ++i) + sum += res[i]; + + delete [] res; + delete [] borders; + delete [] border_value; + return sum; } int main(int argc, char** argv) From c858650d1edd2c2169c026e7a4786b219440c80b Mon Sep 17 00:00:00 2001 From: kulbitsky99 Date: Tue, 20 Oct 2020 11:26:04 +0300 Subject: [PATCH 5/6] src/main.cpp change --- OpenMP4/src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenMP4/src/main.cpp b/OpenMP4/src/main.cpp index 60459bc..a325b98 100644 --- a/OpenMP4/src/main.cpp +++ b/OpenMP4/src/main.cpp @@ -5,7 +5,7 @@ enum BORDERS { - N_of_borders = 6, + N_of_borders = 100, Border_gate = 4 }; From a331235d5d1c2b2b38ca71ba714bd785c52b4818 Mon Sep 17 00:00:00 2001 From: kulbitsky99 Date: Thu, 22 Oct 2020 21:57:09 +0300 Subject: [PATCH 6/6] rebase branch on tasks --- Heatmap/main.cpp | 31 ------------------- OpenMP2/src/main.cpp | 13 +------- OpenMP3/src/main.cpp | 22 +------------- OpenMP4/src/main.cpp | 71 +------------------------------------------- 4 files changed, 3 insertions(+), 134 deletions(-) diff --git a/Heatmap/main.cpp b/Heatmap/main.cpp index e2d5edd..8e27d11 100644 --- a/Heatmap/main.cpp +++ b/Heatmap/main.cpp @@ -12,37 +12,6 @@ long int ReadArg(char * str); int main(int argc, char** argv) { - // Check arguments - if (argc != 3) - { - std::cout << "[Error] Usage \n"; - return 1; - } - - int n_of_external_threads = ReadArg(argv[1]); - int n_of_internal_threads = ReadArg(argv[2]); - - // enables to run nested parallelism - omp_set_nested(true); - int res = 0; - double start = omp_get_wtime(); - - // start of parallel code - #pragma omp parallel num_threads(n_of_external_threads) - { - for(int i = 0; i < 100; ++i) - { - res += create_threads(n_of_internal_threads); - } - } - - // end of parallel code - - double end = omp_get_wtime(); - - double delta = end - start; - std::cout << delta << std::endl; - return 0; } diff --git a/OpenMP2/src/main.cpp b/OpenMP2/src/main.cpp index 89cf1e2..8dab215 100644 --- a/OpenMP2/src/main.cpp +++ b/OpenMP2/src/main.cpp @@ -5,18 +5,7 @@ double calc(uint32_t x_last, uint32_t num_threads) { - double res = 0.0; - double * elems = new double[x_last]; - #pragma omp parallel num_threads(num_threads) - { - #pragma omp for - for(int i = x_last; i >= 1; i--) - elems[i - 1] = 1.0 / i; - } - for(int i = x_last - 1; i >= 0; i--) - res += elems[i]; - delete [] elems; - return res; + return 0; } int main(int argc, char** argv) diff --git a/OpenMP3/src/main.cpp b/OpenMP3/src/main.cpp index 567fd5b..2ab70c4 100644 --- a/OpenMP3/src/main.cpp +++ b/OpenMP3/src/main.cpp @@ -15,27 +15,7 @@ double func(double x) double calc(double x0, double x1, double dx, uint32_t num_threads) { - double res = 0.0; - double * part_sum = new double[NUM_PLACES]; - int n_of_steps = (x1 - x0) / dx; - int n_of_elems = n_of_steps / NUM_PLACES; - #pragma omp parallel num_threads(num_threads) - { - #pragma omp for - for(int i = 0; i < n_of_elems * NUM_PLACES; i++) - { - int id = i / n_of_elems; - part_sum[id] += func(x0 + i * dx); - } - } - for(int i = n_of_elems * NUM_PLACES; i < n_of_steps; i++) - res += func(x0 + i * dx); - for(int i = 0; i < NUM_PLACES; i++) - res += part_sum[i]; - res *= dx; - res += func(x1) * (x1 - x0 - n_of_steps * dx); - delete [] part_sum; - return res; + return 0; } int main(int argc, char** argv) diff --git a/OpenMP4/src/main.cpp b/OpenMP4/src/main.cpp index a325b98..036d8e3 100644 --- a/OpenMP4/src/main.cpp +++ b/OpenMP4/src/main.cpp @@ -3,78 +3,9 @@ #include #include -enum BORDERS -{ - N_of_borders = 100, - Border_gate = 4 -}; - - -double inverted_fact(int n) -{ - double fact = 1.0; - for(int i = 1; i <= n; ++i) - { - fact /= double(i); - } - return fact; -} - -double inverted_fact_from_border(int n, double border_value, int border) -{ - double fact = 1.0; - for(int i = border + 1; i <= n; ++i) - { - fact /= double(i); - } - return fact * border_value; -} - double calc(uint32_t x_last, uint32_t num_threads) { - double sum = 0.0; - double* res = new double[num_threads]; - double* borders = new double[N_of_borders]; - double* border_value = new double[N_of_borders]; - - borders[0] = Border_gate; - border_value[0] = inverted_fact(Border_gate); - //std::cout << borders[0] << " " << border_value[0] << std::endl; - for(int i = 1; i < N_of_borders; i++) - { - borders[i] = Border_gate * (i + 1); - border_value[i] = inverted_fact_from_border(Border_gate * (i + 1), border_value[i - 1], Border_gate * i); - //std::cout << borders[i] << " " << border_value[i] << std::endl; - } - - int new_x_last = std::min(int(x_last), Border_gate * N_of_borders); - #pragma omp parallel num_threads(num_threads) - { - #pragma omp for - for(int i = 0; i < new_x_last; ++i) - { - double temp_value = 0.0; - if(i < borders[1]) - temp_value = inverted_fact(i); - - for(int j = 1; j < N_of_borders - 1; ++j) - { - if(i == borders[j]) - temp_value = border_value[j]; - if(i > borders[j]) - temp_value = inverted_fact_from_border(i, border_value[j], borders[j]); - } - int thread_id = omp_get_thread_num(); - res[thread_id] += temp_value; - } - } - for(int i = 0; i < int(num_threads); ++i) - sum += res[i]; - - delete [] res; - delete [] borders; - delete [] border_value; - return sum; + return 0; } int main(int argc, char** argv)