Skip to content

Commit b068967

Browse files
committed
add revert list
1 parent 1726bb5 commit b068967

File tree

9 files changed

+298
-3
lines changed

9 files changed

+298
-3
lines changed

.github/workflows/main.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ jobs:
6565
env:
6666
CC: gcc-14
6767
CXX: g++-14
68+
- name: Archive revert list
69+
uses: actions/[email protected]
70+
with:
71+
name: revert-list
72+
path: build/revert-list.txt
6873
- name: Build project
6974
run: |
7075
cmake --build build --parallel

tasks/CMakeLists.txt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ foreach(TASK_TYPE ${LIST_OF_TASKS})
5050
SUBDIRLIST(subdirs ${PATH_TO_TASK})
5151
foreach(subd ${subdirs})
5252
if ("${subd}" MATCHES "_disabled$")
53-
message(WARNING " -- SKIPPED func and perf tests for ${PATH_TO_TASK}/${subd}")
53+
get_filename_component(DIR_NAME ${PATH_TO_TASK} NAME)
54+
list(APPEND LIST_OF_REVERTS "${DIR_NAME}_${subd}")
5455
continue()
5556
endif()
5657
get_filename_component(PROJECT_ID ${subd} NAME)
@@ -176,3 +177,11 @@ foreach(TASK_TYPE ${LIST_OF_TASKS})
176177
set(FUNC_TESTS_SOURCE_FILES "")
177178
set(PERF_TESTS_SOURCE_FILES "")
178179
endforeach()
180+
181+
set(OUTPUT_FILE "${CMAKE_BINARY_DIR}/revert-list.txt")
182+
file(WRITE ${OUTPUT_FILE} "${CONTENT}")
183+
message(STATUS "revert list")
184+
foreach (dir_name ${LIST_OF_REVERTS})
185+
message(STATUS "-- ${dir_name}")
186+
file(APPEND ${OUTPUT_FILE} "${dir_name}\n")
187+
endforeach()

tasks/all/example/perf_tests/perf_omp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
#include <boost/mpi/communicator.hpp>
55
#include <vector>
66

7-
#include "core/perf/include/perf.hpp"
87
#include "all/example/include/ops_omp.hpp"
8+
#include "core/perf/include/perf.hpp"
99

