[llvm-dev] [GSoC] Machine learning and compiler optimizations: using inter-procedural analysis to select optimizations

Mircea Trofin via llvm-dev llvm-dev at lists.llvm.org
Tue Jan 19 09:21:48 PST 2021


Hello Konstantin,

if it helps, you may consider joining the 'ML Guided Compiler Optimizations
<https://docs.google.com/document/d/1JecbplF09l3swTjze-UVeLh4L48svJxGVy4mz_e9Rhs/edit?usp=sharing>'
working group - next meeting is Feb 5.


On Tue, Jan 19, 2021 at 6:55 AM Stefanos Baziotis via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi  Konstantin,
>
> Let me try to help with the last two questions:
> 1) From what I understand, you don't have much experience with LLVM (or
> compilers in general? in such a case, I can recommend more stuff). Given
> that, I'd start with these two videos
> a) https://www.youtube.com/watch?v=m8G_S5LwlTo
> b) https://www.youtube.com/watch?v=3QQuhL-dSys
>
> These cover fundamental concepts and you'll have to know most of them no
> matter what you do in LLVM.
> The next step depends on what you like. I'd say you could either play with
> an already existing pass or create your own.
>
> Personally, I would go with the second although it seems more difficult
> (but it's not). First, because already existing passes
> are production quality, which means that they contain a lot of stuff that
> are not exactly educational and would not be good for a beginner IMO.
> (so for example, if I were to start with an already existing pass, I'd
> start with one implemented for a course or sth)
> Second, because by creating your own pass, you will see sort of how
> everything fits together much faster.
>
> Now, the problem with creating your own pass is that most relevant
> tutorials out there, either they use the old pass manager
> or they make an out-of-tree pass (or both). The result is that you have to
> deal with a monstrosity of irrelevant (at least for now) things.
>
> So, I'll go ahead and recommend something else: Just delete the code of an
> already existing pass and start over :) In particular,
> find the ::run function and just delete what it does and call your own
> functions. For example, take this [4] and replace it with e.g. this
> https://pastebin.com/PhMLvMH7
>
> You can now call "your" pass by adding -passes="loop-distribute" in the
> `opt` tool.
>
> This should give you enough knowledge of the infrastructure to e.g.
> program a dominators pass [5] (if you don't know about dominators,
> it's important that you learn about them, however, wikipedia is not a good
> source. I'd pick a book like "Engineering a Compiler").
>
> 2) I would start with those two:
>
> a) CppCon 2016: Timur Doumler “Want fast C++? Know your hardware!" [1]
> b) Writing cache friendly C++ - Jonathan Müller - Meeting C++ 2018 [2]
> https://www.youtube.com/watch?v=Nz9SiF0QVKY
>
> If you want to go more in depth, you can watch this course [3] from CMU on
> Comp. Arch., I think it's amazing. You can cherry pick topics if you want.
>
> Hope this helps, let me know if there are other questions.
>
> - Stefanos
>
> [1] https://www.youtube.com/watch?v=BP6NxVxDQIs
> [2] https://www.youtube.com/watch?v=Nz9SiF0QVKY
> [3]
> https://www.youtube.com/playlist?list=PL5PHm2jkkXmi5CxxI7b3JCL1TWybTDtKq
> [4]
> https://github.com/llvm/llvm-project/blob/main/llvm/lib/Transforms/Scalar/LoopDistribute.cpp#L1043
> [5] https://en.wikipedia.org/wiki/Dominator_(graph_theory)#Algorithms
>
> Στις Τρί, 19 Ιαν 2021 στις 5:05 π.μ., ο/η Сидоров , Константин Сергеевич
> via llvm-dev <llvm-dev at lists.llvm.org> έγραψε:
>
>> Dear all,
>>
>> My name is Konstantin Sidorov, and I am a graduate student in Mathematics
>> at Moscow Institute of Physics and Technology.
>>
>> I would like to work on a project "Machine learning and compiler
>> optimizations: using inter-procedural analysis to select optimizations"
>> during the Google Summer of Code 2021.
>>
>> I have an extensive background relevant to this project - in particular:
>>
>> * I have already participated in GSoC before in 2017 with mlpack
>> organization on the project "Augmented RNNs":
>> https://summerofcode.withgoogle.com/archive/2017/projects/4583913502539776/
>> * In 2019 I have graduated from the Yandex School of Data Analysis — a
>> two-year program in Data Analysis by Yandex (the leading Russian search
>> engine); more info on the curriculum could be also found at
>> https://yandexdataschool.com/.
>> * I have also been working as a software engineer at Adeptik from July
>> 2018 to date, where I have predominantly worked on projects on applied
>> combinatorial optimization problems, such as vehicle-routing problems or
>> supply chain modeling. In particular, I have had experience with both
>> metaheuristic algorithms (e.g., local search or genetic algorithms) and
>> more "traditional" mathematical modeling (e.g., linear programming or
>> constraint programming).
>>
>> I would like to discuss this project in more detail. While it is hard to
>> discuss any kind of exact plan at this stage, I already have two questions
>> concerning this project:
>>
>> (1) I have set up an LLVM dev environment, but I am unsure what to do
>> next. Could you advise me on any simple (and, preferably, relevant) tasks
>> to work on?
>> (2) Could you suggest any learning materials to improve the understanding
>> of "low-level" concepts? (E.g., CPU concepts such as caching and SIMD)
>>
>> Best regards,
>> Konstantin Sidorov
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210119/629721aa/attachment.html>


More information about the llvm-dev mailing list