Skip to content

[Epic] Develop CK Builder as an API for CK and CK Tile within MIOpen #3574

@shumway

Description

@shumway

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions