#include #include #include #include "fill-random-kernel-tester.hpp" using gptoss::FillRandomKernelTester; constexpr std::size_t kThreadgroupSize = 128; TEST(U32_FILL_RANDOM, single_threadgroup_single_iteration) { FillRandomKernelTester() .num_elements(kThreadgroupSize) .threadgroup_size(kThreadgroupSize) .max_threadgroups(1) .TestU32(); } TEST(U32_FILL_RANDOM, single_threadgroup_multiple_iterations) { constexpr std::size_t num_iterations = 3; FillRandomKernelTester() .num_elements(num_iterations * kThreadgroupSize) .threadgroup_size(kThreadgroupSize) .max_threadgroups(1) .TestU32(); } TEST(U32_FILL_RANDOM, multiple_threadgroups_multiple_iterations) { constexpr std::size_t num_iterations = 3; constexpr std::size_t num_threadgroups = 2; FillRandomKernelTester() .num_elements(num_iterations * num_threadgroups * kThreadgroupSize) .threadgroup_size(kThreadgroupSize) .max_threadgroups(num_threadgroups) .TestU32(); } TEST(U32_FILL_RANDOM, excessive_threadgroups) { FillRandomKernelTester() .num_elements(kThreadgroupSize) .threadgroup_size(kThreadgroupSize) .max_threadgroups(2) .TestU32(); } TEST(U32_FILL_RANDOM, nonuniform_range) { constexpr std::size_t num_iterations = 3; constexpr std::size_t num_threadgroups = 2; FillRandomKernelTester() .num_elements((num_iterations * num_threadgroups + 1) * kThreadgroupSize) .threadgroup_size(kThreadgroupSize) .max_threadgroups(num_threadgroups) .TestU32(); } TEST(U32_FILL_RANDOM, partial_range) { constexpr std::size_t num_iterations = 3; constexpr std::size_t num_threadgroups = 2; FillRandomKernelTester() .num_elements(num_iterations * num_threadgroups * kThreadgroupSize + 1) .threadgroup_size(kThreadgroupSize) .max_threadgroups(num_threadgroups) .TestU32(); }