Skip to content
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

[QST] Terminology question on GMMA::ScaleOut::One #2046

Open
haeunlee99 opened this issue Jan 17, 2025 · 2 comments
Open

[QST] Terminology question on GMMA::ScaleOut::One #2046

haeunlee99 opened this issue Jan 17, 2025 · 2 comments

Comments

@haeunlee99
Copy link

haeunlee99 commented Jan 17, 2025

What does this code do?

tiled_mma.accumulate_ = GMMA::ScaleOut::One;

For example, in "cutlass/include/cutlass/gemm/collective/sm90_mma_tma_gmma_rs_warpspecialized.hpp"

I have no idea when it is set two 1 or 0, it seems random.

@haeunlee99 haeunlee99 changed the title [QST] Terminology question [QST] Terminology question on GMMA::ScaleOut::One Jan 17, 2025
@thakkarV
Copy link
Collaborator

scales accumulator input by 1 or 0 before

so basically either C += A@B or C = A@B

@haeunlee99
Copy link
Author

Why is second tiled_mma.accumulate_ = GMMA::ScaleOut::One; in line 713 necessary?

https://github.com/NVIDIA/cutlass/blob/main/include/cutlass/gemm/collective/sm90_mma_tma_gmma_rs_warpspecialized.hpp

I think this would be enough,

tiled_mma.accumulate_ = GMMA::ScaleOut::Zero;
tiled_mma.accumulate_ = GMMA::ScaleOut::One;

but they are using it this way

tiled_mma.accumulate_ = GMMA::ScaleOut::Zero;
tiled_mma.accumulate_ = GMMA::ScaleOut::One;
tiled_mma.accumulate_ = GMMA::ScaleOut::One;

Why is last one needed?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants