Skip to content

Commit 7945269

Browse files
committed
increase coverage
1 parent f87e207 commit 7945269

6 files changed

Lines changed: 90 additions & 28 deletions

File tree

tasks/all/example/func_tests/main.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,32 @@ TEST_P(NesterovATestTaskAll, MatmulFromPic) {
4343
EXPECT_EQ(in, test_task_all.Get());
4444
}
4545

46+
TEST_P(NesterovATestTaskAll, MatMulUtilFromPic) {
47+
int divider = GetParam();
48+
const int k_count = (width + height) / divider;
49+
50+
std::vector<int> in(k_count * k_count, 0);
51+
for (int i = 0; i < k_count; i++) {
52+
in[(i * k_count) + i] = 1;
53+
}
54+
std::vector<int> out(k_count * k_count, 0);
55+
nesterov_a_test_task_all::MatMul(in, static_cast<int>(k_count), out);
56+
57+
EXPECT_EQ(in, out);
58+
}
59+
60+
TEST_P(NesterovATestTaskAll, MatMulTBBUtilFromPic) {
61+
int divider = GetParam();
62+
const int k_count = (width + height) / divider;
63+
64+
std::vector<int> in(k_count * k_count, 0);
65+
for (int i = 0; i < k_count; i++) {
66+
in[(i * k_count) + i] = 1;
67+
}
68+
std::vector<int> out(k_count * k_count, 0);
69+
nesterov_a_test_task_all::MatMulTBB(in, static_cast<int>(k_count), out);
70+
71+
EXPECT_EQ(in, out);
72+
}
73+
4674
INSTANTIATE_TEST_SUITE_P_NOLINT(PicMatrixTests, NesterovATestTaskAll, ::testing::Values(5, 10));

tasks/all/example/include/ops_all.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77

