From fb2d561aabd9dd47336f6cd95955e40b4011aef1 Mon Sep 17 00:00:00 2001 From: Hymera Date: Mon, 3 Nov 2025 21:10:31 +0300 Subject: [PATCH 1/6] Lab1 --- .../common/include/common.hpp | 16 +++ .../data/pic.jpg | Bin 0 -> 15356 bytes tasks/rychkova_d_sum_matrix_columns/info.json | 9 ++ .../mpi/include/ops_mpi.hpp | 23 +++++ .../mpi/src/ops_mpi.cpp | 87 ++++++++++++++++ tasks/rychkova_d_sum_matrix_columns/report.md | 0 .../seq/include/ops_seq.hpp | 23 +++++ .../seq/src/ops_seq.cpp | 74 ++++++++++++++ .../settings.json | 7 ++ .../tests/.clang-tidy | 13 +++ .../tests/functional/main.cpp | 95 ++++++++++++++++++ .../tests/performance/main.cpp | 61 +++++++++++ 12 files changed, 408 insertions(+) create mode 100644 tasks/rychkova_d_sum_matrix_columns/common/include/common.hpp create mode 100644 tasks/rychkova_d_sum_matrix_columns/data/pic.jpg create mode 100644 tasks/rychkova_d_sum_matrix_columns/info.json create mode 100644 tasks/rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp create mode 100644 tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp create mode 100644 tasks/rychkova_d_sum_matrix_columns/report.md create mode 100644 tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp create mode 100644 tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp create mode 100644 tasks/rychkova_d_sum_matrix_columns/settings.json create mode 100644 tasks/rychkova_d_sum_matrix_columns/tests/.clang-tidy create mode 100644 tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp create mode 100644 tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp diff --git a/tasks/rychkova_d_sum_matrix_columns/common/include/common.hpp b/tasks/rychkova_d_sum_matrix_columns/common/include/common.hpp new file mode 100644 index 0000000000..351acaf76c --- /dev/null +++ b/tasks/rychkova_d_sum_matrix_columns/common/include/common.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include +#include +#include + +#include "task/include/task.hpp" + +namespace rychkova_d_sum_matrix_columns { + +using InType = std::vector>; +using OutType = std::vector; +using TestType = std::tuple>, std::vector, std::string>; +using BaseTask = ppc::task::Task; + +} // rychkova_d_sum_matrix_columns diff --git a/tasks/rychkova_d_sum_matrix_columns/data/pic.jpg b/tasks/rychkova_d_sum_matrix_columns/data/pic.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34458023494a39d66880a98aa5dcad18eb14b249 GIT binary patch literal 15356 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 + +#include +#include +#include + +#include "rychkova_d_sum_matrix_columns/common/include/common.hpp" +#include "util/include/util.hpp" + +namespace rychkova_d_sum_matrix_columns { + +RychkovaDSumMatrixColumnsMPI::RychkovaDSumMatrixColumnsMPI(const InType &in) { + SetTypeOfTask(GetStaticTypeOfTask()); + GetInput() = in; + GetOutput() = OutType{}; +} + +bool RychkovaDSumMatrixColumnsMPI::ValidationImpl() { + const auto& input = GetInput(); + + if (input.empty()) { + return true; + } + + size_t cols = input[0].size(); + for (const auto& row : input) { + if (row.size() != cols) { + return false; + } + } + + return GetOutput().empty(); +} + +bool RychkovaDSumMatrixColumnsMPI::PreProcessingImpl() { + const auto& input = GetInput(); + + if (input.empty()) { + GetOutput() = std::vector{}; + return true; + } + + GetOutput() = std::vector(input[0].size(), 0); + return true; +} + +bool RychkovaDSumMatrixColumnsMPI::RunImpl() { + const auto& input = GetInput(); + auto& output = GetOutput(); + + if (input.empty()) { + return true; + } + + int rank, size; + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Comm_size(MPI_COMM_WORLD, &size); + + size_t num_rows = input.size(); + size_t num_cols = input[0].size(); + + size_t rows_per_process = num_rows / size; + size_t remainder = num_rows % size; + size_t start_row = rank * rows_per_process + std::min(static_cast(rank), remainder); + size_t end_row = start_row + rows_per_process + (rank < static_cast(remainder) ? 1 : 0); + + std::vector local_sums(num_cols, 0); + + for (size_t i = start_row; i < end_row; ++i) { + for (size_t j = 0; j < num_cols; ++j) { + local_sums[j] += input[i][j]; + } + } + + MPI_Allreduce(local_sums.data(), output.data(), static_cast(num_cols), + MPI_INT, MPI_SUM, MPI_COMM_WORLD); + + return true; +} + +bool RychkovaDSumMatrixColumnsMPI::PostProcessingImpl() { + return true; +} + +} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/report.md b/tasks/rychkova_d_sum_matrix_columns/report.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp b/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp new file mode 100644 index 0000000000..d6ba1d50cd --- /dev/null +++ b/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include "rychkova_d_sum_matrix_columns/common/include/common.hpp" +#include "task/include/task.hpp" + +namespace rychkova_d_sum_matrix_columns { + +class RychkovaDSumMatrixColumnsSEQ : public BaseTask { + public: + static constexpr ppc::task::TypeOfTask GetStaticTypeOfTask() { + return ppc::task::TypeOfTask::kSEQ; + } + + explicit RychkovaDSumMatrixColumnsSEQ(const InType &in); + + private: + bool ValidationImpl() override; + bool PreProcessingImpl() override; + bool RunImpl() override; + bool PostProcessingImpl() override; +}; + +} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp b/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp new file mode 100644 index 0000000000..dbb0e69120 --- /dev/null +++ b/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp @@ -0,0 +1,74 @@ +#include "rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp" + +#include +#include + +#include "rychkova_d_sum_matrix_columns/common/include/common.hpp" +#include "util/include/util.hpp" + +namespace rychkova_d_sum_matrix_columns { + +RychkovaDSumMatrixColumnsSEQ::RychkovaDSumMatrixColumnsSEQ(const InType &in) { + SetTypeOfTask(GetStaticTypeOfTask()); + GetInput() = in; + GetOutput() = OutType{}; +} + +bool RychkovaDSumMatrixColumnsSEQ::ValidationImpl() { + const auto& input = GetInput(); + + if (input.empty()) { + return true; + } + + size_t cols = input[0].size(); + for (const auto& row : input) { + if (row.size() != cols) { + return false; + } + } + + return GetOutput().empty(); +} + +bool RychkovaDSumMatrixColumnsSEQ::PreProcessingImpl() { + const auto& input = GetInput(); + + if (input.empty()) { + GetOutput().clear(); + return true; + } + + const size_t cols = input[0].size(); + GetOutput().assign(cols, 0); + return true; +} + + +bool RychkovaDSumMatrixColumnsSEQ::RunImpl() { + const auto& input = GetInput(); + auto& output = GetOutput(); + + if (input.empty()) { + return true; + } + + if (output.empty() || output.size() != input[0].size()) { + output.assign(input[0].size(), 0); + } + + for (const auto& row : input) { + for (size_t j = 0; j < row.size(); ++j) { + output[j] += row[j]; + } + } + + return true; +} + + +bool RychkovaDSumMatrixColumnsSEQ::PostProcessingImpl() { + return true; +} + +} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/settings.json b/tasks/rychkova_d_sum_matrix_columns/settings.json new file mode 100644 index 0000000000..b1a0d52574 --- /dev/null +++ b/tasks/rychkova_d_sum_matrix_columns/settings.json @@ -0,0 +1,7 @@ +{ + "tasks_type": "processes", + "tasks": { + "mpi": "enabled", + "seq": "enabled" + } +} diff --git a/tasks/rychkova_d_sum_matrix_columns/tests/.clang-tidy b/tasks/rychkova_d_sum_matrix_columns/tests/.clang-tidy new file mode 100644 index 0000000000..ef43b7aa8a --- /dev/null +++ b/tasks/rychkova_d_sum_matrix_columns/tests/.clang-tidy @@ -0,0 +1,13 @@ +InheritParentConfig: true + +Checks: > + -modernize-loop-convert, + -cppcoreguidelines-avoid-goto, + -cppcoreguidelines-avoid-non-const-global-variables, + -misc-use-anonymous-namespace, + -modernize-use-std-print, + -modernize-type-traits + +CheckOptions: + - key: readability-function-cognitive-complexity.Threshold + value: 50 # Relaxed for tests diff --git a/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp b/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp new file mode 100644 index 0000000000..baa693a00b --- /dev/null +++ b/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp @@ -0,0 +1,95 @@ +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "rychkova_d_sum_matrix_columns/common/include/common.hpp" +#include "rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp" +#include "rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp" +#include "util/include/func_test_util.hpp" +#include "util/include/util.hpp" + +namespace rychkova_d_sum_matrix_columns { + +class RychkovaRunFuncTestsMatrixColumns : public ppc::util::BaseRunFuncTests { + public: + static std::string PrintTestParam(const TestType &test_param) { + return std::get<2>(test_param); + } + + protected: + void SetUp() override { + TestType params = std::get(ppc::util::GTestParamIndex::kTestParams)>(GetParam()); + input_matrix_ = std::get<0>(params); + expected_output_ = std::get<1>(params); + } + + bool CheckTestOutputData(OutType &output_data) final { + if (output_data.size() != expected_output_.size()) { + return false; + } + + for (size_t i = 0; i < output_data.size(); ++i) { + if (output_data[i] != expected_output_[i]) { + return false; + } + } + + return true; + } + + InType GetTestInputData() final { + return input_matrix_; + } + + private: + InType input_matrix_; + OutType expected_output_; +}; + +namespace { + +TEST_P(RychkovaRunFuncTestsMatrixColumns, SumMatrixColumnsTest) { + ExecuteTest(GetParam()); +} + +const std::array kTestParam = { + std::make_tuple(std::vector>{}, + std::vector{}, + "empty_matrix"), + + std::make_tuple(std::vector>{{5}}, + std::vector{5}, + "1x1_matrix"), + + std::make_tuple(std::vector>{{1, 2, 3}, + {4, 5, 6}}, + std::vector{5, 7, 9}, + "2x3_matrix"), + + std::make_tuple(std::vector>{{1, -2}, + {-3, 4}, + {5, -6}}, + std::vector{3, -4}, + "3x2_matrix_with_negatives") +}; + +const auto kTestTasksList = + std::tuple_cat(ppc::util::AddFuncTask(kTestParam, PPC_SETTINGS_rychkova_d_sum_matrix_columns), + ppc::util::AddFuncTask(kTestParam, PPC_SETTINGS_rychkova_d_sum_matrix_columns)); + +const auto kGtestValues = ppc::util::ExpandToValues(kTestTasksList); + +const auto kPerfTestName = RychkovaRunFuncTestsMatrixColumns::PrintFuncTestName; + +INSTANTIATE_TEST_SUITE_P(MatrixColumnsTests, RychkovaRunFuncTestsMatrixColumns, kGtestValues, kPerfTestName); + +} // namespace + +} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp b/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp new file mode 100644 index 0000000000..d2b3842355 --- /dev/null +++ b/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp @@ -0,0 +1,61 @@ +#include + +#include "rychkova_d_sum_matrix_columns/common/include/common.hpp" +#include "rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp" +#include "rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp" +#include "util/include/perf_test_util.hpp" + +namespace rychkova_d_sum_matrix_columns { + +class RychkovaRunPerfTestMatrixColumns : public ppc::util::BaseRunPerfTests { + const size_t kMatrixSize_ = 100; + + InType input_matrix_{}; + OutType expected_output_{}; + + void SetUp() override { + input_matrix_.resize(kMatrixSize_); + expected_output_.resize(kMatrixSize_, 0); + + for (size_t i = 0; i < kMatrixSize_; ++i) { + input_matrix_[i].resize(kMatrixSize_); + for (size_t j = 0; j < kMatrixSize_; ++j) { + input_matrix_[i][j] = 1; + expected_output_[j] += 1; + } + } + } + + bool CheckTestOutputData(OutType &output_data) final { + if (output_data.size() != expected_output_.size()) { + return false; + } + + for (size_t j = 0; j < kMatrixSize_; ++j) { + if (output_data[j] != expected_output_[j]) { + return false; + } + } + + return true; + } + + InType GetTestInputData() final { + return input_matrix_; + } +}; + +TEST_P(RychkovaRunPerfTestMatrixColumns, RunPerfModes) { + ExecuteTest(GetParam()); +} + +const auto kAllPerfTasks = + ppc::util::MakeAllPerfTasks(PPC_SETTINGS_rychkova_d_sum_matrix_columns); + +const auto kGtestValues = ppc::util::TupleToGTestValues(kAllPerfTasks); + +const auto kPerfTestName = RychkovaRunPerfTestMatrixColumns::CustomPerfTestName; + +INSTANTIATE_TEST_SUITE_P(RunModeTests, RychkovaRunPerfTestMatrixColumns, kGtestValues, kPerfTestName); + +} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file From a3fe38ed82cb246108954bf4bd3f81b7d79f7436 Mon Sep 17 00:00:00 2001 From: Hymera Date: Fri, 7 Nov 2025 21:45:02 +0300 Subject: [PATCH 2/6] fix --- .../common/include/common.hpp | 2 +- .../rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp | 11 ++++++----- .../rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp | 3 +-- .../tests/functional/main.cpp | 3 --- .../tests/performance/main.cpp | 6 ++++-- 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/tasks/rychkova_d_sum_matrix_columns/common/include/common.hpp b/tasks/rychkova_d_sum_matrix_columns/common/include/common.hpp index 351acaf76c..afb9b6f9a5 100644 --- a/tasks/rychkova_d_sum_matrix_columns/common/include/common.hpp +++ b/tasks/rychkova_d_sum_matrix_columns/common/include/common.hpp @@ -13,4 +13,4 @@ using OutType = std::vector; using TestType = std::tuple>, std::vector, std::string>; using BaseTask = ppc::task::Task; -} // rychkova_d_sum_matrix_columns +} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp b/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp index 37ea304184..e3d6d0e121 100644 --- a/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp @@ -2,12 +2,12 @@ #include +#include +#include #include #include -#include #include "rychkova_d_sum_matrix_columns/common/include/common.hpp" -#include "util/include/util.hpp" namespace rychkova_d_sum_matrix_columns { @@ -54,7 +54,8 @@ bool RychkovaDSumMatrixColumnsMPI::RunImpl() { return true; } - int rank, size; + int rank = 0; + int size = 0; MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); @@ -63,8 +64,8 @@ bool RychkovaDSumMatrixColumnsMPI::RunImpl() { size_t rows_per_process = num_rows / size; size_t remainder = num_rows % size; - size_t start_row = rank * rows_per_process + std::min(static_cast(rank), remainder); - size_t end_row = start_row + rows_per_process + (rank < static_cast(remainder) ? 1 : 0); + size_t start_row = (rank * rows_per_process) + std::min(static_cast(rank), remainder); + size_t end_row = start_row + rows_per_process + (std::cmp_less(rank, remainder) ? 1 : 0); std::vector local_sums(num_cols, 0); diff --git a/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp b/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp index dbb0e69120..7ff52566a7 100644 --- a/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp @@ -1,10 +1,9 @@ #include "rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp" -#include +#include #include #include "rychkova_d_sum_matrix_columns/common/include/common.hpp" -#include "util/include/util.hpp" namespace rychkova_d_sum_matrix_columns { diff --git a/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp b/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp index baa693a00b..e60ab62b14 100644 --- a/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp @@ -1,12 +1,9 @@ #include -#include #include #include -#include #include #include -#include #include #include "rychkova_d_sum_matrix_columns/common/include/common.hpp" diff --git a/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp b/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp index d2b3842355..4bcc5ec5a6 100644 --- a/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp @@ -1,5 +1,7 @@ #include +#include + #include "rychkova_d_sum_matrix_columns/common/include/common.hpp" #include "rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp" #include "rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp" @@ -10,8 +12,8 @@ namespace rychkova_d_sum_matrix_columns { class RychkovaRunPerfTestMatrixColumns : public ppc::util::BaseRunPerfTests { const size_t kMatrixSize_ = 100; - InType input_matrix_{}; - OutType expected_output_{}; + InType input_matrix_; + OutType expected_output_; void SetUp() override { input_matrix_.resize(kMatrixSize_); From ed8b5b32e82c5251b968358a7a4606b8aaf72507 Mon Sep 17 00:00:00 2001 From: Hymera Date: Fri, 7 Nov 2025 22:18:20 +0300 Subject: [PATCH 3/6] fix --- .../mpi/src/ops_mpi.cpp | 4 +-- .../seq/src/ops_seq.cpp | 4 +-- .../tests/functional/main.cpp | 30 +++++++++---------- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp b/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp index e3d6d0e121..e369d7bcbe 100644 --- a/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp @@ -4,7 +4,7 @@ #include #include -#include +#include #include #include "rychkova_d_sum_matrix_columns/common/include/common.hpp" @@ -75,7 +75,7 @@ bool RychkovaDSumMatrixColumnsMPI::RunImpl() { } } - MPI_Allreduce(local_sums.data(), output.data(), static_cast(num_cols), + MPI_Allreduce(local_sums.data(), output.data(), static_cast(num_cols), MPI_INT, MPI_SUM, MPI_COMM_WORLD); return true; diff --git a/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp b/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp index 7ff52566a7..c21a051309 100644 --- a/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp @@ -26,7 +26,7 @@ bool RychkovaDSumMatrixColumnsSEQ::ValidationImpl() { return false; } } - + return GetOutput().empty(); } @@ -43,7 +43,6 @@ bool RychkovaDSumMatrixColumnsSEQ::PreProcessingImpl() { return true; } - bool RychkovaDSumMatrixColumnsSEQ::RunImpl() { const auto& input = GetInput(); auto& output = GetOutput(); @@ -65,7 +64,6 @@ bool RychkovaDSumMatrixColumnsSEQ::RunImpl() { return true; } - bool RychkovaDSumMatrixColumnsSEQ::PostProcessingImpl() { return true; } diff --git a/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp b/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp index e60ab62b14..77ad4fb3d3 100644 --- a/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp @@ -37,7 +37,7 @@ class RychkovaRunFuncTestsMatrixColumns : public ppc::util::BaseRunFuncTests kTestParam = { - std::make_tuple(std::vector>{}, - std::vector{}, + std::make_tuple(std::vector>{}, + std::vector{}, "empty_matrix"), - - std::make_tuple(std::vector>{{5}}, - std::vector{5}, + + std::make_tuple(std::vector>{{5}}, + std::vector{5}, "1x1_matrix"), - - std::make_tuple(std::vector>{{1, 2, 3}, - {4, 5, 6}}, - std::vector{5, 7, 9}, + + std::make_tuple(std::vector>{{1, 2, 3}, + {4, 5, 6}}, + std::vector{5, 7, 9}, "2x3_matrix"), - - std::make_tuple(std::vector>{{1, -2}, - {-3, 4}, - {5, -6}}, - std::vector{3, -4}, + + std::make_tuple(std::vector>{{1, -2}, + {-3, 4}, + {5, -6}}, + std::vector{3, -4}, "3x2_matrix_with_negatives") }; From 93a82031e7a93905e50eef4afd1882ebb513fd8f Mon Sep 17 00:00:00 2001 From: Hymera Date: Fri, 7 Nov 2025 22:49:19 +0300 Subject: [PATCH 4/6] fix --- .../mpi/include/ops_mpi.hpp | 22 ++-- .../mpi/src/ops_mpi.cpp | 5 +- .../seq/include/ops_seq.hpp | 20 +-- .../seq/src/ops_seq.cpp | 2 +- .../tests/functional/main.cpp | 114 ++++++++++++++---- .../tests/performance/main.cpp | 95 +++++++++------ 6 files changed, 176 insertions(+), 82 deletions(-) diff --git a/tasks/rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp b/tasks/rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp index c1aab14b1e..eceac67a85 100644 --- a/tasks/rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp +++ b/tasks/rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp @@ -6,18 +6,18 @@ namespace rychkova_d_sum_matrix_columns { class RychkovaDSumMatrixColumnsMPI : public BaseTask { - public: - static constexpr ppc::task::TypeOfTask GetStaticTypeOfTask() { - return ppc::task::TypeOfTask::kMPI; - } + public: + static constexpr ppc::task::TypeOfTask GetStaticTypeOfTask() { + return ppc::task::TypeOfTask::kMPI; + } - explicit RychkovaDSumMatrixColumnsMPI(const InType &in); + explicit RychkovaDSumMatrixColumnsMPI(const InType &in); - private: - bool ValidationImpl() override; - bool PreProcessingImpl() override; - bool RunImpl() override; - bool PostProcessingImpl() override; + private: + bool ValidationImpl() override; + bool PreProcessingImpl() override; + bool RunImpl() override; + bool PostProcessingImpl() override; }; -} // namespace rychkova_d_sum_matrix_columns +} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp b/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp index e369d7bcbe..bf47f3626b 100644 --- a/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp @@ -11,7 +11,7 @@ namespace rychkova_d_sum_matrix_columns { -RychkovaDSumMatrixColumnsMPI::RychkovaDSumMatrixColumnsMPI(const InType &in) { +RychkovaDSumMatrixColumnsMPI::RychkovaDSumMatrixColumnsMPI(const InType& in) { SetTypeOfTask(GetStaticTypeOfTask()); GetInput() = in; GetOutput() = OutType{}; @@ -75,8 +75,7 @@ bool RychkovaDSumMatrixColumnsMPI::RunImpl() { } } - MPI_Allreduce(local_sums.data(), output.data(), static_cast(num_cols), - MPI_INT, MPI_SUM, MPI_COMM_WORLD); + MPI_Allreduce(local_sums.data(), output.data(), static_cast(num_cols), MPI_INT, MPI_SUM, MPI_COMM_WORLD); return true; } diff --git a/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp b/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp index d6ba1d50cd..1bbf30786e 100644 --- a/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp +++ b/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp @@ -6,18 +6,18 @@ namespace rychkova_d_sum_matrix_columns { class RychkovaDSumMatrixColumnsSEQ : public BaseTask { - public: - static constexpr ppc::task::TypeOfTask GetStaticTypeOfTask() { - return ppc::task::TypeOfTask::kSEQ; - } + public: + static constexpr ppc::task::TypeOfTask GetStaticTypeOfTask() { + return ppc::task::TypeOfTask::kSEQ; + } - explicit RychkovaDSumMatrixColumnsSEQ(const InType &in); + explicit RychkovaDSumMatrixColumnsSEQ(const InType &in); - private: - bool ValidationImpl() override; - bool PreProcessingImpl() override; - bool RunImpl() override; - bool PostProcessingImpl() override; + private: + bool ValidationImpl() override; + bool PreProcessingImpl() override; + bool RunImpl() override; + bool PostProcessingImpl() override; }; } // namespace rychkova_d_sum_matrix_columns \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp b/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp index c21a051309..954a71c43d 100644 --- a/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp @@ -7,7 +7,7 @@ namespace rychkova_d_sum_matrix_columns { -RychkovaDSumMatrixColumnsSEQ::RychkovaDSumMatrixColumnsSEQ(const InType &in) { +RychkovaDSumMatrixColumnsSEQ::RychkovaDSumMatrixColumnsSEQ(const InType& in) { SetTypeOfTask(GetStaticTypeOfTask()); GetInput() = in; GetOutput() = OutType{}; diff --git a/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp b/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp index 77ad4fb3d3..12fc77b0fc 100644 --- a/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp @@ -57,29 +57,97 @@ TEST_P(RychkovaRunFuncTestsMatrixColumns, SumMatrixColumnsTest) { } const std::array kTestParam = { - std::make_tuple(std::vector>{}, - std::vector{}, - "empty_matrix"), - - std::make_tuple(std::vector>{{5}}, - std::vector{5}, - "1x1_matrix"), - - std::make_tuple(std::vector>{{1, 2, 3}, - {4, 5, 6}}, - std::vector{5, 7, 9}, - "2x3_matrix"), - - std::make_tuple(std::vector>{{1, -2}, - {-3, 4}, - {5, -6}}, - std::vector{3, -4}, - "3x2_matrix_with_negatives") + std::make_tuple(std::vector>{}, std::vector{}, "empty_matrix"), + + std::make_tuple(std::vector>{{5}}, std::vector{5}, "1x1_matrix"), + + std::make_tuple(std::vector>{{1, 2, 3}, {4, 5, 6}}, std::vector{5, 7, 9}, "2x3_matrix"), + + std::make_tuple(std::vector>{{1, -2}, {-3, 4}, {5, -6}}, std::vector{3, -4}, + "3x2_matrix_with_negatives")}; + +const auto kTestTasksList = std::tuple_cat(ppc::util::AddFuncTask( + kTestParam, PPC_SETTINGS_rychkova_d_sum_matrix_columns), + ppc::util::AddFuncTask( + kTestParam, PPC_SETTINGS_rychkova_d_sum_matrix_columns)); + +const auto kGtestValues = ppc::util::ExpandToValues(kTestTasksList); + +const auto kPerfTestName = RychkovaRunFuncTestsMatrixColumns::PrintFuncTestName; + +INSTANTIATE_TEST_SUITE_P(MatrixColumnsTests, RychkovaRunFuncTestsMatrixColumns, kGtestValues, kPerfTestName); +#include + +#include +#include +#include +#include +#include + +#include "rychkova_d_sum_matrix_columns/common/include/common.hpp" +#include "rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp" +#include "rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp" +#include "util/include/func_test_util.hpp" +#include "util/include/util.hpp" + +namespace rychkova_d_sum_matrix_columns { + +class RychkovaRunFuncTestsMatrixColumns : public ppc::util::BaseRunFuncTests { + public: + static std::string PrintTestParam(const TestType &test_param) { + return std::get<2>(test_param); + } + + protected: + void SetUp() override { + TestType params = std::get(ppc::util::GTestParamIndex::kTestParams)>(GetParam()); + input_matrix_ = std::get<0>(params); + expected_output_ = std::get<1>(params); + } + + bool CheckTestOutputData(OutType &output_data) final { + if (output_data.size() != expected_output_.size()) { + return false; + } + + for (size_t i = 0; i < output_data.size(); ++i) { + if (output_data[i] != expected_output_[i]) { + return false; + } + } + + return true; + } + + InType GetTestInputData() final { + return input_matrix_; + } + + private: + InType input_matrix_; + OutType expected_output_; }; -const auto kTestTasksList = - std::tuple_cat(ppc::util::AddFuncTask(kTestParam, PPC_SETTINGS_rychkova_d_sum_matrix_columns), - ppc::util::AddFuncTask(kTestParam, PPC_SETTINGS_rychkova_d_sum_matrix_columns)); +namespace { + +TEST_P(RychkovaRunFuncTestsMatrixColumns, SumMatrixColumnsTest) { + ExecuteTest(GetParam()); +} + +const std::array kTestParam = { + std::make_tuple(std::vector>{}, std::vector{}, "empty_matrix"), + + std::make_tuple(std::vector>{{5}}, std::vector{5}, "1x1_matrix"), + + std::make_tuple(std::vector>{{1, 2, 3}, {4, 5, 6}}, std::vector{5, 7, 9}, "2x3_matrix"), + + std::make_tuple(std::vector>{{1, -2}, {-3, 4}, {5, -6}}, std::vector{3, -4}, + "3x2_matrix_with_negatives")}; + +const auto kTestTasksList = std::tuple_cat(ppc::util::AddFuncTask( + kTestParam, PPC_SETTINGS_rychkova_d_sum_matrix_columns), + ppc::util::AddFuncTask( + kTestParam, PPC_SETTINGS_rychkova_d_sum_matrix_columns)); const auto kGtestValues = ppc::util::ExpandToValues(kTestTasksList); @@ -89,4 +157,8 @@ INSTANTIATE_TEST_SUITE_P(MatrixColumnsTests, RychkovaRunFuncTestsMatrixColumns, } // namespace +} // namespace rychkova_d_sum_matrix_columns + +} // namespace + } // namespace rychkova_d_sum_matrix_columns \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp b/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp index 4bcc5ec5a6..a1e9108d28 100644 --- a/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp @@ -1,63 +1,86 @@ -#include +#include +#include #include +#include +#include #include "rychkova_d_sum_matrix_columns/common/include/common.hpp" #include "rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp" -#include "rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp" -#include "util/include/perf_test_util.hpp" namespace rychkova_d_sum_matrix_columns { -class RychkovaRunPerfTestMatrixColumns : public ppc::util::BaseRunPerfTests { - const size_t kMatrixSize_ = 100; - - InType input_matrix_; - OutType expected_output_; +RychkovaDSumMatrixColumnsMPI::RychkovaDSumMatrixColumnsMPI(const InType& in) { + SetTypeOfTask(GetStaticTypeOfTask()); + GetInput() = in; + GetOutput() = OutType{}; +} - void SetUp() override { - input_matrix_.resize(kMatrixSize_); - expected_output_.resize(kMatrixSize_, 0); +bool RychkovaDSumMatrixColumnsMPI::ValidationImpl() { + const auto& input = GetInput(); - for (size_t i = 0; i < kMatrixSize_; ++i) { - input_matrix_[i].resize(kMatrixSize_); - for (size_t j = 0; j < kMatrixSize_; ++j) { - input_matrix_[i][j] = 1; - expected_output_[j] += 1; - } - } + if (input.empty()) { + return true; } - bool CheckTestOutputData(OutType &output_data) final { - if (output_data.size() != expected_output_.size()) { + size_t cols = input[0].size(); + for (const auto& row : input) { + if (row.size() != cols) { return false; } + } - for (size_t j = 0; j < kMatrixSize_; ++j) { - if (output_data[j] != expected_output_[j]) { - return false; - } - } + return GetOutput().empty(); +} + +bool RychkovaDSumMatrixColumnsMPI::PreProcessingImpl() { + const auto& input = GetInput(); + if (input.empty()) { + GetOutput() = std::vector{}; return true; } - InType GetTestInputData() final { - return input_matrix_; + GetOutput() = std::vector(input[0].size(), 0); + return true; +} + +bool RychkovaDSumMatrixColumnsMPI::RunImpl() { + const auto& input = GetInput(); + auto& output = GetOutput(); + + if (input.empty()) { + return true; } -}; -TEST_P(RychkovaRunPerfTestMatrixColumns, RunPerfModes) { - ExecuteTest(GetParam()); -} + int rank = 0; + int size = 0; + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Comm_size(MPI_COMM_WORLD, &size); + + size_t num_rows = input.size(); + size_t num_cols = input[0].size(); + + size_t rows_per_process = num_rows / size; + size_t remainder = num_rows % size; + size_t start_row = (rank * rows_per_process) + std::min(static_cast(rank), remainder); + size_t end_row = start_row + rows_per_process + (std::cmp_less(rank, remainder) ? 1 : 0); -const auto kAllPerfTasks = - ppc::util::MakeAllPerfTasks(PPC_SETTINGS_rychkova_d_sum_matrix_columns); + std::vector local_sums(num_cols, 0); -const auto kGtestValues = ppc::util::TupleToGTestValues(kAllPerfTasks); + for (size_t i = start_row; i < end_row; ++i) { + for (size_t j = 0; j < num_cols; ++j) { + local_sums[j] += input[i][j]; + } + } -const auto kPerfTestName = RychkovaRunPerfTestMatrixColumns::CustomPerfTestName; + MPI_Allreduce(local_sums.data(), output.data(), static_cast(num_cols), MPI_INT, MPI_SUM, MPI_COMM_WORLD); -INSTANTIATE_TEST_SUITE_P(RunModeTests, RychkovaRunPerfTestMatrixColumns, kGtestValues, kPerfTestName); + return true; +} + +bool RychkovaDSumMatrixColumnsMPI::PostProcessingImpl() { + return true; +} } // namespace rychkova_d_sum_matrix_columns \ No newline at end of file From 995cfb5aa79e88810dfd2d2b321efd2071c84821 Mon Sep 17 00:00:00 2001 From: Hymera Date: Fri, 7 Nov 2025 22:58:01 +0300 Subject: [PATCH 5/6] fix --- .../common/include/common.hpp | 2 +- tasks/rychkova_d_sum_matrix_columns/info.json | 14 ++-- .../mpi/include/ops_mpi.hpp | 2 +- .../mpi/src/ops_mpi.cpp | 2 +- .../seq/include/ops_seq.hpp | 2 +- .../seq/src/ops_seq.cpp | 2 +- .../settings.json | 2 +- .../tests/functional/main.cpp | 82 ------------------- .../tests/performance/main.cpp | 2 +- 9 files changed, 14 insertions(+), 96 deletions(-) diff --git a/tasks/rychkova_d_sum_matrix_columns/common/include/common.hpp b/tasks/rychkova_d_sum_matrix_columns/common/include/common.hpp index afb9b6f9a5..51859b76d9 100644 --- a/tasks/rychkova_d_sum_matrix_columns/common/include/common.hpp +++ b/tasks/rychkova_d_sum_matrix_columns/common/include/common.hpp @@ -13,4 +13,4 @@ using OutType = std::vector; using TestType = std::tuple>, std::vector, std::string>; using BaseTask = ppc::task::Task; -} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file +} // namespace rychkova_d_sum_matrix_columns diff --git a/tasks/rychkova_d_sum_matrix_columns/info.json b/tasks/rychkova_d_sum_matrix_columns/info.json index e1aa46cbfc..5d14301a61 100644 --- a/tasks/rychkova_d_sum_matrix_columns/info.json +++ b/tasks/rychkova_d_sum_matrix_columns/info.json @@ -1,9 +1,9 @@ { - "student": { - "first_name": "Diana", - "last_name": "Rychkova", - "middle_name": "Dmitrievna", - "group_number": "3823B1FI3", - "task_number": "1" - } + "student": { + "first_name": "Diana", + "last_name": "Rychkova", + "middle_name": "Dmitrievna", + "group_number": "3823B1FI3", + "task_number": "1" + } } diff --git a/tasks/rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp b/tasks/rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp index eceac67a85..ac85374f02 100644 --- a/tasks/rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp +++ b/tasks/rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp @@ -20,4 +20,4 @@ class RychkovaDSumMatrixColumnsMPI : public BaseTask { bool PostProcessingImpl() override; }; -} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file +} // namespace rychkova_d_sum_matrix_columns diff --git a/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp b/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp index bf47f3626b..1442d85f0a 100644 --- a/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp @@ -84,4 +84,4 @@ bool RychkovaDSumMatrixColumnsMPI::PostProcessingImpl() { return true; } -} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file +} // namespace rychkova_d_sum_matrix_columns diff --git a/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp b/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp index 1bbf30786e..4aaaac98a0 100644 --- a/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp +++ b/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp @@ -20,4 +20,4 @@ class RychkovaDSumMatrixColumnsSEQ : public BaseTask { bool PostProcessingImpl() override; }; -} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file +} // namespace rychkova_d_sum_matrix_columns diff --git a/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp b/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp index 954a71c43d..d02d1e3f91 100644 --- a/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp @@ -68,4 +68,4 @@ bool RychkovaDSumMatrixColumnsSEQ::PostProcessingImpl() { return true; } -} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file +} // namespace rychkova_d_sum_matrix_columns diff --git a/tasks/rychkova_d_sum_matrix_columns/settings.json b/tasks/rychkova_d_sum_matrix_columns/settings.json index b1a0d52574..0dd4f2b205 100644 --- a/tasks/rychkova_d_sum_matrix_columns/settings.json +++ b/tasks/rychkova_d_sum_matrix_columns/settings.json @@ -4,4 +4,4 @@ "mpi": "enabled", "seq": "enabled" } -} +} \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp b/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp index 12fc77b0fc..8472266396 100644 --- a/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp @@ -75,90 +75,8 @@ const auto kGtestValues = ppc::util::ExpandToValues(kTestTasksList); const auto kPerfTestName = RychkovaRunFuncTestsMatrixColumns::PrintFuncTestName; -INSTANTIATE_TEST_SUITE_P(MatrixColumnsTests, RychkovaRunFuncTestsMatrixColumns, kGtestValues, kPerfTestName); -#include - -#include -#include -#include -#include -#include - -#include "rychkova_d_sum_matrix_columns/common/include/common.hpp" -#include "rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp" -#include "rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp" -#include "util/include/func_test_util.hpp" -#include "util/include/util.hpp" - -namespace rychkova_d_sum_matrix_columns { - -class RychkovaRunFuncTestsMatrixColumns : public ppc::util::BaseRunFuncTests { - public: - static std::string PrintTestParam(const TestType &test_param) { - return std::get<2>(test_param); - } - - protected: - void SetUp() override { - TestType params = std::get(ppc::util::GTestParamIndex::kTestParams)>(GetParam()); - input_matrix_ = std::get<0>(params); - expected_output_ = std::get<1>(params); - } - - bool CheckTestOutputData(OutType &output_data) final { - if (output_data.size() != expected_output_.size()) { - return false; - } - - for (size_t i = 0; i < output_data.size(); ++i) { - if (output_data[i] != expected_output_[i]) { - return false; - } - } - - return true; - } - - InType GetTestInputData() final { - return input_matrix_; - } - - private: - InType input_matrix_; - OutType expected_output_; -}; - -namespace { - -TEST_P(RychkovaRunFuncTestsMatrixColumns, SumMatrixColumnsTest) { - ExecuteTest(GetParam()); -} - -const std::array kTestParam = { - std::make_tuple(std::vector>{}, std::vector{}, "empty_matrix"), - - std::make_tuple(std::vector>{{5}}, std::vector{5}, "1x1_matrix"), - - std::make_tuple(std::vector>{{1, 2, 3}, {4, 5, 6}}, std::vector{5, 7, 9}, "2x3_matrix"), - - std::make_tuple(std::vector>{{1, -2}, {-3, 4}, {5, -6}}, std::vector{3, -4}, - "3x2_matrix_with_negatives")}; - -const auto kTestTasksList = std::tuple_cat(ppc::util::AddFuncTask( - kTestParam, PPC_SETTINGS_rychkova_d_sum_matrix_columns), - ppc::util::AddFuncTask( - kTestParam, PPC_SETTINGS_rychkova_d_sum_matrix_columns)); - -const auto kGtestValues = ppc::util::ExpandToValues(kTestTasksList); - -const auto kPerfTestName = RychkovaRunFuncTestsMatrixColumns::PrintFuncTestName; - INSTANTIATE_TEST_SUITE_P(MatrixColumnsTests, RychkovaRunFuncTestsMatrixColumns, kGtestValues, kPerfTestName); } // namespace } // namespace rychkova_d_sum_matrix_columns - -} // namespace - -} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp b/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp index a1e9108d28..2358058332 100644 --- a/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp @@ -83,4 +83,4 @@ bool RychkovaDSumMatrixColumnsMPI::PostProcessingImpl() { return true; } -} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file +} // namespace rychkova_d_sum_matrix_columns From 30cd53e9e5d6a6da576c9953ad6c7d5b8c0f276b Mon Sep 17 00:00:00 2001 From: Hymera Date: Sat, 8 Nov 2025 20:31:35 +0300 Subject: [PATCH 6/6] fix --- tasks/rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp | 2 +- tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp | 2 +- tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp | 2 +- tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp | 2 +- tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp | 2 +- .../rychkova_d_sum_matrix_columns/tests/performance/main.cpp | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tasks/rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp b/tasks/rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp index ac85374f02..eceac67a85 100644 --- a/tasks/rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp +++ b/tasks/rychkova_d_sum_matrix_columns/mpi/include/ops_mpi.hpp @@ -20,4 +20,4 @@ class RychkovaDSumMatrixColumnsMPI : public BaseTask { bool PostProcessingImpl() override; }; -} // namespace rychkova_d_sum_matrix_columns +} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp b/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp index 1442d85f0a..bf47f3626b 100644 --- a/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/mpi/src/ops_mpi.cpp @@ -84,4 +84,4 @@ bool RychkovaDSumMatrixColumnsMPI::PostProcessingImpl() { return true; } -} // namespace rychkova_d_sum_matrix_columns +} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp b/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp index 4aaaac98a0..1bbf30786e 100644 --- a/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp +++ b/tasks/rychkova_d_sum_matrix_columns/seq/include/ops_seq.hpp @@ -20,4 +20,4 @@ class RychkovaDSumMatrixColumnsSEQ : public BaseTask { bool PostProcessingImpl() override; }; -} // namespace rychkova_d_sum_matrix_columns +} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp b/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp index d02d1e3f91..954a71c43d 100644 --- a/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/seq/src/ops_seq.cpp @@ -68,4 +68,4 @@ bool RychkovaDSumMatrixColumnsSEQ::PostProcessingImpl() { return true; } -} // namespace rychkova_d_sum_matrix_columns +} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp b/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp index 8472266396..1badbc48bc 100644 --- a/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/tests/functional/main.cpp @@ -79,4 +79,4 @@ INSTANTIATE_TEST_SUITE_P(MatrixColumnsTests, RychkovaRunFuncTestsMatrixColumns, } // namespace -} // namespace rychkova_d_sum_matrix_columns +} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file diff --git a/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp b/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp index 2358058332..005384a7dd 100644 --- a/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp +++ b/tasks/rychkova_d_sum_matrix_columns/tests/performance/main.cpp @@ -2,7 +2,7 @@ #include #include -#include +#include #include #include "rychkova_d_sum_matrix_columns/common/include/common.hpp" @@ -83,4 +83,4 @@ bool RychkovaDSumMatrixColumnsMPI::PostProcessingImpl() { return true; } -} // namespace rychkova_d_sum_matrix_columns +} // namespace rychkova_d_sum_matrix_columns \ No newline at end of file