-
Notifications
You must be signed in to change notification settings - Fork 256
[CK_BUILDER] Add constraints for block tiling #3310
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
shumway
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great!
That change to test_conv_description.cpp may break on gfx950, if so you may have to experiment a bit more with valid block tiling in that test.
| (Value[2] >= 0 && Value[2] < 3)); | ||
| }; | ||
|
|
||
| // Limits for tile sizes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this universal for all architectures (it looks like a generic mathematical condition)? Maybe add a short explanation why the conditions logically obvious or if there is a technical reference.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it be possible to break the constraints into more fine granular pieces to get a better compile-time error? I think in the current implementation it would be difficult to figure out which condition is violated.
|
The limits for tiles size are very useful since incorrect combinations of tile sizes are probably the biggest sources of errors when adding new kernel instances. However, I was under the impression that we wanted to collect the constraints into a single location where both the builder and the CK Tile implementation could use them. Maintaining a separate set of rules/constraints for the builder is a bit tricky since we don't have a good way of ensuring that they remain in sync with the implementation. |
7c392c2 to
6fa4948
Compare
|
Looks like there's a failure on gfx942 with this test: experimental/builder/test/conv/test_ckb_conv_fwd_1d_i8.cpp Those i8 tests seem to be the most fragile. |
6fa4948 to
4c9f3f3
Compare
Added constraints for (c++20 concepts) for relations between thread block size, m/n_per_xdl and warp size for convolutions built with ck builder. In this process, it was also discovered that the example in test_conv_description.cpp was erronous and m/n_xdl_per_wave should be increased from 4 to 8.