1010
TEST(all_example_perf_test, test_pipeline_run) {
1111
const int count = 100;

tasks/all/example/perf_tests/perf_tbb.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
#include <boost/mpi/communicator.hpp>
55
#include <vector>
66

7-
#include "core/perf/include/perf.hpp"
87
#include "all/example/include/ops_tbb.hpp"
8+
#include "core/perf/include/perf.hpp"
99

1010
TEST(all_example_perf_test, test_task_run) {
1111
const int count = 100;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
100
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
#include <gtest/gtest.h>
2+
3+
#include <fstream>
4+
#include <vector>
5+
6+
#include "seq/example/include/ops_seq.hpp"
7+
8+
TEST(Sequential, Test_Sum_10) {
9+
const int count = 10;
10+
11+
// Create data
12+
std::vector<int> in(1, count);
13+
std::vector<int> out(1, 0);
14+
15+
// Create task_data
16+
auto task_data_seq = std::make_shared<ppc::core::TaskData>();
17+
task_data_seq->inputs.emplace_back(reinterpret_cast<uint8_t *>(in.data()));
18+
task_data_seq->inputs_count.emplace_back(in.size());
19+
task_data_seq->outputs.emplace_back(reinterpret_cast<uint8_t *>(out.data()));
20+
task_data_seq->outputs_count.emplace_back(out.size());
21+
22+
// Create Task
23+
nesterov_a_test_task_seq::TestTaskSequential test_task_sequential(task_data_seq);
24+
ASSERT_EQ(test_task_sequential.Validation(), true);
25+
test_task_sequential.PreProcessing();
26+
test_task_sequential.Run();
27+
test_task_sequential.PostProcessing();
28+
ASSERT_EQ(count, out[0]);
29+
}
30+
31+
TEST(Sequential, Test_Sum_20) {
32+
const int count = 20;
33+
34+
// Create data
35+
std::vector<int> in(1, count);
36+
std::vector<int> out(1, 0);
37+
38+
// Create task_data
39+
auto task_data_seq = std::make_shared<ppc::core::TaskData>();
40+
task_data_seq->inputs.emplace_back(reinterpret_cast<uint8_t *>(in.data()));
41+
task_data_seq->inputs_count.emplace_back(in.size());
42+
task_data_seq->outputs.emplace_back(reinterpret_cast<uint8_t *>(out.data()));
43+
task_data_seq->outputs_count.emplace_back(out.size());
44+
45+
// Create Task
46+
nesterov_a_test_task_seq::TestTaskSequential test_task_sequential(task_data_seq);
47+
ASSERT_EQ(test_task_sequential.Validation(), true);
48+
test_task_sequential.PreProcessing();
49+
test_task_sequential.Run();
50+
test_task_sequential.PostProcessing();
51+
ASSERT_EQ(count, out[0]);
52+
}
53+
54+
TEST(Sequential, Test_Sum_50) {
55+
const int count = 50;
56+
57+
// Create data
58+
std::vector<int> in(1, count);
59+
std::vector<int> out(1, 0);
60+
61+
// Create task_data
62+
auto task_data_seq = std::make_shared<ppc::core::TaskData>();
63+
task_data_seq->inputs.emplace_back(reinterpret_cast<uint8_t *>(in.data()));
64+
task_data_seq->inputs_count.emplace_back(in.size());
65+
task_data_seq->outputs.emplace_back(reinterpret_cast<uint8_t *>(out.data()));
66+
task_data_seq->outputs_count.emplace_back(out.size());
67+
68+
// Create Task
69+
nesterov_a_test_task_seq::TestTaskSequential test_task_sequential(task_data_seq);
70+
ASSERT_EQ(test_task_sequential.Validation(), true);
71+
test_task_sequential.PreProcessing();
72+
test_task_sequential.Run();
73+
test_task_sequential.PostProcessing();
74+
ASSERT_EQ(count, out[0]);
75+
}
76+
77+
TEST(Sequential, Test_Sum_70) {
78+
const int count = 70;
79+
80+
// Create data
81+
std::vector<int> in(1, count);
82+
std::vector<int> out(1, 0);
83+
84+
// Create task_data
85+
auto task_data_seq = std::make_shared<ppc::core::TaskData>();
86+
task_data_seq->inputs.emplace_back(reinterpret_cast<uint8_t *>(in.data()));
87+
task_data_seq->inputs_count.emplace_back(in.size());
88+
task_data_seq->outputs.emplace_back(reinterpret_cast<uint8_t *>(out.data()));
89+
task_data_seq->outputs_count.emplace_back(out.size());
90+
91+
// Create Task
92+
nesterov_a_test_task_seq::TestTaskSequential test_task_sequential(task_data_seq);
93+
ASSERT_EQ(test_task_sequential.Validation(), true);
94+
test_task_sequential.PreProcessing();
95+
test_task_sequential.Run();
96+
test_task_sequential.PostProcessing();
97+
ASSERT_EQ(count, out[0]);
98+
}
99+
100+
TEST(Sequential, Test_Sum_100) {
101+
const int count = 100;
102+
103+
// Create data
104+
std::vector<int> in(1, count);
105+
std::vector<int> out(1, 0);
106+
107+
// Create task_data
108+
auto task_data_seq = std::make_shared<ppc::core::TaskData>();
109+
task_data_seq->inputs.emplace_back(reinterpret_cast<uint8_t *>(in.data()));
110+
task_data_seq->inputs_count.emplace_back(in.size());
111+
task_data_seq->outputs.emplace_back(reinterpret_cast<uint8_t *>(out.data()));
112+
task_data_seq->outputs_count.emplace_back(out.size());
113+
114+
// Create Task
115+
nesterov_a_test_task_seq::TestTaskSequential test_task_sequential(task_data_seq);
116+
ASSERT_EQ(test_task_sequential.Validation(), true);
117+
test_task_sequential.PreProcessing();
118+
test_task_sequential.Run();
119+
test_task_sequential.PostProcessing();
120+
ASSERT_EQ(count, out[0]);
121+
}
122+
123+
TEST(Sequential, Test_Sum_100_From_File) {
124+
std::string line;
125+
std::ifstream test_file(ppc::core::GetAbsolutePath("seq/example/data/test.txt"));
126+
if (test_file.is_open()) {
127+
getline(test_file, line);
128+
}
129+
test_file.close();
130+
131+
const int count = std::stoi(line);
132+
133+
// Create data
134+
std::vector<int> in(1, count);
135+
std::vector<int> out(1, 0);
136+
137+
// Create task_data
138+
auto task_data_seq = std::make_shared<ppc::core::TaskData>();
139+
task_data_seq->inputs.emplace_back(reinterpret_cast<uint8_t *>(in.data()));
140+
task_data_seq->inputs_count.emplace_back(in.size());
141+
task_data_seq->outputs.emplace_back(reinterpret_cast<uint8_t *>(out.data()));
142+
task_data_seq->outputs_count.emplace_back(out.size());
143+
144+
// Create Task
145+
nesterov_a_test_task_seq::TestTaskSequential test_task_sequential(task_data_seq);
146+
ASSERT_EQ(test_task_sequential.Validation(), true);
147+
test_task_sequential.PreProcessing();
148+
test_task_sequential.Run();
149+
test_task_sequential.PostProcessing();
150+
ASSERT_EQ(count, out[0]);
151+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#pragma once
2+
3+
#include <string>
4+
#include <vector>
5+
6+
#include "core/task/include/task.hpp"
7+
8+
namespace nesterov_a_test_task_seq {
9+
10+
class TestTaskSequential : public ppc::core::Task {
11+
public:
12+
explicit TestTaskSequential(ppc::core::TaskDataPtr task_data) : Task(std::move(task_data)) {}
13+
bool PreProcessingImpl() override;
14+
bool ValidationImpl() override;
15+
bool RunImpl() override;
16+
bool PostProcessingImpl() override;
17+
18+
private:
19+
int input_{}, res_{};
20+
};
21+
22+
} // namespace nesterov_a_test_task_seq
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
#include <gtest/gtest.h>
2+
3+
#include <vector>
4+
5+
#include "core/perf/include/perf.hpp"
6+
#include "seq/example/include/ops_seq.hpp"
7+
8+
TEST(sequential_example_perf_test, test_pipeline_run) {
9+
const int count = 100;
10+
11+
// Create data
12+
std::vector<int> in(1, count);
13+
std::vector<int> out(1, 0);
14+
15+
// Create task_data
16+
auto task_data_seq = std::make_shared<ppc::core::TaskData>();
17+
task_data_seq->inputs.emplace_back(reinterpret_cast<uint8_t *>(in.data()));
18+
task_data_seq->inputs_count.emplace_back(in.size());
19+
task_data_seq->outputs.emplace_back(reinterpret_cast<uint8_t *>(out.data()));
20+
task_data_seq->outputs_count.emplace_back(out.size());
21+
22+
// Create Task
23+
auto test_task_sequential = std::make_shared<nesterov_a_test_task_seq::TestTaskSequential>(task_data_seq);
24+
25+
// Create Perf attributes
26+
auto perf_attr = std::make_shared<ppc::core::PerfAttr>();
27+
perf_attr->num_running = 10;
28+
const auto t0 = std::chrono::high_resolution_clock::now();
29+
perf_attr->current_timer = [&] {
30+
auto current_time_point = std::chrono::high_resolution_clock::now();
31+
auto duration = std::chrono::duration_cast<std::chrono::nanoseconds>(current_time_point - t0).count();
32+
return static_cast<double>(duration) * 1e-9;
33+
};
34+
35+
// Create and init perf results
36+
auto perf_results = std::make_shared<ppc::core::PerfResults>();
37+
38+
// Create Perf analyzer
39+
auto perf_analyzer = std::make_shared<ppc::core::Perf>(test_task_sequential);
40+
perf_analyzer->PipelineRun(perf_attr, perf_results);
41+
ppc::core::Perf::PrintPerfStatistic(perf_results);
42+
ASSERT_EQ(count, out[0]);
43+
}
44+
45+
TEST(sequential_example_perf_test, test_task_run) {
46+
const int count = 100;
47+
48+
// Create data
49+
std::vector<int> in(1, count);
50+
std::vector<int> out(1, 0);
51+
52+
// Create task_data
53+
auto task_data_seq = std::make_shared<ppc::core::TaskData>();
54+
task_data_seq->inputs.emplace_back(reinterpret_cast<uint8_t *>(in.data()));
55+
task_data_seq->inputs_count.emplace_back(in.size());
56+
task_data_seq->outputs.emplace_back(reinterpret_cast<uint8_t *>(out.data()));
57+
task_data_seq->outputs_count.emplace_back(out.size());
58+
59+
// Create Task
60+
auto test_task_sequential = std::make_shared<nesterov_a_test_task_seq::TestTaskSequential>(task_data_seq);
61+
62+
// Create Perf attributes
63+
auto perf_attr = std::make_shared<ppc::core::PerfAttr>();
64+
perf_attr->num_running = 10;
65+
const auto t0 = std::chrono::high_resolution_clock::now();
66+
perf_attr->current_timer = [&] {
67+
auto current_time_point = std::chrono::high_resolution_clock::now();
68+
auto duration = std::chrono::duration_cast<std::chrono::nanoseconds>(current_time_point - t0).count();
69+
return static_cast<double>(duration) * 1e-9;
70+
};
71+
72+
// Create and init perf results
73+
auto perf_results = std::make_shared<ppc::core::PerfResults>();
74+
75+
// Create Perf analyzer
76+
auto perf_analyzer = std::make_shared<ppc::core::Perf>(test_task_sequential);
77+
perf_analyzer->TaskRun(perf_attr, perf_results);
78+
ppc::core::Perf::PrintPerfStatistic(perf_results);
79+
ASSERT_EQ(count, out[0]);
80+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include "seq/example/include/ops_seq.hpp"
2+
3+
#include <thread>
4+
5+
bool nesterov_a_test_task_seq::TestTaskSequential::PreProcessingImpl() {
6+
// Init value for input and output
7+
input_ = reinterpret_cast<int*>(task_data->inputs[0])[0];
8+
res_ = 0;
9+
return true;
10+
}
11+
12+
bool nesterov_a_test_task_seq::TestTaskSequential::ValidationImpl() {
13+
// Check count elements of output
14+
return task_data->inputs_count[0] == 1 && task_data->outputs_count[0] == 1;
15+
}
16+
17+
bool nesterov_a_test_task_seq::TestTaskSequential::RunImpl() {
18+
for (int i = 0; i < input_; i++) {
19+
res_++;
20+
}
21+
return true;
22+
}
23+
24+
bool nesterov_a_test_task_seq::TestTaskSequential::PostProcessingImpl() {
25+
reinterpret_cast<int*>(task_data->outputs[0])[0] = res_;
26+
return true;
27+
}

0 commit comments

Comments
 (0)