Commit Graph

2543 Commits

Author SHA1 Message Date
Ville Pietilä
28221cf01f Value constraint concept example. 2025-10-15 07:46:47 +00:00
Ville Pietilä
12c812e993 Add signature types to source control. 2025-10-10 13:39:24 +00:00
Ville Pietilä
92a02510bd Rename conv algorithm. 2025-10-10 13:37:05 +00:00
Ville Pietilä
fe7ed96c2a Separate types from concepts. 2025-10-10 13:34:57 +00:00
Ville Pietilä
81ac06d29a Rename conv algorithm assets. 2025-10-10 11:42:22 +00:00
Ville Pietilä
7d14a73740 Disable missing headers error from GTest. 2025-10-10 11:28:13 +00:00
Ville Pietilä
5d4b386e04 Merge remote-tracking branch 'origin/jshumway/convolution-builder' into features/convolution-builder 2025-10-10 10:48:42 +00:00
John Shumway
4247f7f4d4 Clean up description and tree formatter. 2025-10-08 01:16:15 +00:00
John Shumway
753c61aa0f Add conv_traits. 2025-10-07 21:54:53 +00:00
John Shumway
fe5fbcbc64 Extract TreeFormatter from Description class.
Description class was cluttered with hard-coded formatting, so we remove and generalize the formatting, simplifying the Description::detailed() method.
2025-10-07 15:43:13 +00:00
John Shumway
f8838d7b38 Refactored Descriptor to not be a template class.
This PR makes a describe<Builder> factory that is templated, then everything else is not templated.
2025-10-06 21:14:57 +00:00
John Shumway
d4a4861a3c Clean up conv_description.cpp.
Move some of toString functions to where the builder signature enums are located.
2025-10-06 19:50:13 +00:00
John Shumway
1d866cb75a Add tests for reflection::Description. 2025-10-06 13:04:27 +00:00
John Shumway
f2a0430ce1 Add initial reflection capabilities to the builder.
This PR introduces a Description class as well as ck_tile ConvTraits to add reflection. This is helpful for users, but more critically, it will help us write better tests for the builder. Too many details of the convolutions are hidden or obscured.
2025-10-06 12:00:26 +00:00
John Shumway
22b5da468f Update README.md to align with the Algorithm concept. 2025-10-05 17:30:25 +00:00
John Shumway
816be4c417 Add placeholder README.md file 2025-10-05 17:30:25 +00:00
John Shumway
2d5311107f Fix and document the inlineDiff function.
The original version from CoPilot was broken and difficult to fix. I worked with Cline AI to fix the algorithms and also add a lot of description to the implementation.
2025-10-05 17:30:25 +00:00
John Shumway
089b5c6ffa Add StringEqWithDiff matcher. 2025-10-05 17:30:25 +00:00
John Shumway
86240357d4 Enable gmock in gtest.cmake. 2025-10-05 17:30:25 +00:00
John Shumway
2093e4e5b9 Add documentation to conv_signature.hpp. 2025-10-05 17:30:25 +00:00
John Shumway
a30c9c362c Add color to inlineDiff test util. 2025-10-05 17:30:25 +00:00
John Shumway
a40e1e7692 Add testing utils. 2025-10-05 17:30:25 +00:00
John Shumway
7d27c8663a Remove broken gmock and fix inline diff.
We really need to just fix GTest/GMock fo CK. I used copilot to generalize the inlineDiff function for insertions and deletions.
2025-10-05 17:30:25 +00:00
John Shumway
b4bb2bf317 Format file and enable gmock. 2025-10-05 17:30:25 +00:00
John Shumway
9f65631f00 Add test_conv_bwd_instances.cpp.
Just one instance so far, only setting up test code.
2025-10-05 17:30:25 +00:00
John Shumway
8b29be6785 Rename test_conv_fwd_instances.cpp. 2025-10-05 17:30:25 +00:00
John Shumway
5878c32c14 Clean up factory for backwards convolutions.
Adds some comments and simplifies the block transfer settings by splitting into more funcctions.
2025-10-05 17:30:25 +00:00
John Shumway
1adb40d5c8 Add backward instance to the builder.
The factory still needs to be cleaned up, but since I finally have the
code building and all the test passing, this is a good time to commit.

