Closed Realtyxxx closed 2 years ago
@Realtyxxx Welcome to BLIS and I hope you will learn a lot from BLIS like I did.
First ,I recommend reading the Goto's algorithm. BLIS is built on top of these algorithms.
Then you can give a look at what micro-kernels are and how they are named in https://github.com/flame/blis/blob/master/docs/KernelsHowTo.md
BLIS also has a GEMM sandbox for newcomers. @fgvanzee can give you more info about that.
And we have a free Massive Open Online Course that walks you through the basics of writing your own microkernel: ulaff.net, third column.
On Nov 15, 2021, at 7:51 AM, Minh Quan Ho @.***> wrote:
@Realtyxxx https://github.com/Realtyxxx Welcome to BLIS and I hope you will learn a lot from BLIS like I did.
First ,I recommend reading the Goto's algorithm https://www.cs.utexas.edu/users/flame/pubs/GotoTOMS_final.pdf. BLIS is built on top of these algorithms.
Then you can give a look at what micro-kernels are and how they are named in https://github.com/flame/blis/blob/master/docs/KernelsHowTo.md https://github.com/flame/blis/blob/master/docs/KernelsHowTo.md BLIS also has a GEMM sandbox for newcomers. @fgvanzee https://github.com/fgvanzee can give you more info about that.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/flame/blis/issues/572#issuecomment-969047182, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABLLYJ22QDFZXLE22HKTC23UMEUBNANCNFSM5HCDWOLA. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
While the course might still be of value, I'm not sure @Realtyxxx's question would be answered by @rvdg's MOOC.
@Realtyxxx Is your question about the BLIS infrastructure? That is, are you trying to understand how the microkernel functions defined in the appropriate kernels
subdirectory get called by the gemm
operation provided by BLIS? Or maybe your question is about where in the code they get called? Letting us know what specifically you are interested in will allow us to better guide you.
Thank you for you advices I just find out which sub directory's code the gemm operation has called, but now I have a new question, when I called a gemm operation ,I find that my codes used the file bli_gemm_int.c several times , I don't understand why, this is the print message I get (I set printf function in several files which I think the gemm function would use) :
@Realtyxxx Great question. The bli_gemm_int()
function serves as an abstraction that allows BLIS to sort of pause and decide which loop to partition over next (that is, which algorithmic variant to call next). How it decides is determined by the makeup of the control tree that it is given. (In case you are curious, the int
is supposed to be short for "internal.")
Devin is in the middle of a refactorization that will eliminate bli_gemm_int()
altogether. Each variant will be able to call the next variant directly.
OKkk ,but why does the bli_gemm_int.c
call itself ? and I don't know about the control tree, could you please tell me where can I get more message about that ?😁
You can check bli_gemm_cntl_create() function in file "frame\3\gemm\bli_gemm_cntl.c" which is called from bli_l3_cntl_create_if() as part of bli_l3_thread_decorator() where actual openmp/pthread parallelization happens.
You can check bli_gemm_cntl_create() function in file "frame\3\gemm\bli_gemm_cntl.c" which is called from bli_l3_cntl_create_if() as part of bli_l3_thread_decorator() where actual openmp/pthread penalization happens.
cool ,this helps a lot
I would want to know how does the gemm function use the gemm's kernel which are in the directory kernel? specific , I'm using zen architecture and armv8 without sve