From e983e617544d3a7e187a37542446a3931bcad497 Mon Sep 17 00:00:00 2001 From: Julian Lenz Date: Mon, 6 Jan 2025 11:46:28 +0100 Subject: [PATCH 1/2] Fix tests --- test/source/kitgenbench.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/test/source/kitgenbench.cpp b/test/source/kitgenbench.cpp index a99b322..2fb0ea0 100644 --- a/test/source/kitgenbench.cpp +++ b/test/source/kitgenbench.cpp @@ -44,9 +44,9 @@ namespace setups { typename TLogger = kitgenbench::setup::NoLogger, typename TChecker = kitgenbench::setup::NoChecker> struct InstructionDetails { - Aggregate recipes{}; - Aggregate loggers{}; - Aggregate checkers{}; + Aggregate recipes{}; + Aggregate loggers{}; + Aggregate checkers{}; auto sendTo([[maybe_unused]] auto const& device, [[maybe_unused]] auto& queue) { // This is not exactly how it's supposed to be used (or at least it's not necessary). You @@ -121,15 +121,18 @@ TEST_CASE("Single size malloc") { namespace setups::mallocFreeManySize { + std::vector ALLOCATION_SIZES + = {16U, 256U, 1024U, 16U, 16U, 256U, 16U, 1024U, 1024U}; struct MallocFreeRecipe { - std::vector sizes{}; + std::vector sizes{ALLOCATION_SIZES}; std::uint32_t currentIndex{0U}; void* currentPointer{nullptr}; ALPAKA_FN_ACC auto next([[maybe_unused]] const auto& acc) { - if (currentIndex >= sizes.size()) + if (currentIndex >= sizes.size()) { return std::make_tuple(kitgenbench::Actions::STOP, std::span{static_cast(nullptr), 0U}); + } if (currentPointer == nullptr) { currentPointer = malloc(sizes[currentIndex]); @@ -150,8 +153,6 @@ namespace setups::mallocFreeManySize { nlohmann::json generateReport() { return {}; } }; - std::vector ALLOCATION_SIZES - = {16U, 256U, 1024U, 16U, 16U, 256U, 16U, 1024U, 1024U}; auto makeInstructionDetails() { return InstructionDetails{}; } namespace detail { From d41a087da196a0a940e2a8a9356dc6bbad82c766 Mon Sep 17 00:00:00 2001 From: Julian Lenz Date: Mon, 6 Jan 2025 12:53:37 +0100 Subject: [PATCH 2/2] Make it run on cuda --- test/source/kitgenbench.cpp | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/test/source/kitgenbench.cpp b/test/source/kitgenbench.cpp index 2fb0ea0..2239782 100644 --- a/test/source/kitgenbench.cpp +++ b/test/source/kitgenbench.cpp @@ -5,6 +5,7 @@ #include #include +#include #include #include "nlohmann/json.hpp" @@ -121,10 +122,8 @@ TEST_CASE("Single size malloc") { namespace setups::mallocFreeManySize { - std::vector ALLOCATION_SIZES - = {16U, 256U, 1024U, 16U, 16U, 256U, 16U, 1024U, 1024U}; struct MallocFreeRecipe { - std::vector sizes{ALLOCATION_SIZES}; + const std::array sizes{16U, 256U, 1024U, 16U, 16U, 256U, 16U, 1024U, 1024U}; std::uint32_t currentIndex{0U}; void* currentPointer{nullptr}; @@ -155,29 +154,17 @@ namespace setups::mallocFreeManySize { auto makeInstructionDetails() { return InstructionDetails{}; } - namespace detail { - template T unique(T const& values) { - // It's a pity but the following are algorithms and not "adaptors", so the pipe operator - // doesn't work. - T tmp = values; - std::ranges::sort(tmp); - const auto [new_end, old_end] = std::ranges::unique(tmp); - return {std::begin(tmp), new_end}; - } - } // namespace detail - auto composeSetup() { return composeSetup("mallocFreeManySize", makeExecutionDetails(), makeInstructionDetails(), {{"what it does", "This setup runs through a given vector of allocation sizes, allocating " "and deallocating each size one after another."}, - {"number of allocations", ALLOCATION_SIZES.size()}, - {"available allocation sizes [bytes]", detail::unique(ALLOCATION_SIZES)}}); + {"number of allocations", MallocFreeRecipe{}.sizes.size()}}); } } // namespace setups::mallocFreeManySize TEST_CASE("Malloc free many size") { auto setup = setups::mallocFreeManySize::composeSetup(); - auto benchmarkReports = runBenchmarks(setup); + auto benchmarkReports = kitgenbench::runBenchmarks(setup); }