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" :-) |