|
5 | 5 |
|
6 | 6 | #include <uur/fixtures.h> |
7 | 7 |
|
| 8 | +#include <array> |
| 9 | + |
8 | 10 | struct urKernelSuggestMaxCooperativeGroupCountTest |
9 | 11 | : uur::urKernelExecutionTest { |
10 | 12 | void SetUp() override { |
@@ -36,6 +38,36 @@ TEST_P(urKernelSuggestMaxCooperativeGroupCountTest, Success) { |
36 | 38 | ASSERT_GE(suggested_work_groups, 0); |
37 | 39 | } |
38 | 40 |
|
| 41 | +TEST_P(urKernelSuggestMaxCooperativeGroupCountTest, DynamicSharedMemory) { |
| 42 | + uint64_t local_memory_size = 0; |
| 43 | + ASSERT_SUCCESS(urDeviceGetInfo(device, UR_DEVICE_INFO_LOCAL_MEM_SIZE, |
| 44 | + sizeof(local_memory_size), &local_memory_size, |
| 45 | + nullptr)); |
| 46 | + uint32_t compute_unit_count = 0; |
| 47 | + ASSERT_SUCCESS(urDeviceGetInfo(device, UR_DEVICE_INFO_NUM_COMPUTE_UNITS, |
| 48 | + sizeof(compute_unit_count), |
| 49 | + &compute_unit_count, nullptr)); |
| 50 | + |
| 51 | + ASSERT_SUCCESS(urKernelSuggestMaxCooperativeGroupCount( |
| 52 | + kernel, device, n_dimensions, &local_size, 0, &suggested_work_groups)); |
| 53 | + |
| 54 | + // Check that increasing the dynamic shared memory size reduces |
| 55 | + // the number of suggested work groups. |
| 56 | + constexpr std::array<uint32_t, 4> divs = {8, 4, 2, 1}; |
| 57 | + uint32_t previous_suggested_work_groups = suggested_work_groups; |
| 58 | + for (const uint32_t i : divs) { |
| 59 | + const size_t dynamic_shared_memory_size = local_memory_size / i; |
| 60 | + ASSERT_SUCCESS(urKernelSuggestMaxCooperativeGroupCount( |
| 61 | + kernel, device, n_dimensions, &local_size, dynamic_shared_memory_size, |
| 62 | + &suggested_work_groups)); |
| 63 | + |
| 64 | + ASSERT_LE(suggested_work_groups, previous_suggested_work_groups); |
| 65 | + ASSERT_LE((uint64_t)suggested_work_groups, |
| 66 | + (uint64_t)(compute_unit_count)*i); |
| 67 | + previous_suggested_work_groups = suggested_work_groups; |
| 68 | + } |
| 69 | +} |
| 70 | + |
39 | 71 | TEST_P(urKernelSuggestMaxCooperativeGroupCountTest, InvalidNullHandleKernel) { |
40 | 72 | ASSERT_EQ_RESULT(urKernelSuggestMaxCooperativeGroupCount( |
41 | 73 | nullptr, device, n_dimensions, &local_size, 0, |
|
0 commit comments