Gentoo Archives: gentoo-soc

From: Benda Xu <heroxbd@g.o>
To: wuyy <xgreenlandforwyy@×××××.com>, gentoo-soc <gentoo-soc@l.g.o>
Subject: Re: [gentoo-soc] Week 12 Report for Refining ROCm Packages in Gentoo
Date: Tue, 06 Sep 2022 14:21:01
Message-Id: 87k06g60u3.fsf@proton.d.airelinux.org
In Reply to: [gentoo-soc] Week 12 Report for Refining ROCm Packages in Gentoo by wuyy
1 Yiyang,
2
3 The progress and wrap up looks great! Thank you.
4
5 Benda
6
7 wuyy <xgreenlandforwyy@×××××.com> writes:
8
9 > Although this is the final week, I would like to say that it is as
10 > exciting as the first week.
11 >
12 > I kept polishing rocm.eclass with the help of Michał and my mentor, and
13 > it is now in good shape [1]. I must admit that the time to write an
14 > eclass for a beginner like me is much more than what I expected. In my
15 > proposal, I leave 4 weeks to finish it, 2-week implementation and 2-week
16 > polishing. In reality, I implemented within 2 weeks, but polished it for
17 > 4 weeks. I made a lot of QA issues and was not aware, which increases
18 > the number of review-modify cycles. During this process, I leant a lot:
19 >
20 > 1. Always re-read the eclass, especially comments and examples
21 > thoroughly after modification. Many times I forgot there is an example
22 > far from the change that should be updated because one functions changes
23 > its behavior.
24 >
25 > 2. Read the bash manual carefully, because properly usage of features
26 > like bash array can greatly simplify code.
27 >
28 > 3. Consider the maintenance difficulty of the eclass. I wrote a oddly
29 > specific `src_test`, which can cover all the cases of ROCm packages. But
30 > it's not worth it, because specialized code should be placed into
31 > ebuilds, not one eclass. So instead, I remain the most common part,
32 > `check_amdgpu`, and get rid of phase functions, which made the eclass
33 > much cleaner.
34 >
35 > I also find some bugs and their solutions. As I mentioned in week 10's
36 > report, I observed many test failures in sci-libs/miopen based on
37 > vanilla clang. In this week, I figured out that they have 3 different
38 > reasons, and I've provided the two fixes for two failures ([2, 3]). The
39 > third issue, I've found it's root cause [4]. I believe there would be a
40 > simple solution to this.
41 >
42 > For gcc-12 issues, I also come to a brutal workaround [5]: undef the
43 > __noinline__ macro before including stdc++ headers and def it
44 > afterwards. I also observed that clang-15 does not fix this issue as
45 > expected, and provided a MWE at [6].
46 >
47 > I'm also writing wiki pages, filling installation and developing guide.
48 >
49 > In this 12-week project, I proposed to deliver rocm.eclass, and packages
50 > like pytorch, tensorflow with rocm enabled. Instead, I delivered
51 > rocm.eclass as proposed, but migrated the ROCm toolchain to vanilla
52 > clang. I thought porting ROCm toolchain to vanilla clang is closer to my
53 > project title "Refining ROCm Packages" :-)