There is a lot of generalization in this commit to handle backwards
convolutions.
2025-10-05 17:30:25 +00:00
John Shumway
2890584ef1 Improve bulder_utils.
Move unsupported_data_type to more general UnsupportedEnumValue.

Also add a comment to exaplain the template deduction guide for StringLiteral.
2025-10-05 17:30:25 +00:00
John Shumway
d771863a7d Fix naming style of all signature enums.
Some of these enum values were CamelCase when they should have been CONSTANT_CASE.
2025-10-05 17:30:25 +00:00
John Shumway
9c89f5eaf9 Provide default value for API VERSION.
Create a LATEST_API_VERSION value and use that as the default. This simplifies code that shouldn't depend the API version.
2025-10-05 17:30:25 +00:00
John Shumway
24341a3fb8 Rename layouts to channels first or channels last.
Also add a spatial dimension parameter to layout mapping in the factory to handle different layout enums for 2D and 3D convolutions
2025-10-05 17:30:25 +00:00
John Shumway
33721db424 Add a 3D kernel instatiation.
Had to add a new layout enum for 3D. We should see if we can simpify that with 2D/3D logic.
2025-10-05 17:30:25 +00:00
John Shumway
1bc0a1281d Rename Factory template. 2025-10-05 17:30:25 +00:00
John Shumway
934cea8511 Fix capitalization of Builder::Factory type. 2025-10-05 17:30:25 +00:00
John Shumway
79f179c1a8 Add support and tests for different type.
We were just defaulting the types to FP16, but now we update to support BF16 and FP32 also. Test the types on the factory since we cannot easily check the kernel. Also add some better compile time error messages.
2025-10-05 17:30:25 +00:00
John Shumway
5f0c272c9f Simplify Signature by removing constexpr.
The tests used constexpr on fields from an older design. Now that we have const template parameters instead of types, these Signature fields don't need constexpr. This will also make it easier to test different operator signatures.
2025-10-05 17:30:25 +00:00
John Shumway
432e29026c Add missing files. 2025-10-05 17:30:25 +00:00
John Shumway
e4a93ba12a Fix concepts for convolution signature.
We split the concepts to a check on the signature type (ConvSignatureDescriptor) as well as a check on the value (ValidConvSignature).
2025-10-05 17:30:25 +00:00
John Shumway
da140c434b Update some more concept names. 2025-10-05 17:30:25 +00:00
John Shumway
32b4b27031 Describe the convolution instances tests.
This test is rather complicated, so it's important to provide more context to the reader.
2025-10-05 17:30:25 +00:00
John Shumway
afbc4223ae Update concept names.
Concepts should represent semantic categories.

Use "Descriptor" suffix and "Specifies" prefix.
2025-10-05 17:30:25 +00:00
John Shumway
00741a7266 Use set_thread_cluster_dims helper.
This simplifies our instantiation test.
2025-10-05 17:30:25 +00:00
John Shumway
1f986b9192 Add an alias to make enum more readable. 2025-10-05 17:30:25 +00:00
John Shumway
8b540c8df1 Use a set_submatrix helper.
We want to simplify the test of lots of instances, so adding a helper to make the test and instantiation details more clear.
2025-10-05 17:30:25 +00:00
John Shumway
5da397b9ec Add all device_grouped_conv_fwd_xdl_bf16_comp_instances 2025-10-05 17:30:25 +00:00
John Shumway
cd1c1e0aff Add block GEMM pipeline version to builder. 2025-10-05 17:30:25 +00:00
John Shumway
b2f501d5d7 Generalized version to StringLiteral.
With the change, the following can be used for the version parameter:

"0.1.0"  // string literal
constexpr char API_VERSION[] = "0.1.0";
constexpr ckb::StringLiteral API_VERSION = "0.1.0";
2025-10-05 17:30:25 +00:00
John Shumway
3c020eb507 Update builder_utils.hpp.
This commit moves sequence_util to  more general builder_utils, adds unit testss, and converts ToSequence to better match standard library conventions.
2025-10-05 17:30:25 +00:00
John Shumway
0d8724a162 Convert SIGNATURE to non-template type parameter.
No functional changes yet, but this aligns with ALGORITHM and will allow testing different signatures.
2025-10-05 17:30:25 +00:00