-
Notifications
You must be signed in to change notification settings - Fork 267
Description
Overview
The CK Builder provides a high-level, semantically-clear interface for constructing Composable Kernel convolution operations. This experimental feature focuses on formalizing the interface between MIOpen and CK, leveraging modern C++20 features (POD structs as non-type template parameters, concepts, and designated initializers) to simplify kernel instantiation and improve developer experience.
This project serves as a prototype for a more general builder pattern that will eventually extend to all CK and CK-Tile operations.
Motivation
The current CK interface requires deep knowledge of complex template parameters, making it difficult for library users like MIOpen to instantiate kernels correctly. The builder pattern addresses this by:
- Providing compile-time validation through C++20 concepts and other best practices
- Offering clear, self-documenting interfaces with designated initializers
- Separating "what to compute" (signature) from "how to compute it" (algorithm)
- Enabling testable, strongly-typed kernel construction with meaningful compiler error messages
Status
Development Period: October 2025 - March 2026
The initial scope of CK Builder is a narrow focus on MIOpen, to deliver all supported CK kernels (convolutions) to MIOpen using CK / CK Tile as a header-only library.
The builder currently supports forward convolution kernels with various implementations (XDL, WMMA, DL, Large Tensor variants). Support for backward data and backward weight convolutions is in progress.
Requirements
- C++20 compiler support
- CMake configuration:
-D CK_EXPERIMENTAL_BUILDER=ON
Documentation
Success Criteria
MIOpen can instantiate all required convolution kernels using the builder interface, with compile-time validation ensuring configuration correctness.
Future Vision
Extend the builder pattern to all CK and CK-Tile operations beyond convolutions, making it the primary interface for library users.