From 731e7486b5417b1ef7ec57d9eaf497d30b213f40 Mon Sep 17 00:00:00 2001 From: Maciej Plewka Date: Tue, 5 Aug 2025 10:21:50 +0200 Subject: [PATCH 1/3] fix: calculate correct timestamp mask in case timestamp bitsequal size of timestamp type Signed-off-by: Maciej Plewka --- perf_tests/ze_peak/src/ze_peak.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/perf_tests/ze_peak/src/ze_peak.cpp b/perf_tests/ze_peak/src/ze_peak.cpp index 3648d5792..663109499 100644 --- a/perf_tests/ze_peak/src/ze_peak.cpp +++ b/perf_tests/ze_peak/src/ze_peak.cpp @@ -120,6 +120,15 @@ static void generic_uuid_to_string(const uint8_t *id, int bytes, char *s) { *s = '\0'; } +template +static void calculate_timestamp_mask(T ×tamp_mask, uint32_t timestamp_bits) { + if (timestamp_bits >= sizeof(T) * CHAR_BIT) { + timestamp_mask = std::numeric_limits::max(); + } else { + timestamp_mask = (1ULL << timestamp_bits) - 1; + } +} + //--------------------------------------------------------------------- // Utility function to print the device properties from zeDeviceGetProperties. //--------------------------------------------------------------------- @@ -1303,7 +1312,8 @@ long double ZePeak::run_kernel(L0Context context, ze_kernel_handle_t &function, } // don't know if this is correct. seems a little odd. - uint64_t timestamp_mask = (1ull << timestamp_bits) - 1; + uint64_t timestamp_mask = 0; + calculate_timestamp_mask(timestamp_mask, timestamp_bits); uint64_t masked_device_time = device_timestamp & timestamp_mask; uint64_t masked_kernel_time = kernel_timestamp.global.kernelStart & timestamp_mask; @@ -1485,7 +1495,8 @@ long double ZePeak::run_kernel(L0Context context, ze_kernel_handle_t &function, std::to_string(result)); } - uint64_t timestamp_mask = (1ull << timestamp_bits) - 1; + uint64_t timestamp_mask = 0; + calculate_timestamp_mask(timestamp_mask, timestamp_bits); uint64_t masked_device_time = device_timestamp & timestamp_mask; uint64_t masked_kernel_time = kernel_timestamp.global.kernelStart & timestamp_mask; From edfdc8f08274369fb8eca14e14ef3a1c53332df6 Mon Sep 17 00:00:00 2001 From: Maciej Plewka Date: Tue, 5 Aug 2025 10:23:01 +0200 Subject: [PATCH 2/3] fix: calculate correct timestamp mask in case timestamp bits equal size of timestamp type Signed-off-by: Maciej Plewka From cbb98b839ad14b6b140cd1603c1b2b3429960cdd Mon Sep 17 00:00:00 2001 From: Maciej Plewka Date: Wed, 13 Aug 2025 13:29:57 +0200 Subject: [PATCH 3/3] fix: calculate correct timestamp mask in case timestamp bitsequal size of timestamp type Signed-off-by: Maciej Plewka --- perf_tests/ze_peak/src/ze_peak.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/perf_tests/ze_peak/src/ze_peak.cpp b/perf_tests/ze_peak/src/ze_peak.cpp index 663109499..f099384b5 100644 --- a/perf_tests/ze_peak/src/ze_peak.cpp +++ b/perf_tests/ze_peak/src/ze_peak.cpp @@ -121,7 +121,8 @@ static void generic_uuid_to_string(const uint8_t *id, int bytes, char *s) { } template -static void calculate_timestamp_mask(T ×tamp_mask, uint32_t timestamp_bits) { +static void calculate_timestamp_mask(T ×tamp_mask, + uint32_t timestamp_bits) { if (timestamp_bits >= sizeof(T) * CHAR_BIT) { timestamp_mask = std::numeric_limits::max(); } else {