88
namespace nesterov_a_test_task_all {
99

10+
void MatMul(const std::vector<int> &in_vec, int rc_size, std::vector<int> &out_vec);
11+
void MatMulTBB(const std::vector<int> &in_vec, int rc_size, std::vector<int> &out_vec);
12+
1013
class TestTaskALL : public ppc::core::Task {
1114
public:
12-
explicit TestTaskALL(const std::vector<int>& in) : input_(in) {}
15+
explicit TestTaskALL(const std::vector<int> &in) : input_(in) {}
1316
bool ValidationImpl() override;
1417
bool PreProcessingImpl() override;
1518
bool RunImpl() override;

tasks/all/example/src/ops_all.cpp

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
#include "oneapi/tbb/task_arena.h"
1313
#include "oneapi/tbb/task_group.h"
1414

15-
namespace {
16-
void MatMul(const std::vector<int> &in_vec, int rc_size, std::vector<int> &out_vec) {
15+
void nesterov_a_test_task_all::MatMul(const std::vector<int> &in_vec, int rc_size, std::vector<int> &out_vec) {
1716
for (int i = 0; i < rc_size; ++i) {
1817
for (int j = 0; j < rc_size; ++j) {
1918
out_vec[(i * rc_size) + j] = 0;
@@ -23,7 +22,17 @@ void MatMul(const std::vector<int> &in_vec, int rc_size, std::vector<int> &out_v
2322
}
2423
}
2524
}
26-
} // namespace
25+
26+
void nesterov_a_test_task_all::MatMulTBB(const std::vector<int> &in_vec, int rc_size, std::vector<int> &out_vec) {
27+
oneapi::tbb::task_arena arena(1);
28+
arena.execute([&] {
29+
tbb::task_group tg;
30+
for (int i = 0; i < ppc::util::GetPPCNumThreads(); ++i) {
31+
tg.run([&] { MatMul(in_vec, rc_size, out_vec); });
32+
}
33+
tg.wait();
34+
});
35+
}
2736

2837
bool nesterov_a_test_task_all::TestTaskALL::ValidationImpl() {
2938
auto sqrt_size = static_cast<int>(std::sqrt(input_.size()));
@@ -44,17 +53,10 @@ bool nesterov_a_test_task_all::TestTaskALL::RunImpl() {
4453
#pragma omp parallel default(none)
4554
{
4655
#pragma omp critical
47-
{ MatMul(input_, rc_size_, output_); }
56+
MatMul(input_, rc_size_, output_);
4857
}
4958
} else {
50-
oneapi::tbb::task_arena arena(1);
51-
arena.execute([&] {
52-
tbb::task_group tg;
53-
for (int i = 0; i < ppc::util::GetPPCNumThreads(); ++i) {
54-
tg.run([&] { MatMul(input_, rc_size_, output_); });
55-
}
56-
tg.wait();
57-
});
59+
MatMulTBB(input_, rc_size_, output_);
5860
}
5961

6062
const int num_threads = ppc::util::GetPPCNumThreads();

tasks/mpi/example/func_tests/main.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,32 @@ TEST_P(NesterovATestTaskMPI, MatmulFromFile) {
4343
EXPECT_EQ(in, test_task_mpi.Get());
4444
}
4545

46+
TEST_P(NesterovATestTaskMPI, MultiplyRowMajorUtilTestFromFile) {
47+
const size_t count = GetCount();
48+
49+
std::vector<int> in(count * count, 0);
50+
for (size_t i = 0; i < count; ++i) {
51+
in[(i * count) + i] = 1;
52+
}
53+
54+
std::vector<int> out(count * count, 0);
55+
nesterov_a_test_task_mpi::MultiplyRowMajor(in, out, static_cast<int>(count));
56+
57+
EXPECT_EQ(in, out);
58+
}
59+
60+
TEST_P(NesterovATestTaskMPI, MultiplyColumnMajorUtilTestFromFile) {
61+
const size_t count = GetCount();
62+
63+
std::vector<int> in(count * count, 0);
64+
for (size_t i = 0; i < count; ++i) {
65+
in[(i * count) + i] = 1;
66+
}
67+
68+
std::vector<int> out(count * count, 0);
69+
nesterov_a_test_task_mpi::MultiplyColumnMajor(in, out, static_cast<int>(count));
70+
71+
EXPECT_EQ(in, out);
72+
}
73+
4674
INSTANTIATE_TEST_SUITE_P_NOLINT(FileMatrixTestsMPI, NesterovATestTaskMPI, ::testing::Values(0.5, 1.0));

tasks/mpi/example/include/ops_mpi.hpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77

88
namespace nesterov_a_test_task_mpi {
99

10+
void MultiplyRowMajor(const std::vector<int> &in, std::vector<int> &out, int rc_size);
11+
void MultiplyColumnMajor(const std::vector<int> &in, std::vector<int> &out, int rc_size);
12+
1013
class TestTaskMPI : public ppc::core::Task {
1114
public:
12-
explicit TestTaskMPI(const std::vector<int>& in) : input_(in) {}
15+
explicit TestTaskMPI(const std::vector<int> &in) : input_(in) {}
1316
bool ValidationImpl() override;
1417
bool PreProcessingImpl() override;
1518
bool RunImpl() override;
@@ -21,8 +24,6 @@ class TestTaskMPI : public ppc::core::Task {
2124
int rc_size_{};
2225

2326
void MultiplyMatrixBasedOnRank();
24-
void MultiplyRowMajor();
25-
void MultiplyColumnMajor();
2627
};
2728

2829
} // namespace nesterov_a_test_task_mpi

tasks/mpi/example/src/ops_mpi.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,28 +28,28 @@ void nesterov_a_test_task_mpi::TestTaskMPI::MultiplyMatrixBasedOnRank() {
2828
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
2929

3030
if (rank == 0) {
31-
MultiplyRowMajor();
31+
MultiplyRowMajor(input_, output_, rc_size_);
3232
} else {
33-
MultiplyColumnMajor();
33+
MultiplyColumnMajor(input_, output_, rc_size_);
3434
}
3535
MPI_Barrier(MPI_COMM_WORLD);
3636
}
3737

38-
void nesterov_a_test_task_mpi::TestTaskMPI::MultiplyRowMajor() {
39-
for (int i = 0; i < rc_size_; ++i) {
40-
for (int j = 0; j < rc_size_; ++j) {
41-
for (int k = 0; k < rc_size_; ++k) {
42-
output_[(i * rc_size_) + j] += input_[(i * rc_size_) + k] * input_[(k * rc_size_) + j];
38+
void nesterov_a_test_task_mpi::MultiplyRowMajor(const std::vector<int> &in, std::vector<int> &out, int rc_size) {
39+
for (int i = 0; i < rc_size; ++i) {
40+
for (int j = 0; j < rc_size; ++j) {
41+
for (int k = 0; k < rc_size; ++k) {
42+
out[(i * rc_size) + j] += in[(i * rc_size) + k] * in[(k * rc_size) + j];
4343
}
4444
}
4545
}
4646
}
4747

48-
void nesterov_a_test_task_mpi::TestTaskMPI::MultiplyColumnMajor() {
49-
for (int j = 0; j < rc_size_; ++j) {
50-
for (int k = 0; k < rc_size_; ++k) {
51-
for (int i = 0; i < rc_size_; ++i) {
52-
output_[(i * rc_size_) + j] += input_[(i * rc_size_) + k] * input_[(k * rc_size_) + j];
48+
void nesterov_a_test_task_mpi::MultiplyColumnMajor(const std::vector<int> &in, std::vector<int> &out, int rc_size) {
49+
for (int j = 0; j < rc_size; ++j) {
50+
for (int k = 0; k < rc_size; ++k) {
51+
for (int i = 0; i < rc_size; ++i) {
52+
out[(i * rc_size) + j] += in[(i * rc_size) + k] * in[(k * rc_size) + j];
5353
}
5454
}
5555
}

0 commit comments

Comments
 (0)