Files
composable_kernel/experimental/builder
Ville Pietilä 3ae3992c18 [CK_BUILDER] Add conv factories for DeviceGroupedConvFwdMultipleABD_Xdl_CShuffle and DeviceGroupedConvFwdMultipleD_Wmma_CShuffle (#3138)
* Add device operation to conv signature. Use unions to hold conv layouts and device operations.

* Add predicates for all device op instances.

* Use the device op signature for validation.

* Fix ckb CMakeLists.txt file for tests.

* Fix building CK Builder instance traits after the introduction of direct load template parameter in CK.

* Fix clang-formatting.

* Add factory for DeviceGroupedConvFwdMultipleABD_Xdl_CShuffle device op.

* Add conv factory for  DeviceGroupedConvFwdMultipleD_Wmma_CShuffle

* Rename elements per wave per shuffle member in the epilogue concept.

* clang-format

* Add concepts and types for optional device op template parameters.

* Add optional compute, direct load, and loop scheduler arguments to conv factory.

* Add number of groups to merge template parameter.

* clang-format.
2025-11-03 09:03:25 +02:00
..

Builder

This directory contains the experimental builder feature for composable_kernel.

  • Status: In development (October - November 2025)

Overview

The builder provides a high-level, semantically-clear interface for constructing composable kernel operations, with an initial focus on convolution kernels for MIOpen. It leverages modern C++20 features (such as POD structs as non-type template parameters, concepts, and designated initializers) to simplify kernel instantiation and improve developer experience.

This project is a prototype for a more general builder pattern for all of composable_kernel (CK) and CKTile, but is currently limited to formalizing the interface between MIOpen and CK.

Directory Structure

  • include/ck_tile/builder/
    Core builder headers and public API.
  • test/
    Unit tests and example usage of the builder pattern.
  • CMakeLists.txt
    CMake configuration for building the experimental builder and its tests.

CMake Configuration

To enable the experimental builder, configure your build with:

cmake                                                                                             \
  -D CMAKE_PREFIX_PATH=/opt/rocm                                                                  \
  -D CMAKE_CXX_COMPILER=/opt/rocm/bin/hipcc                                                       \
  -D CMAKE_BUILD_TYPE=Release                                                                     \
  -D GPU_TARGETS="gfx942;gfx950"                                                                  \
  -D CK_EXPERIMENTAL_BUILDER=ON                                                                   \
  -D CMAKE_CXX_STANDARD=20                                                                        \
  -G Ninja                                                                                        \
  ..

Building and testing

During development, all CK Builder tests can be built with command

ninja test_ckb_all

To execute all tests, run

ls bin/test_ckb_* | xargs -n1 sh -c

Some tests involve building old CK convolution factories, which will take a long time. Hence, one might want to build only single test targets. For example

ninja test_ckb_conv_builder && bin/test_ckb_conv_builder

When adding new tests, please follow the convention where the CMake build target starts with a prefix test_ckb. This allows us to filter out the CK Builder tests from the set full CK repository tests. Also, the test_ckb_all target that builds all CK Builder tests relies on having the test_ckb prefix on the CMake build targets.