|
@ -19,7 +19,7 @@ |
|
|
|
|
|
|
|
|
#include "BenchmarkHelpers.cpp"
|
|
|
#include "BenchmarkHelpers.cpp"
|
|
|
|
|
|
|
|
|
#define MODE_PREFETCH
|
|
|
|
|
|
|
|
|
#define MODE_HBM
|
|
|
|
|
|
|
|
|
////////////////////////////////
|
|
|
////////////////////////////////
|
|
|
/// BENCHMARK SETUP
|
|
|
/// BENCHMARK SETUP
|
|
@ -29,7 +29,7 @@ constexpr uint32_t WARMUP_ITERATION_COUNT = 5; |
|
|
constexpr uint32_t ITERATION_COUNT = 5; |
|
|
constexpr uint32_t ITERATION_COUNT = 5; |
|
|
|
|
|
|
|
|
#ifdef MODE_PREFETCH
|
|
|
#ifdef MODE_PREFETCH
|
|
|
constexpr size_t CHUNK_SIZE_B = 64_MiB; |
|
|
|
|
|
|
|
|
constexpr size_t CHUNK_SIZE_B = 128_MiB; |
|
|
constexpr uint32_t GROUP_COUNT = 32; |
|
|
constexpr uint32_t GROUP_COUNT = 32; |
|
|
constexpr uint32_t TC_SCANA = 1; |
|
|
constexpr uint32_t TC_SCANA = 1; |
|
|
constexpr uint32_t TC_SCANB = 1; |
|
|
constexpr uint32_t TC_SCANB = 1; |
|
@ -73,7 +73,6 @@ constexpr size_t MASK_STEP_SIZE = CHUNK_SIZE_ELEMENTS / MASK_ELEMENT_SIZE; |
|
|
|
|
|
|
|
|
static_assert(RUN_COUNT > 0); |
|
|
static_assert(RUN_COUNT > 0); |
|
|
static_assert(TC_SCANB <= TC_AGGRJ); |
|
|
static_assert(TC_SCANB <= TC_AGGRJ); |
|
|
static_assert(TC_AGGRJ % TC_SCANB == 0); |
|
|
|
|
|
static_assert(WL_SIZE_B % 16 == 0); |
|
|
static_assert(WL_SIZE_B % 16 == 0); |
|
|
static_assert(CHUNK_SIZE_B % 16 == 0); |
|
|
static_assert(CHUNK_SIZE_B % 16 == 0); |
|
|
|
|
|
|
|
@ -108,7 +107,7 @@ inline uint16_t* get_mask(uint16_t* base, const size_t chunk_index, const size_t |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void scan_b(size_t gid, size_t tid) { |
|
|
void scan_b(size_t gid, size_t tid) { |
|
|
constexpr size_t split = TC_AGGRJ / TC_SCANB; |
|
|
|
|
|
|
|
|
constexpr size_t split = TC_AGGRJ / (TC_SCANB == 0 ? 1 : TC_SCANB); |
|
|
const size_t start = tid * split; |
|
|
const size_t start = tid * split; |
|
|
const size_t end = start + split; |
|
|
const size_t end = start + split; |
|
|
|
|
|
|
|
|