-
Notifications
You must be signed in to change notification settings - Fork 17
tips experiences graduates
I'm Daniel Mishler, a 2nd year PhD candidate at UTK working with the DisCo group who had a bit of trial-by-fire with JDF recently. Here is a summary of my experiences, pitfalls, and other things that I ran into that might help someone coming after me to spend less time.
I wrote a GEMM that modfies the read structure such that on a multicore system, PaRSEC will by default never ask the GEMM for tile (m,n,k+1) to be executed on a core other than the one that just finished task (m,n,k).
GOATed is short for "greatest of all time." This applies to Tutorial 1. I have not seen a more concise tutorial in my days of grad school since I saw "Tutorial 1" listed on the homepage of our wiki under "Tutorials about PaRSEC/DPLASMA". I read that tutorial and I would recommend anyone following me to do the same.
When I made my GEMM, I struggled to find out where to start. I didn't have any idea how to start from scratch. So don't! I started by tweaking the existing PTG implementation of GEMM (it's SUMMA). I fiddled with this here, this there, confirmed that the program segfaulted when I did somemthing I thought would make it segfault, etc. This process led me a much better understanding of what was going on.
When I felt ready, I copied the original GEMM into a new file and started tracking what generates what and what files are called.
(I had a feel for precision generation going into this, but if you don't know what I'm talking about you should answer for yourself the question "Why is only z precision written in source code, yet we have executables for z, d, c, and s?")
After figuring out where the flow of control goes from file to file, I went through and rewrote my wrapper and my JDF file. As soon as I had everything ready to compile, I made sure my sanity was intact and tested everything again.
I still am improving the code and am asking the developers questions. Admittedly, the nature of all this cutting edge "easy to use" open-source code is just that the developers put nonzero effort into helping you, and you should at least be thankful for that. It's still new, it's still cutting edge, and it's still developing. Make sure there are plenty of hours to sit with new ideas over multiple days. As for me, this is only the beginning. I still have plenty of questions and improvements to make to my code.