* Add experimental builder infrastructure for composable_kernel
- Add experimental/builder directory with README documentation.
- Create initial test infrastructure with CMakeLists.txt and placeholder test.
- Update root CMakeLists.txt to support CK_EXPERIMENTAL_BUILDER option.
- Update .gitignore to not treat `experimental/builder` as a CMake build directory.
This establishes the directory structure for a high-level builder pattern that will provide a semantically-clear interface for constructing CK operations, with initial focus on convolution kernels for MIOpen integration.
* Fix clang formatting.
* Fix CMake build infrastructure for experimental builder
- Add experimental/builder CMakeLists.txt with proper subdirectory structure
- Add placeholder include/ck_tile/builder CMakeLists.txt for header installation
- Fix gtest.cmake to use include_guard to prevent multiple inclusions
- Update root CMakeLists.txt to include full builder directory instead of just tests
* Scope C++20 settingto the test code
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Remove redundant GTest::gtest linkage
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Introduce basic types, and convolution algorithm concepts and limits.
* Add convolution signature concepts.
* Add convolution factory.
* Finalize conv factory implementation for fwd convolutions.
* Add type definitions for testing.
* Add placeholder test.
* Add convolution builder definition.
* Fully functional fwd conv builder.
* Test improvements.
* Clean-up include headers.
* Enable the limit checks for the convolution algorithm parameters.
* Remove dead code.
* clang formatting.
* Add more tests and missing conv specialization argument.
* clang formatting.
* Add explicit handling of the tensor layouts.
* Add complete 2D/3D layout support to CK Builder
- Add missing 2D layouts: GNHWC_GKYXC_GNHWK, NGCHW_GKCYX_NGKHW
- Add missing 3D layout: GNDHWC_GKZYXC_GNDHWK
- Add 1D layouts (NWGC, NGCW, GNWC, NGCW_GKCX) for future support
- Add 3 tests for new 2D/3D layouts
- All tests pass (5/5)
* Add tests for remaining 2D/3D layouts
- Add test for 2D NGCHW_GKYXC_NGKHW (channels-first) with Filter1x1Stride1Pad0
- Add test for 3D NDHWGC_GKZYXC_NDHWGK (channels-last)
- All 7 tests pass (complete coverage for all 2D/3D forward layouts)
* Change enum converters to consteval.
* 7 tests with pipeline and specialization| Test # | Dim | Type | Layout | Pipeline | Specialization |
|--------|-----|------|----------------------|----------|-------------------------|
| 1 | 2D | BF16 | NHWGC_GKYXC_NHWGK | V1 | DEFAULT |
| 2 | 2D | FP16 | GNHWC_GKYXC_GNHWK | V3 | FILTER_1X1_PAD0 |
| 3 | 2D | FP32 | NGCHW_GKCYX_NGKHW | V4 | FILTER_1X1_STRIDE1_PAD0 |
| 4 | 2D | BF16 | NHWGC_GKYXC_NHWGK | V5 | FILTER_3x3 |
| 5 | 3D | FP32 | NGCDHW_GKCZYX_NGKDHW | V1 | FILTER_1X1_PAD0 |
| 6 | 3D | BF16 | GNDHWC_GKZYXC_GNDHWK | V3 | DEFAULT |
| 7 | 3D | FP16 | NDHWGC_GKZYXC_NDHWGK | V4 | FILTER_1X1_PAD0 |
* Add missing convolution layouts and provide better compile-time error in instance traits.
* Fix clang formatting.
* Changed I8 -> S8.
* Fix signature.
* Rename concepts and corresponding members.
* Rename LDS related parameters.
* Remove ODD_C specialization. Add V2 pipeline.
* Add missing types.
* Add elementwise operation to the conv signature.
* Improve compile-time error message for unsupported elementwise ops.
* Separate different fwd conv builder tests into separate compilation units.
* Fix layout to string and add name to old CK PassThrough elementwise op.
* Enable both CK and CK Tile tensor layouts in instance traits.
* Fix clang-format.
---------
Co-authored-by: John Shumway <jshumway@amd.com>
Co-authored-by: John Shumway <john.shumwayjr@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: JH-Leon-KIM-AMD <jeonghyun.kim@amd.com>
[ROCm/composable_kernel commit: 6c2ca1211a]
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, build and test from the CK build directory with
ninja test_conv_builder && bin/test_conv_builder