diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 13c24e98a..aab7ccc96 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -65,6 +65,11 @@ jobs: env: CC: gcc-14 CXX: g++-14 + - name: Archive revert list + uses: actions/upload-artifact@v4.3.0 + with: + name: revert-list + path: build/revert-list.txt - name: Build project run: | cmake --build build --parallel diff --git a/tasks/CMakeLists.txt b/tasks/CMakeLists.txt index a421ff27c..2b49fc830 100644 --- a/tasks/CMakeLists.txt +++ b/tasks/CMakeLists.txt @@ -50,7 +50,8 @@ foreach(TASK_TYPE ${LIST_OF_TASKS}) SUBDIRLIST(subdirs ${PATH_TO_TASK}) foreach(subd ${subdirs}) if ("${subd}" MATCHES "_disabled$") - message(WARNING " -- SKIPPED func and perf tests for ${PATH_TO_TASK}/${subd}") + get_filename_component(DIR_NAME ${PATH_TO_TASK} NAME) + list(APPEND LIST_OF_REVERTS "${DIR_NAME}_${subd}") continue() endif() get_filename_component(PROJECT_ID ${subd} NAME) @@ -176,3 +177,11 @@ foreach(TASK_TYPE ${LIST_OF_TASKS}) set(FUNC_TESTS_SOURCE_FILES "") set(PERF_TESTS_SOURCE_FILES "") endforeach() + +set(OUTPUT_FILE "${CMAKE_BINARY_DIR}/revert-list.txt") +file(WRITE ${OUTPUT_FILE} "${CONTENT}") +message(STATUS "revert list") +foreach (dir_name ${LIST_OF_REVERTS}) + message(STATUS "-- ${dir_name}") + file(APPEND ${OUTPUT_FILE} "${dir_name}\n") +endforeach() diff --git a/tasks/all/example/func_tests/func_mpi.cpp b/tasks/all/example/func_tests/func_mpi.cpp index 5f07bdb55..fc4829fbc 100644 --- a/tasks/all/example/func_tests/func_mpi.cpp +++ b/tasks/all/example/func_tests/func_mpi.cpp @@ -5,7 +5,7 @@ #include #include -#include "mpi/example/include/ops_mpi.hpp" +#include "all/example/include/ops_mpi.hpp" namespace { std::vector GetRandomVector(int sz) { diff --git a/tasks/all/example/func_tests/func_omp.cpp b/tasks/all/example/func_tests/func_omp.cpp index f2e5d1090..dc8aa03f1 100644 --- a/tasks/all/example/func_tests/func_omp.cpp +++ b/tasks/all/example/func_tests/func_omp.cpp @@ -4,7 +4,7 @@ #include #include -#include "omp/example/include/ops_omp.hpp" +#include "all/example/include/ops_omp.hpp" namespace { std::vector GetRandomVector(int sz) { diff --git a/tasks/all/example/func_tests/func_seq.cpp b/tasks/all/example/func_tests/func_seq.cpp index 823fd3dc3..435c340e8 100644 --- a/tasks/all/example/func_tests/func_seq.cpp +++ b/tasks/all/example/func_tests/func_seq.cpp @@ -3,7 +3,7 @@ #include #include -#include "seq/example/include/ops_seq.hpp" +#include "all/example/include/ops_seq.hpp" TEST(Sequential, Test_Sum_10) { const int count = 10; diff --git a/tasks/all/example/func_tests/func_stl.cpp b/tasks/all/example/func_tests/func_stl.cpp index 372283baa..2091c90ca 100644 --- a/tasks/all/example/func_tests/func_stl.cpp +++ b/tasks/all/example/func_tests/func_stl.cpp @@ -5,7 +5,7 @@ #include #include -#include "stl/example/include/ops_stl.hpp" +#include "all/example/include/ops_stl.hpp" namespace { std::vector GetRandomVector(int sz) { diff --git a/tasks/all/example/func_tests/func_tbb.cpp b/tasks/all/example/func_tests/func_tbb.cpp index 63070eb30..0eaad68d9 100644 --- a/tasks/all/example/func_tests/func_tbb.cpp +++ b/tasks/all/example/func_tests/func_tbb.cpp @@ -4,7 +4,7 @@ #include #include -#include "tbb/example/include/ops_tbb.hpp" +#include "all/example/include/ops_tbb.hpp" namespace { std::vector GetRandomVector(int sz) { diff --git a/tasks/all/example/perf_tests/perf_omp.cpp b/tasks/all/example/perf_tests/perf_omp.cpp index 31922ef15..33913a015 100644 --- a/tasks/all/example/perf_tests/perf_omp.cpp +++ b/tasks/all/example/perf_tests/perf_omp.cpp @@ -4,8 +4,8 @@ #include #include +#include "all/example/include/ops_omp.hpp" #include "core/perf/include/perf.hpp" -#include "omp/example/include/ops_omp.hpp" TEST(all_example_perf_test, test_pipeline_run) { const int count = 100; diff --git a/tasks/all/example/perf_tests/perf_tbb.cpp b/tasks/all/example/perf_tests/perf_tbb.cpp index 6d56c0016..b8af3df47 100644 --- a/tasks/all/example/perf_tests/perf_tbb.cpp +++ b/tasks/all/example/perf_tests/perf_tbb.cpp @@ -4,8 +4,8 @@ #include #include +#include "all/example/include/ops_tbb.hpp" #include "core/perf/include/perf.hpp" -#include "tbb/example/include/ops_tbb.hpp" TEST(all_example_perf_test, test_task_run) { const int count = 100; diff --git a/tasks/all/example/src/ops_mpi.cpp b/tasks/all/example/src/ops_mpi.cpp index 8a273fe07..d0e1798fc 100644 --- a/tasks/all/example/src/ops_mpi.cpp +++ b/tasks/all/example/src/ops_mpi.cpp @@ -1,4 +1,4 @@ -#include "mpi/example/include/ops_mpi.hpp" +#include "all/example/include/ops_mpi.hpp" #include #include diff --git a/tasks/all/example/src/ops_omp.cpp b/tasks/all/example/src/ops_omp.cpp index 27d55aa51..902cc941a 100644 --- a/tasks/all/example/src/ops_omp.cpp +++ b/tasks/all/example/src/ops_omp.cpp @@ -1,4 +1,4 @@ -#include "omp/example/include/ops_omp.hpp" +#include "all/example/include/ops_omp.hpp" #include diff --git a/tasks/all/example/src/ops_seq.cpp b/tasks/all/example/src/ops_seq.cpp index 436f7b200..42398db23 100644 --- a/tasks/all/example/src/ops_seq.cpp +++ b/tasks/all/example/src/ops_seq.cpp @@ -1,4 +1,4 @@ -#include "seq/example/include/ops_seq.hpp" +#include "all/example/include/ops_seq.hpp" #include diff --git a/tasks/all/example/src/ops_stl.cpp b/tasks/all/example/src/ops_stl.cpp index ccc1bc058..a4332ca07 100644 --- a/tasks/all/example/src/ops_stl.cpp +++ b/tasks/all/example/src/ops_stl.cpp @@ -1,4 +1,4 @@ -#include "stl/example/include/ops_stl.hpp" +#include "all/example/include/ops_stl.hpp" #include #include diff --git a/tasks/all/example/src/ops_tbb.cpp b/tasks/all/example/src/ops_tbb.cpp index 8f8c5118a..909bf7cf1 100644 --- a/tasks/all/example/src/ops_tbb.cpp +++ b/tasks/all/example/src/ops_tbb.cpp @@ -1,4 +1,4 @@ -#include "tbb/example/include/ops_tbb.hpp" +#include "all/example/include/ops_tbb.hpp" #include diff --git a/tasks/seq/example_disabled/data/test.txt b/tasks/seq/example_disabled/data/test.txt new file mode 100644 index 000000000..105d7d9ad --- /dev/null +++ b/tasks/seq/example_disabled/data/test.txt @@ -0,0 +1 @@ +100 \ No newline at end of file diff --git a/tasks/seq/example_disabled/func_tests/main.cpp b/tasks/seq/example_disabled/func_tests/main.cpp new file mode 100644 index 000000000..00dbe12e9 --- /dev/null +++ b/tasks/seq/example_disabled/func_tests/main.cpp @@ -0,0 +1,151 @@ +#include + +#include +#include + +#include "seq/example/include/ops_seq.hpp" + +TEST(Sequential, Test_Sum_10) { + const int count = 10; + + // Create data + std::vector in(1, count); + std::vector out(1, 0); + + // Create task_data + auto task_data_seq = std::make_shared(); + task_data_seq->inputs.emplace_back(reinterpret_cast(in.data())); + task_data_seq->inputs_count.emplace_back(in.size()); + task_data_seq->outputs.emplace_back(reinterpret_cast(out.data())); + task_data_seq->outputs_count.emplace_back(out.size()); + + // Create Task + nesterov_a_test_task_seq::TestTaskSequential test_task_sequential(task_data_seq); + ASSERT_EQ(test_task_sequential.Validation(), true); + test_task_sequential.PreProcessing(); + test_task_sequential.Run(); + test_task_sequential.PostProcessing(); + ASSERT_EQ(count, out[0]); +} + +TEST(Sequential, Test_Sum_20) { + const int count = 20; + + // Create data + std::vector in(1, count); + std::vector out(1, 0); + + // Create task_data + auto task_data_seq = std::make_shared(); + task_data_seq->inputs.emplace_back(reinterpret_cast(in.data())); + task_data_seq->inputs_count.emplace_back(in.size()); + task_data_seq->outputs.emplace_back(reinterpret_cast(out.data())); + task_data_seq->outputs_count.emplace_back(out.size()); + + // Create Task + nesterov_a_test_task_seq::TestTaskSequential test_task_sequential(task_data_seq); + ASSERT_EQ(test_task_sequential.Validation(), true); + test_task_sequential.PreProcessing(); + test_task_sequential.Run(); + test_task_sequential.PostProcessing(); + ASSERT_EQ(count, out[0]); +} + +TEST(Sequential, Test_Sum_50) { + const int count = 50; + + // Create data + std::vector in(1, count); + std::vector out(1, 0); + + // Create task_data + auto task_data_seq = std::make_shared(); + task_data_seq->inputs.emplace_back(reinterpret_cast(in.data())); + task_data_seq->inputs_count.emplace_back(in.size()); + task_data_seq->outputs.emplace_back(reinterpret_cast(out.data())); + task_data_seq->outputs_count.emplace_back(out.size()); + + // Create Task + nesterov_a_test_task_seq::TestTaskSequential test_task_sequential(task_data_seq); + ASSERT_EQ(test_task_sequential.Validation(), true); + test_task_sequential.PreProcessing(); + test_task_sequential.Run(); + test_task_sequential.PostProcessing(); + ASSERT_EQ(count, out[0]); +} + +TEST(Sequential, Test_Sum_70) { + const int count = 70; + + // Create data + std::vector in(1, count); + std::vector out(1, 0); + + // Create task_data + auto task_data_seq = std::make_shared(); + task_data_seq->inputs.emplace_back(reinterpret_cast(in.data())); + task_data_seq->inputs_count.emplace_back(in.size()); + task_data_seq->outputs.emplace_back(reinterpret_cast(out.data())); + task_data_seq->outputs_count.emplace_back(out.size()); + + // Create Task + nesterov_a_test_task_seq::TestTaskSequential test_task_sequential(task_data_seq); + ASSERT_EQ(test_task_sequential.Validation(), true); + test_task_sequential.PreProcessing(); + test_task_sequential.Run(); + test_task_sequential.PostProcessing(); + ASSERT_EQ(count, out[0]); +} + +TEST(Sequential, Test_Sum_100) { + const int count = 100; + + // Create data + std::vector in(1, count); + std::vector out(1, 0); + + // Create task_data + auto task_data_seq = std::make_shared(); + task_data_seq->inputs.emplace_back(reinterpret_cast(in.data())); + task_data_seq->inputs_count.emplace_back(in.size()); + task_data_seq->outputs.emplace_back(reinterpret_cast(out.data())); + task_data_seq->outputs_count.emplace_back(out.size()); + + // Create Task + nesterov_a_test_task_seq::TestTaskSequential test_task_sequential(task_data_seq); + ASSERT_EQ(test_task_sequential.Validation(), true); + test_task_sequential.PreProcessing(); + test_task_sequential.Run(); + test_task_sequential.PostProcessing(); + ASSERT_EQ(count, out[0]); +} + +TEST(Sequential, Test_Sum_100_From_File) { + std::string line; + std::ifstream test_file(ppc::core::GetAbsolutePath("seq/example/data/test.txt")); + if (test_file.is_open()) { + getline(test_file, line); + } + test_file.close(); + + const int count = std::stoi(line); + + // Create data + std::vector in(1, count); + std::vector out(1, 0); + + // Create task_data + auto task_data_seq = std::make_shared(); + task_data_seq->inputs.emplace_back(reinterpret_cast(in.data())); + task_data_seq->inputs_count.emplace_back(in.size()); + task_data_seq->outputs.emplace_back(reinterpret_cast(out.data())); + task_data_seq->outputs_count.emplace_back(out.size()); + + // Create Task + nesterov_a_test_task_seq::TestTaskSequential test_task_sequential(task_data_seq); + ASSERT_EQ(test_task_sequential.Validation(), true); + test_task_sequential.PreProcessing(); + test_task_sequential.Run(); + test_task_sequential.PostProcessing(); + ASSERT_EQ(count, out[0]); +} diff --git a/tasks/seq/example_disabled/include/ops_seq.hpp b/tasks/seq/example_disabled/include/ops_seq.hpp new file mode 100644 index 000000000..5efb3cc4e --- /dev/null +++ b/tasks/seq/example_disabled/include/ops_seq.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include +#include + +#include "core/task/include/task.hpp" + +namespace nesterov_a_test_task_seq { + +class TestTaskSequential : public ppc::core::Task { + public: + explicit TestTaskSequential(ppc::core::TaskDataPtr task_data) : Task(std::move(task_data)) {} + bool PreProcessingImpl() override; + bool ValidationImpl() override; + bool RunImpl() override; + bool PostProcessingImpl() override; + + private: + int input_{}, res_{}; +}; + +} // namespace nesterov_a_test_task_seq \ No newline at end of file diff --git a/tasks/seq/example_disabled/perf_tests/main.cpp b/tasks/seq/example_disabled/perf_tests/main.cpp new file mode 100644 index 000000000..3ea5aabe9 --- /dev/null +++ b/tasks/seq/example_disabled/perf_tests/main.cpp @@ -0,0 +1,80 @@ +#include + +#include + +#include "core/perf/include/perf.hpp" +#include "seq/example/include/ops_seq.hpp" + +TEST(sequential_example_perf_test, test_pipeline_run) { + const int count = 100; + + // Create data + std::vector in(1, count); + std::vector out(1, 0); + + // Create task_data + auto task_data_seq = std::make_shared(); + task_data_seq->inputs.emplace_back(reinterpret_cast(in.data())); + task_data_seq->inputs_count.emplace_back(in.size()); + task_data_seq->outputs.emplace_back(reinterpret_cast(out.data())); + task_data_seq->outputs_count.emplace_back(out.size()); + + // Create Task + auto test_task_sequential = std::make_shared(task_data_seq); + + // Create Perf attributes + auto perf_attr = std::make_shared(); + perf_attr->num_running = 10; + const auto t0 = std::chrono::high_resolution_clock::now(); + perf_attr->current_timer = [&] { + auto current_time_point = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(current_time_point - t0).count(); + return static_cast(duration) * 1e-9; + }; + + // Create and init perf results + auto perf_results = std::make_shared(); + + // Create Perf analyzer + auto perf_analyzer = std::make_shared(test_task_sequential); + perf_analyzer->PipelineRun(perf_attr, perf_results); + ppc::core::Perf::PrintPerfStatistic(perf_results); + ASSERT_EQ(count, out[0]); +} + +TEST(sequential_example_perf_test, test_task_run) { + const int count = 100; + + // Create data + std::vector in(1, count); + std::vector out(1, 0); + + // Create task_data + auto task_data_seq = std::make_shared(); + task_data_seq->inputs.emplace_back(reinterpret_cast(in.data())); + task_data_seq->inputs_count.emplace_back(in.size()); + task_data_seq->outputs.emplace_back(reinterpret_cast(out.data())); + task_data_seq->outputs_count.emplace_back(out.size()); + + // Create Task + auto test_task_sequential = std::make_shared(task_data_seq); + + // Create Perf attributes + auto perf_attr = std::make_shared(); + perf_attr->num_running = 10; + const auto t0 = std::chrono::high_resolution_clock::now(); + perf_attr->current_timer = [&] { + auto current_time_point = std::chrono::high_resolution_clock::now(); + auto duration = std::chrono::duration_cast(current_time_point - t0).count(); + return static_cast(duration) * 1e-9; + }; + + // Create and init perf results + auto perf_results = std::make_shared(); + + // Create Perf analyzer + auto perf_analyzer = std::make_shared(test_task_sequential); + perf_analyzer->TaskRun(perf_attr, perf_results); + ppc::core::Perf::PrintPerfStatistic(perf_results); + ASSERT_EQ(count, out[0]); +} diff --git a/tasks/seq/example_disabled/src/ops_seq.cpp b/tasks/seq/example_disabled/src/ops_seq.cpp new file mode 100644 index 000000000..436f7b200 --- /dev/null +++ b/tasks/seq/example_disabled/src/ops_seq.cpp @@ -0,0 +1,27 @@ +#include "seq/example/include/ops_seq.hpp" + +#include + +bool nesterov_a_test_task_seq::TestTaskSequential::PreProcessingImpl() { + // Init value for input and output + input_ = reinterpret_cast(task_data->inputs[0])[0]; + res_ = 0; + return true; +} + +bool nesterov_a_test_task_seq::TestTaskSequential::ValidationImpl() { + // Check count elements of output + return task_data->inputs_count[0] == 1 && task_data->outputs_count[0] == 1; +} + +bool nesterov_a_test_task_seq::TestTaskSequential::RunImpl() { + for (int i = 0; i < input_; i++) { + res_++; + } + return true; +} + +bool nesterov_a_test_task_seq::TestTaskSequential::PostProcessingImpl() { + reinterpret_cast(task_data->outputs[0])[0] = res_; + return true; +}