gpt-oss-metal-kernels / test /u32-random.cc
Mohamed Mekkouri
commit evtn
95d28ad
#include <gtest/gtest.h>
#include <cstddef>
#include <cstdint>
#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();
}