-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtimeline.mw
150 lines (132 loc) · 5.07 KB
/
timeline.mw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
---
title: Timeline of Compiler Design Contest 2024
#red: #FF0000
#green: #00FF00
#yellow: #FFFF00
#orange: #FFA500
#blue: #0000FF
---
section Compiler Design Contest
2023-12-08/2024-08-22: 筹备编译比赛
2024-04-20/2024-08-22: 编译比赛
group 培训
2023-12-08: 第一次编译比赛宣讲
2024-01-24: 2nd 培训
- 下午: 梳理了编译的基本流程和编译器的基本结构; 前端算法介绍
- 晚上: 开发环境配置 和 antlr4 使用简介
- 布置寒假任务:
- 熟悉 Sys2022 语言规范
- 利用 antlr4 实现编译器前端,实现 c -> ast
2024-03-08: 3rd 培训讲解
- 静态单赋值 SSA (Part1)
- IR 数据结构的一般设计 (Value-Use-User)
2024-03-22: 往届参赛队经验分享 arm x 2
2024-03-29: 培训
- 静态单赋值 SSA (Part2)
- 往届参赛队经验分享 riscv
2024-04-12: 培训
- 代码生成
2024-04-24: 下发开发板
2024-05-17: 培训
- 协同开发环境搭建/自动化测试
2024-05-24: 比赛第一次官方培训 湖大
- 往后每周末基本都有官方培训 内容包括:
- 赛题介绍 编译器设计与测试 中间表示设计 优化
- 上届优秀参赛队经验分享 cmmc 郑英炜
endGroup
group 比赛
2024-04-20: 比赛正式公示开赛
- 语法/目标平台跟 23 年保持一致
2024-05-30: 截止报名
- +7days 在线测评系统开放 可以提交代码测评 实时排名
- 一次测评需要 1 个多小时,建议本地先做好测试 (docker 编译环境/开发板测试)
2024-08-10: 初赛截止
- rv 6th; arm 5th, 6th
- rv 41, arm 16
2024-08-18/2024-08-22: 现场决赛 杭电
endGroup
group 开发
2023-12-21: 4 人群建群
“编译比赛小群”
group 寒假
2024-01-26/2024-02-26: 寒假 学习编译原理 #blue
2024-02-17: 初始化仓库 #red
2024-02-28: sysy.g4 基本完成; 开始学习 ir 生成
2024-02-29: g4 文件换成老师提供的
endGroup
group ast -> ir
2024-03-12/2024-04-01: 生成 ir #orange
2024-03-12: 能够生成简单的 ir #red
- 生成 ir 的基本流程已打通; 先跑起来
- visitXX, builder.hpp
2024-03-25: ir 生成基本完成 #red
- 开始分工后端和中端优化
endGroup
group 中端优化 and 后端
2024-04-01: mem2reg framework (汤)
2024-04-06: dom pass is done
Task:
- 汤: 分析遍
- 杨: mem2reg
- 简泽: array as function param
- 侯: simplest backend
2024-04-14: mem2reg, dce success #red
- mem2reg success (杨)
- dce success (汤)
- array as function param success (简)
- backend framework (侯)
2024-04-25: sccp, gcm
2024-05-05: linear allocator
- 后端架构出现问题 + 学习cmmc, 进度缓慢
2024-05-10: generate simplest backend asm (riscv) #red
2024-05-15: 寄存器分配一直有问题
- 中端已经依托了, 决定重构中端 (耗费了一个月, 没有成功)
- 简泽一直再调寄存器分配 加之参加各种夏令营 期末
- 接下来一个半月陷入迟滞
2024-05-15/2024-06-26: 陷入迟滞 #blue
2024-05-16/2024-06-26: 1 人重构中端 (侯) 失败
2024-06-26: 进度迟滞 大家精神头很差 甚至想放弃 #blue
- 开会统一思想 决定回到之前写中端 ir 生成时的状态
- 放弃重构中端 在现有代码上做重构修改
2024-07-01: 全优化 + 后端汇 => Pass 46/103
2024-07-03: 决定集中起来搞, 互相支持, 每天汇报进度 #red
- 去三号院北超算中心
2024-07-04: 指令调度 ok; 寄存器分配放弃线性改图着色, 仍在调试
2024-07-10: 中端优化 ir 测试近似O2水平
2024-07-15: 寄存器分配基本完成 93/103
2024-07-19: 第一次提交测试 功能得分 56/100 => 28 #red
endGroup
group 暑假
2024-07-20/2024-08-22: 暑假 #orange
2024-07-20: 暑假 迁移到 305-701
2024-07-22: 决定重构后端 指针问题 两天搞定 #red
2024-07-25: 修复重大bug: 指针 4->8 bytes #red
- 导致函数调用 segfault
- pass 100/100
2024-07-27: 发现性能差(对比其他队, 加相同优化遍), 排查发现设计问题 #red
- 排查后发现, 不应该在进入后端时 reg2mem
- 后端应处理 phi, 而不是消除所有 phi 给后端
- 否则所有的变量都在内存中, 寄存器分配只给中间变量分配了
- 解决后 4th, 获得我们自己的最优样例
2024-07-29: performance RE: 官方库的 starttime/stoptime 应传递行号做参数
2024-08-10: 初赛截止提交
- 侯: 多线程并行化
- 简泽: split gep and other
- 汤: 依赖关系分析 mark parallel, sroa
- 杨: ??忘了
2024-08-18/2024-08-22: 决赛 #red
- 依赖关系分析segfault, 多线程并行化无法应用
- 全力找问题 没能解决
- 3 个 wrong ans, 后端出错 (比赛时未能解决)
- 使用了剥离第一次循环, 实现超 1k 加速比
- 比赛板子测试波动极大 测试既不稳定 比赛延期
- 个别参赛队使用比赛禁止的 “模式匹配”, 在公示代码后被查出, 降级处理
- match 'fft' 匹配函数名, 匹配特定的 ir, 毫无通用性,甚至只要更换了测试数据就会出错
endGroup
endGroup
group after
2024-09-02: 开学 暑假结束
2024-09-04: 暑期实习报告; 赛后交流总结
2024-09-10: 拿到获奖证书 (电子版)
endGroup
endSection