HW2: (WIP) Checkpoint with code re-arrangement and elbowSort

This commit is contained in:
2024-12-30 14:23:13 +02:00
parent 1d6b271d2a
commit 4d1d7502aa
11 changed files with 545 additions and 1193 deletions
+27 -24
View File
@@ -11,7 +11,7 @@
#include <algorithm> // rand/srand
#include <ctime> // rand/srand
#include "distbitonic.hpp"
#include "distsort.hpp"
@@ -245,8 +245,8 @@ TEST(TdistBitonic_UT, keepsmall_test1) {
*/
TEST(TdistBitonic_UT, keepsmall_test2) {
size_t ts_depth = 1;
mpi_id_t ts_partner[] = {1, 0, 3, 2, 5, 4, 7, 6};
bool ts_expected[] = {1, 0, 0, 1, 1, 0, 0, 1};
mpi_id_t ts_partner[] = {1, 0, 3, 2, 5, 4, 7, 6};
bool ts_expected[] = {1, 0, 0, 1, 1, 0, 0, 1};
for (mpi_id_t node = 0 ; node < 8 ; ++node ) {
EXPECT_EQ(ts_expected[node], keepSmall<SortMode::Bitonic>(node, ts_partner[node], ts_depth));
@@ -260,8 +260,8 @@ TEST(TdistBitonic_UT, keepsmall_test2) {
*/
TEST(TdistBitonic_UT, keepsmall_test3) {
size_t ts_depth = 2;
mpi_id_t ts_partner[] = {2, 3, 0, 1, 6, 7, 4, 5};
bool ts_expected[] = {1, 1, 0, 0, 0, 0, 1, 1};
mpi_id_t ts_partner[] = {2, 3, 0, 1, 6, 7, 4, 5};
bool ts_expected[] = {1, 1, 0, 0, 0, 0, 1, 1};
for (mpi_id_t node = 0 ; node < 8 ; ++node ) {
EXPECT_EQ(ts_expected[node], keepSmall<SortMode::Bitonic>(node, ts_partner[node], ts_depth));
@@ -275,8 +275,8 @@ TEST(TdistBitonic_UT, keepsmall_test3) {
*/
TEST(TdistBitonic_UT, keepsmall_test4) {
size_t ts_depth = 2;
mpi_id_t ts_partner[] = {1, 0, 3, 2, 5, 4, 7, 6};
bool ts_expected[] = {1, 0, 1, 0, 0, 1, 0, 1};
mpi_id_t ts_partner[] = {1, 0, 3, 2, 5, 4, 7, 6};
bool ts_expected[] = {1, 0, 1, 0, 0, 1, 0, 1};
for (mpi_id_t node = 0 ; node < 8 ; ++node ) {
EXPECT_EQ(ts_expected[node], keepSmall<SortMode::Bitonic>(node, ts_partner[node], ts_depth));
@@ -290,8 +290,8 @@ TEST(TdistBitonic_UT, keepsmall_test4) {
*/
TEST(TdistBitonic_UT, keepsmall_test5) {
size_t ts_depth = 3;
mpi_id_t ts_partner[] = {4, 5, 6, 7, 0, 1, 2, 3};
bool ts_expected[] = {1, 1, 1, 1, 0, 0, 0, 0};
mpi_id_t ts_partner[] = {4, 5, 6, 7, 0, 1, 2, 3};
bool ts_expected[] = {1, 1, 1, 1, 0, 0, 0, 0};
for (mpi_id_t node = 0 ; node < 8 ; ++node ) {
EXPECT_EQ(ts_expected[node], keepSmall<SortMode::Bitonic>(node, ts_partner[node], ts_depth));
@@ -305,8 +305,8 @@ TEST(TdistBitonic_UT, keepsmall_test5) {
*/
TEST(TdistBitonic_UT, keepsmall_test6) {
size_t ts_depth = 3;
mpi_id_t ts_partner[] = {2, 3, 0, 1, 6, 7, 4, 5};
bool ts_expected[] = {1, 1, 0, 0, 1, 1, 0, 0};
mpi_id_t ts_partner[] = {2, 3, 0, 1, 6, 7, 4, 5};
bool ts_expected[] = {1, 1, 0, 0, 1, 1, 0, 0};
for (mpi_id_t node = 0 ; node < 8 ; ++node ) {
EXPECT_EQ(ts_expected[node], keepSmall<SortMode::Bitonic>(node, ts_partner[node], ts_depth));
@@ -320,27 +320,28 @@ TEST(TdistBitonic_UT, keepsmall_test6) {
*/
TEST(TdistBitonic_UT, keepsmall_test7) {
size_t ts_depth = 3;
mpi_id_t ts_partner[] = {1, 0, 3, 2, 5, 4, 7, 6};
bool ts_expected[] = {1, 0, 1, 0, 1, 0, 1, 0};
mpi_id_t ts_partner[] = {1, 0, 3, 2, 5, 4, 7, 6};
bool ts_expected[] = {1, 0, 1, 0, 1, 0, 1, 0};
for (mpi_id_t node = 0 ; node < 8 ; ++node ) {
EXPECT_EQ(ts_expected[node], keepSmall<SortMode::Bitonic>(node, ts_partner[node], ts_depth));
}
}
#if 0
TEST(TdistBitonic_UT, distBitonic_test1) {
AllData_t ts_Data {
Data_t (8), Data_t (8)
ShadowedVec_t (8), ShadowedVec_t (8)
};
std::srand(unsigned(std::time(nullptr)));
for (auto& v : ts_Data) {
(unsigned(std::time(nullptr)));
for (auto
std::srand& v : ts_Data) {
std::generate(v.begin(), v.end(), std::rand);
}
distBitonic(2, ts_Data);
auto max = std::numeric_limits<Data_t::value_type>::min();
auto max = std::numeric_limits<ShadowedVec_t::value_type>::min();
for (auto& v : ts_Data) {
EXPECT_EQ((max <= v[0]), true);
EXPECT_EQ(std::is_sorted(v.begin(), v.end()), true);
@@ -350,7 +351,7 @@ TEST(TdistBitonic_UT, distBitonic_test1) {
TEST(TdistBitonic_UT, distBitonic_test2) {
AllData_t ts_Data {
Data_t (8), Data_t (8), Data_t (8), Data_t (8)
ShadowedVec_t (8), ShadowedVec_t (8), ShadowedVec_t (8), ShadowedVec_t (8)
};
std::srand(unsigned(std::time(nullptr)));
@@ -360,7 +361,7 @@ TEST(TdistBitonic_UT, distBitonic_test2) {
distBitonic(4, ts_Data);
auto max = std::numeric_limits<Data_t::value_type>::min();
auto max = std::numeric_limits<ShadowedVec_t::value_type>::min();
for (auto& v : ts_Data) {
EXPECT_EQ((max <= v[0]), true);
EXPECT_EQ(std::is_sorted(v.begin(), v.end()), true);
@@ -370,8 +371,8 @@ TEST(TdistBitonic_UT, distBitonic_test2) {
TEST(TdistBitonic_UT, distBitonic_test3) {
AllData_t ts_Data {
Data_t (32), Data_t (32), Data_t (32), Data_t (32),
Data_t (32), Data_t (32), Data_t (32), Data_t (32)
ShadowedVec_t (32), ShadowedVec_t (32), ShadowedVec_t (32), ShadowedVec_t (32),
ShadowedVec_t (32), ShadowedVec_t (32), ShadowedVec_t (32), ShadowedVec_t (32)
};
std::srand(unsigned(std::time(nullptr)));
@@ -381,10 +382,12 @@ TEST(TdistBitonic_UT, distBitonic_test3) {
distBitonic(8, ts_Data);
auto max = std::numeric_limits<Data_t::value_type>::min();
auto max = std::numeric_limits<ShadowedVec_t::value_type>::min();
for (auto& v : ts_Data) {
EXPECT_EQ((max <= v[0]), true);
EXPECT_EQ(std::is_sorted(v.begin(), v.end()), true);
max = v.back();
}
}
}
#endif
+10 -9
View File
@@ -11,7 +11,7 @@
#include <algorithm> // rand/srand
#include <ctime> // rand/srand
#include "distbitonic.hpp"
#include "distsort.hpp"
@@ -120,10 +120,10 @@ TEST(TdistBubbletonic_UT, keepsmall_test2) {
}
#if 0
TEST(TdistBubbletonic_UT, distBubbletonic_test1) {
AllData_t ts_Data {
Data_t (8), Data_t (8)
ShadowedVec_t (8), ShadowedVec_t (8)
};
std::srand(unsigned(std::time(nullptr)));
@@ -133,7 +133,7 @@ TEST(TdistBubbletonic_UT, distBubbletonic_test1) {
distBubbletonic(2, ts_Data);
auto max = std::numeric_limits<Data_t::value_type>::min();
auto max = std::numeric_limits<ShadowedVec_t::value_type>::min();
for (auto& v : ts_Data) {
EXPECT_EQ((max <= v[0]), true);
EXPECT_EQ(std::is_sorted(v.begin(), v.end()), true);
@@ -144,7 +144,7 @@ TEST(TdistBubbletonic_UT, distBubbletonic_test1) {
TEST(TdistBubbletonic_UT, distBubbletonic_test2) {
AllData_t ts_Data {
Data_t (8), Data_t (8), Data_t (8), Data_t (8)
ShadowedVec_t (8), ShadowedVec_t (8), ShadowedVec_t (8), ShadowedVec_t (8)
};
std::srand(unsigned(std::time(nullptr)));
@@ -154,7 +154,7 @@ TEST(TdistBubbletonic_UT, distBubbletonic_test2) {
distBubbletonic(4, ts_Data);
auto max = std::numeric_limits<Data_t::value_type>::min();
auto max = std::numeric_limits<ShadowedVec_t::value_type>::min();
for (auto& v : ts_Data) {
EXPECT_EQ((max <= v[0]), true);
EXPECT_EQ(std::is_sorted(v.begin(), v.end()), true);
@@ -164,8 +164,8 @@ TEST(TdistBubbletonic_UT, distBubbletonic_test2) {
TEST(TdistBubbletonic_UT, distBubbletonic_test3) {
AllData_t ts_Data {
Data_t (32), Data_t (32), Data_t (32), Data_t (32),
Data_t (32), Data_t (32), Data_t (32), Data_t (32)
ShadowedVec_t (32), ShadowedVec_t (32), ShadowedVec_t (32), ShadowedVec_t (32),
ShadowedVec_t (32), ShadowedVec_t (32), ShadowedVec_t (32), ShadowedVec_t (32)
};
std::srand(unsigned(std::time(nullptr)));
@@ -175,10 +175,11 @@ TEST(TdistBubbletonic_UT, distBubbletonic_test3) {
distBubbletonic(8, ts_Data);
auto max = std::numeric_limits<Data_t::value_type>::min();
auto max = std::numeric_limits<ShadowedVec_t::value_type>::min();
for (auto& v : ts_Data) {
EXPECT_EQ((max <= v[0]), true);
EXPECT_EQ(std::is_sorted(v.begin(), v.end()), true);
max = v.back();
}
}
#endif