From 9a7010108c56d89ea0896cc48a4a38d562dfaf80 Mon Sep 17 00:00:00 2001 From: coudrutciulacu <coudrut.c.ciulacu@gmail.com> Date: Sat, 4 Jan 2025 21:15:39 +0200 Subject: [PATCH] Stress test graphic --- README.md | 11 +++++++---- docs/stress_test_graphic.png | Bin 0 -> 14910 bytes 2 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 docs/stress_test_graphic.png diff --git a/README.md b/README.md index 194be00..cb30847 100644 --- a/README.md +++ b/README.md @@ -253,14 +253,17 @@ We ran all versions on 16 threads/processes accordingly, with the results: ## OpenMP Version - 16 Threads  -## Comparisons between solutions +## Comparison + + +# Comparisons between solutions ### Pthreads - + ### MPI - + ### OpenMP - + # References diff --git a/docs/stress_test_graphic.png b/docs/stress_test_graphic.png new file mode 100644 index 0000000000000000000000000000000000000000..2851a73c484d2b0bfb0a899041cdec100415b828 GIT binary patch literal 14910 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 literal 0 HcmV?d00001 -- GitLab