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

Why there existed "KernelLanguage: Source" in vega20*.yaml under rocBLAS/library/src/blas3/Tensile/Logic/asm_full #1131

Closed
hanjiemicro opened this issue Aug 12, 2020 · 3 comments

Comments

@hanjiemicro
Copy link

hanjiemicro commented Aug 12, 2020

What is the expected behavior

What actually happens

  • I think vega20*.yaml only reserved for Assembly kernel. I am confused why there has multiple source kernels in vega20 configuration.

Environment

Hardware description
GPU Vega20
CPU AMD
Software version
ROCK v3.3
ROCR v3.3
HCC v3.3
Library v3.3
@amcamd amcamd transferred this issue from ROCm/rocBLAS Aug 13, 2020
@zaliu
Copy link
Contributor

zaliu commented Aug 14, 2020

@hanjiemicro, thanks for your question. Yes, vega20*.yaml are generally where assembly kernels for the vega 20 (gfx906) are found. However, we do punt some corner (or not-so-corner) cases to Tensile-generated source kernels. For instance, when m, n or k is odd, for half precision, we let our compiler do the heavy-lifting. Whenever we do that, we grouped the source kernels with the assembly kernels. There is no requirement that vega20*.yaml can only include assembly kernels.

(BTW, if you're using ROCm 3.5, there shouldn't be hcc as part of the distribution anymore; only HIP-Clang based hipcc is supplied)

@hanjiemicro
Copy link
Author

@hanjiemicro, thanks for your question. Yes, vega20*.yaml are generally where assembly kernels for the vega 20 (gfx906) are found. However, we do punt some corner (or not-so-corner) cases to Tensile-generated source kernels. For instance, when m, n or k is odd, for half precision, we let our compiler do the heavy-lifting. Whenever we do that, we grouped the source kernels with the assembly kernels. There is no requirement that vega20*.yaml can only include assembly kernels.

(BTW, if you're using ROCm 3.5, there shouldn't be hcc as part of the distribution anymore; only HIP-Clang based hipcc is supplied)

Thanks for your feedback. Acutally I tried to modified some kernels' KernelLanugage from "Source" to "Assembly" in vega20_sgemm*.yaml, it worked and dumped assembly kernels. Could you help to explain the corner case further?

@babakpst
Copy link
Collaborator

As @zaliu mentioned, for some cases where the assembly kernel does not return a good performance, we use source kernels. The corner cases are usually very small sizes.
Please let us know if you have further questions.

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

No branches or pull requests

3 participants