[hellollvm] 词法分析:缕清楚了文件的包含关系(十)
继续从包含关系学习对 forward.h的词法分析
我在持续监控如下内存的同时
p (**(clang::Lexer **)(0x555569d844b8 + 0x38)).MIOpt.MacroLoc.ID
$7 = 969998
$7 = 969998
p (**(clang::Lexer **)(0x555569d844b8 + 0x38*0)).MIOpt.MacroLoc.ID
$6 = 324889
p (**(clang::Lexer **)(0x555569d844b8 + 0x38*-1)).MIOpt.MacroLoc.ID
$7 = 271772
p (**(clang::Lexer **)(0x555569d844b8 + 0x38*-2)).MIOpt.MacroLoc.ID
$8 = 213834
p (**(clang::Lexer **)(0x555569d844b8 + 0x38*-3)).MIOpt.MacroLoc.ID
$6 = 324889
p (**(clang::Lexer **)(0x555569d844b8 + 0x38*-1)).MIOpt.MacroLoc.ID
$7 = 271772
p (**(clang::Lexer **)(0x555569d844b8 + 0x38*-2)).MIOpt.MacroLoc.ID
$8 = 213834
p (**(clang::Lexer **)(0x555569d844b8 + 0x38*-3)).MIOpt.MacroLoc.ID
我对external decl的分析也进行了追踪
9 hw watchpoint keep y *(unsigned long *)0x555569d844b8
10 hw watchpoint keep y *(unsigned long *)0x555569d844f0
11 breakpoint keep y 0x0000555566b09016 in clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) at /home/zzy/Program/llvm-project/clang/lib/Parse/ParseDecl.cpp:2074
breakpoint already hit 2 times
12 breakpoint keep n 0x0000555566a5bfc1 in clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) at /home/zzy/Program/llvm-project/clang/lib/Parse/Parser.cpp:758
breakpoint already hit 2 times
13 breakpoint keep n 0x0000555568abcaf3 in clang::Lexer::LexIdentifierContinue(clang::Token&, char const*)
at /home/zzy/Program/llvm-project/clang/lib/Lex/Lexer.cpp:1939
10 hw watchpoint keep y *(unsigned long *)0x555569d844f0
11 breakpoint keep y 0x0000555566b09016 in clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) at /home/zzy/Program/llvm-project/clang/lib/Parse/ParseDecl.cpp:2074
breakpoint already hit 2 times
12 breakpoint keep n 0x0000555566a5bfc1 in clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) at /home/zzy/Program/llvm-project/clang/lib/Parse/Parser.cpp:758
breakpoint already hit 2 times
13 breakpoint keep n 0x0000555568abcaf3 in clang::Lexer::LexIdentifierContinue(clang::Token&, char const*)
at /home/zzy/Program/llvm-project/clang/lib/Lex/Lexer.cpp:1939
我跟到了对
forward.h对remove_reference.h的Include的处理
听 ISCA 2025(第52届国际计算机架构年会),来自韩国科学技术院(KAIST)的 Seunghee Han、Soongyu Choi 和 Joo-Young Kim 团队在 Session 10B 领域特定加速器(Domain Specific Accelerator III)分会上作题为《LightNobel: Improving Sequence Length Limitation in Protein Structure Prediction Model via Adaptive Activation Quantization》的报告。报告指出,尽管 AlphaFold2 和 ESMFold 等蛋白质结构预测模型(PPM)在三维折叠结构预测上取得了前所未有的精度,但在处理长氨基酸序列(如序列长度大于1,000)时面临着巨大的扩展性挑战。其主要瓶颈在于 PPM 特有的配对表示(Pair Representation)数据结构会引入一个额外维度,导致激活值体积随序列长度呈指数级增长,从而带来沉重的内存与计算开销,阻碍了该类模型在分析大型蛋白质或复杂多聚体等实际医药和生物学场景中的应用。为此,研究团队推出了首个专为克服 PPM 序列长度扩展限制而设计的软硬件协同加速架构方案 LightNobel。
在算法与架构的协同设计上,该方案在软件层面提出了标记自适应激活量化(Token-wise Adaptive Activation Quantization, AAQ)策略,通过充分挖掘 PPM 激活值中独特的标记特性(如距离图模式,其表现为标记间方差大而通道间方差小),实现无需牺牲预测精度的细粒度动态量化与异常值处理;在硬件微架构实现上,LightNobel 集成了多精度可重构矩阵处理单元(RMPU)和多功能向量处理单元(VVPU),以此提供对 AAQ 量化流程的高效硬件支持。得益于这些软硬件创新,LightNobel 成功将 PPM 的峰值内存需求最高降低了 120.05 倍,实现了超长序列蛋白质的扩展性处理;在性能表现上,该架构相比于目前先进的 NVIDIA A100 和 H100 GPU,分别实现了高达 8.44 倍和 8.41 倍的模拟加速,同时在能效比上分别提升了 37.29 倍和 43.35 倍,以极低的精度损失显著打破了蛋白质结构预测模型的序列长度瓶颈。
在算法与架构的协同设计上,该方案在软件层面提出了标记自适应激活量化(Token-wise Adaptive Activation Quantization, AAQ)策略,通过充分挖掘 PPM 激活值中独特的标记特性(如距离图模式,其表现为标记间方差大而通道间方差小),实现无需牺牲预测精度的细粒度动态量化与异常值处理;在硬件微架构实现上,LightNobel 集成了多精度可重构矩阵处理单元(RMPU)和多功能向量处理单元(VVPU),以此提供对 AAQ 量化流程的高效硬件支持。得益于这些软硬件创新,LightNobel 成功将 PPM 的峰值内存需求最高降低了 120.05 倍,实现了超长序列蛋白质的扩展性处理;在性能表现上,该架构相比于目前先进的 NVIDIA A100 和 H100 GPU,分别实现了高达 8.44 倍和 8.41 倍的模拟加速,同时在能效比上分别提升了 37.29 倍和 43.35 倍,以极低的精度损失显著打破了蛋白质结构预测模型的序列长度瓶颈。