Kokkos::Experimental::StaticBatchSize

PR #8164 introduced Kokkos::Experimental::StaticBatchSize. Though the default value of 1 was not intended to impact the generated code, it unintentionally increased the register usage. This performance regression was not caught by any performance test or reviewer, and was only corrected in PR #9123.

This example illustrates how ReProspect could have been used alongside PR #8164 to assert that a unit batch size leaves register usage unchanged, catching the regression before merging. Such a test is demonstrated in examples.kokkos.static_batch_size.example_static_batch_size.TestStaticBatchSize.test_detailed_register_usage().

class examples.kokkos.static_batch_size.example_static_batch_size.TestStaticBatchSizeView on GitHub

Bases: CMakeAwareTestCase

BATCH_SIZES: Final[tuple[int, ...]] = (1, 2)
property cubin: PathView on GitHub
cuobjdump() CuObjDumpView on GitHub
detailed_register_usage(cuobjdump: CuObjDump, nvdisasm: NVDisasm) dict[int, dict[RegisterType, tuple[int, int]]]View on GitHub
classmethod get_target_name() strView on GitHub
nvdisasm(cuobjdump: CuObjDump) NVDisasmView on GitHub
static signature_matcher(*, batch_size: int) Pattern[str]View on GitHub
test_detailed_register_usage(detailed_register_usage: dict[int, dict[RegisterType, tuple[int, int]]]) NoneView on GitHub

Check detailed register usage for each batch size.

Note

Once https://github.com/kokkos/kokkos/pull/9123 is merged, the reprospect.tools.sass.decode.RegisterType.GPR count will decrease for the unit batch size case.