If you have seen the page “ABOUT ME”, you will know my research interest is LLVM and OpenMP. Basically, the main part is to optimize OpenMP to improve its performance, well, more about offloading to GPU. The reason that LLVM is also mentioned is that my vision is to introduce more information into runtime library so that more optimization can be performed during runtime which requires some works in compiler. I’ve been working on OpenMP for about half a year. There’re plenty of awesome tutorials and books to show you how to write OpenMP correctly and efficiently, but there are seldom articles to tell you how OpenMP works underneath. From my perspective, it is not very friendly to friends who want to contribute to OpenMP. In order to help me understand things better, I’d like to write a series of blogs about how OpenMP works internally.
Honestly, I’m still a newbie so the organization of this series may not be the best way. Plus, some statements may not be correct. So I sincerely welcome any comment. I’ll start with what I’m working on that is related to parallel region, task and so forth. Later as I understand the whole structure more deeply, I’ll update previous posts correspondingly if anything is wrong or partial.