Skip to content

Commit 644cdbe

Browse files
authored
Merge pull request #3573 from ROCm/jshumway/builder-readme
2 parents 086a1f8 + df7ee27 commit 644cdbe

3 files changed

Lines changed: 14 additions & 8 deletions

File tree

experimental/builder/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
This directory contains the experimental builder feature for composable_kernel.
44

5-
* Status: In development (October - December 2025)
5+
* Status: In development (October 2025 - March 2026)
66

77
## Overview
88

99
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.
1010

11-
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.
11+
This project is a prototype for a more general builder pattern for all of composable_kernel (CK) and CK Tile, but is currently limited to formalizing the interface between MIOpen and CK.
1212

1313
## Design descriptions
1414

experimental/builder/include/ck_tile/builder/README.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ concept ConvSignatureDescriptor = requires(T t) {
100100
- `FORWARD`: Standard forward convolution
101101
- `BACKWARD_DATA`: Gradient computation w.r.t. input
102102
- `BACKWARD_WEIGHT`: Gradient computation w.r.t. weights
103-
- **`data_type`**: Default data type for all tensors (FP32, FP16, BF16, FP8, I8, U8). (Optional, defaults to UNDEFINED_DATA_TYPE, may be overridden by tensors)
104-
- **`operation`**: Default Operation (Optional, defaults to PASS_THROUGH, may be overridden by tensors)
103+
- **`data_type`**: Default data type for all tensors (FP32, FP16, BF16, FP8, I8, U8). (Optional, defaults to UNDEFINED_DATA_TYPE which indicates the type should be inferred or specified per-tensor, may be overridden by individual tensors)
104+
- **`elementwise_operation`**: Default elementwise operation for all tensors (Optional, defaults to PASS_THROUGH, may be overridden by individual tensors via their `operation` field)
105105
- **`accumulation_data_type`**: Type used for internal accumulation
106106

107107
#### 2. Tensor Level
@@ -133,6 +133,9 @@ concept TensorConfigDescriptor = requires(T t) {
133133
```
134134

135135
**Layout Types** (dimension-specific):
136+
- **Special Values**:
137+
- `UNDEFINED_TENSOR_LAYOUT`: Placeholder value indicating layout is not yet specified or should be inferred
138+
136139
- **1D Convolution**:
137140
- Input: `GNCW`, `GNWC`, `NWGC`, `NGCW`, `G_NW_C_strided`
138141
- Weight: `GKXC`, `GKCX`, `KXGC`, `G_K_X_C_strided`
@@ -148,6 +151,9 @@ concept TensorConfigDescriptor = requires(T t) {
148151
- Weight: `GKZYXC`, `GKCZYX`, `KZYXGC`, `G_K_ZYX_C_strided`
149152
- Output: `GNKDHW`, `GNDHWK`, `NDHWGK`, `NGKDHW`, `G_NDHW_K_strided`
150153

154+
- **Bias Tensors**:
155+
- `GC`, `G_C_strided`, `G_K_strided`
156+
151157
Where:
152158
- `G` = Groups
153159
- `N` = Batch size

experimental/builder/include/ck_tile/builder/testing/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ struct ConvSignature {
5353
ck_tile::builder::DataType data_type =
5454
ck_tile::builder::DataType::FP16;
5555
ck_tile::builder::ElementwiseOperation elementwise_operation =
56-
ck_tile::builder::ElementwiseOperation::NONE;
56+
ck_tile::builder::ElementwiseOperation::PASS_THROUGH;
5757
};
5858

5959
// Double-check that out structure is well-defined according to the CK-Builder API.
@@ -66,7 +66,7 @@ constexpr auto SIGNATURE = ConvSignature{
6666
.direction = ck_tile::builder::ConvDirection::FORWARD,
6767
.layout = ck_tile::builder::GroupConvLayout2D::NHWGC_GKYXC_NHWGK,
6868
.data_type = ck_tile::builder::DataType::FP16,
69-
.elementwise_operation = ck_tile::builder::ElementwiseOperation::NONE,
69+
.elementwise_operation = ck_tile::builder::ElementwiseOperation::PASS_THROUGH,
7070
};
7171
```
7272
@@ -243,15 +243,15 @@ struct ConvSignature {
243243
ck_tile::builder::DataType data_type =
244244
ck_tile::builder::DataType::FP16;
245245
ck_tile::builder::ElementwiseOperation elementwise_operation =
246-
ck_tile::builder::ElementwiseOperation::NONE;
246+
ck_tile::builder::ElementwiseOperation::PASS_THROUGH;
247247
};
248248
static_assert(ck_tile::builder::ConvSignatureDescriptor<ConvSignature>);
249249
constexpr auto SIGNATURE = ConvSignature{
250250
.spatial_dim = 2,
251251
.direction = ck_tile::builder::ConvDirection::FORWARD,
252252
.layout = ck_tile::builder::GroupConvLayout2D::NHWGC_GKYXC_NHWGK,
253253
.data_type = ck_tile::builder::DataType::FP16,
254-
.elementwise_operation = ck_tile::builder::ElementwiseOperation::NONE,
254+
.elementwise_operation = ck_tile::builder::ElementwiseOperation::PASS_THROUGH,
255255
};
256256

257257
// Define the convolution algorithm

0 commit comments

Comments
 (0)