Browse Source

fix chunk indexing in scanb and refactor result calculation

master
Constantin Fürst 11 months ago
parent
commit
5e8f3e05e3
  1. 12
      qdp_project/src/Benchmark.cpp

12
qdp_project/src/Benchmark.cpp

@ -15,7 +15,7 @@
#include "../../offloading-cacher/cache.hpp" #include "../../offloading-cacher/cache.hpp"
#ifndef MODE_SET_BY_CMAKE #ifndef MODE_SET_BY_CMAKE
#define MODE_COMPLEX_PREFETCH
#define MODE_COMPLEX_HBM
#endif #endif
#include "Configuration.hpp" #include "Configuration.hpp"
@ -64,8 +64,8 @@ void scan_b(size_t gid, size_t tid) {
if constexpr (COMPLEX_QUERY) { if constexpr (COMPLEX_QUERY) {
for (size_t i = 0; i < RUN_COUNT; i++) { for (size_t i = 0; i < RUN_COUNT; i++) {
const size_t chunk_index = get_chunk_index(gid, i); const size_t chunk_index = get_chunk_index(gid, i);
uint64_t* chunk_ptr = get_chunk<TC_SCANB>(DATA_B_, chunk_index, i);
uint16_t* mask_ptr = get_mask<TC_SCANB>(MASK_B_, chunk_index, i);
uint64_t* chunk_ptr = get_chunk<TC_SCANB>(DATA_B_, chunk_index, tid);
uint16_t* mask_ptr = get_mask<TC_SCANB>(MASK_B_, chunk_index, tid);
filter::apply_same(mask_ptr, nullptr, chunk_ptr, CMP_B, CHUNK_SIZE_B / TC_SCANB); filter::apply_same(mask_ptr, nullptr, chunk_ptr, CMP_B, CHUNK_SIZE_B / TC_SCANB);
} }
@ -154,7 +154,7 @@ void aggr_j(size_t gid, size_t tid) {
BARRIERS_[gid]->arrive_and_drop(); BARRIERS_[gid]->arrive_and_drop();
aggregation::happly(DATA_DST_ + (tid * GROUP_COUNT + gid), aggregator);
aggregation::happly(&DATA_DST_[gid + tid], aggregator);
} }
int main() { int main() {
@ -233,11 +233,11 @@ int main() {
for(std::thread& t : copy_pool) { t.join(); } for(std::thread& t : copy_pool) { t.join(); }
for(std::thread& t : agg_pool) { t.join(); } for(std::thread& t : agg_pool) { t.join(); }
Aggregation<uint64_t, Sum, load_mode::Aligned>::apply(DATA_DST_, DATA_DST_, sizeof(uint64_t) * TC_AGGRJ * GROUP_COUNT);
uint64_t result_actual = 0;
Aggregation<uint64_t, Sum, load_mode::Aligned>::apply(&result_actual, DATA_DST_, sizeof(uint64_t) * TC_AGGRJ * GROUP_COUNT);
const auto time_end = std::chrono::steady_clock::now(); const auto time_end = std::chrono::steady_clock::now();
const uint64_t result_actual = DATA_DST_[0];
const uint64_t result_expected = COMPLEX_QUERY ? sum_check_complex(CMP_A, CMP_B, DATA_A_, DATA_B_, WL_SIZE_B) : sum_check(CMP_A, DATA_A_, DATA_B_, WL_SIZE_B); const uint64_t result_expected = COMPLEX_QUERY ? sum_check_complex(CMP_A, CMP_B, DATA_A_, DATA_B_, WL_SIZE_B) : sum_check(CMP_A, DATA_A_, DATA_B_, WL_SIZE_B);
std::cout << "Result Expected: " << result_expected << ", Result Actual: " << result_actual << std::endl; std::cout << "Result Expected: " << result_expected << ", Result Actual: " << result_actual << std::endl;

Loading…
Cancel
Save