初始提交:PreSpeed DSL 编译器(编译原理,大三上)
编译原理(大三上)课程大项目:一门用于描述并行程序最优并行度预测任务的 YAML 声明式 DSL,配套完整编译器与深度学习预测流水线。
高性能计算场景下,准确预测并行程序的最优并行度依赖深度学习模型,但使用门槛高,需要手工做特征工程、模型调用与数据融合。本项目设计并实现 PreSpeedDSL:用户只需在 YAML 中声明”分析什么程序(Program)、在什么平台上(Platform)、要做什么(Task)”,编译器即可完成词法/句法解析、编译期语义验证(类型检查、搜索范围逻辑一致性、平台配置完整性)、基于平台知识库的上下文参数推断,最终翻译为一个可直接执行的 Python 推理脚本。
语言支持两种任务语义:PREDICT(在指定搜索范围内预测最优并行度)与 ANALYZE(输出指定并行度下的中间特征向量);支持用 --- 分隔的多任务批处理聚合编译。整体流水线分五阶段:输入验证、汇编特征提取(参考 asm2vec 思路)、数据转换、样本生成、目标脚本生成。
PREDICT
ANALYZE
---
prespeed_dsl/
prespeed_dsl_compiler.py
python prespeed_dsl_compiler.py <dsl.yaml> <asm文件>
test_cg_task1/2/3.yaml
cg_test_output/
test_cg_*_compiled/
all.py
.pth
model1_prediction.py
model2_prediction.py
combine_features.py
utils.py
test_validation.py
test_validation_detailed.py
mod1in/
mod1out/
environment.yml
prespeed
AGENTS.md
CLAUDE.md
Usage.txt
projdevplam.txt
依赖(见 environment.yml):Python 3.8、PyTorch 2.4、NumPy、Pandas、Scikit-learn、PyYAML、joblib 等。
# 1. 创建并激活环境 conda env create -f environment.yml conda activate prespeed # 2. 编译并执行 DSL(三个测试任选) python prespeed_dsl_compiler.py test_cg_task1.yaml ./asm2vec/NPB_s/CG.s python prespeed_dsl_compiler.py test_cg_task2.yaml ./asm2vec/NPB_s/CG.s python prespeed_dsl_compiler.py test_cg_task3.yaml ./asm2vec/NPB_s/CG.s # 3. 重训模型(可选) python all.py
注意:运行前需自备 ./asm2vec/NPB_s/CG.s 等汇编输入文件;两个预训练权重 best_agg_time_generator.pth、best_full_mtpip_model.pth 与 processed_data/ 下的 scaler(pkl)体积较大,未随仓库分发,可由 all.py 重新训练生成。asm2vec 包不可用时流水线会退化为 dummy 特征矩阵。
./asm2vec/NPB_s/CG.s
best_agg_time_generator.pth
best_full_mtpip_model.pth
processed_data/
prespeed_dsl/processors/asm_processor.py
编译原理大项目:自研 DSL 编译器与预测模型流水线(parser/pipeline/backend/processors)
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
PreSpeed DSL 编译器
任务背景
高性能计算场景下,准确预测并行程序的最优并行度依赖深度学习模型,但使用门槛高,需要手工做特征工程、模型调用与数据融合。本项目设计并实现 PreSpeedDSL:用户只需在 YAML 中声明”分析什么程序(Program)、在什么平台上(Platform)、要做什么(Task)”,编译器即可完成词法/句法解析、编译期语义验证(类型检查、搜索范围逻辑一致性、平台配置完整性)、基于平台知识库的上下文参数推断,最终翻译为一个可直接执行的 Python 推理脚本。
语言支持两种任务语义:
PREDICT(在指定搜索范围内预测最优并行度)与ANALYZE(输出指定并行度下的中间特征向量);支持用---分隔的多任务批处理聚合编译。整体流水线分五阶段:输入验证、汇编特征提取(参考 asm2vec 思路)、数据转换、样本生成、目标脚本生成。内容结构
prespeed_dsl/prespeed_dsl_compiler.pypython prespeed_dsl_compiler.py <dsl.yaml> <asm文件>test_cg_task1/2/3.yamlcg_test_output/、test_cg_*_compiled/all.py.pth权重与 scalermodel1_prediction.py、model2_prediction.pycombine_features.py、utils.pytest_validation.py、test_validation_detailed.pymod1in/、mod1out/environment.ymlprespeed完整依赖清单AGENTS.md、CLAUDE.md、Usage.txt、projdevplam.txt运行方法
依赖(见
environment.yml):Python 3.8、PyTorch 2.4、NumPy、Pandas、Scikit-learn、PyYAML、joblib 等。注意:运行前需自备
./asm2vec/NPB_s/CG.s等汇编输入文件;两个预训练权重best_agg_time_generator.pth、best_full_mtpip_model.pth与processed_data/下的 scaler(pkl)体积较大,未随仓库分发,可由all.py重新训练生成。asm2vec 包不可用时流水线会退化为 dummy 特征矩阵。来源声明
prespeed_dsl/processors/asm_processor.py通过 PYTHONPATH 调用它,缺失时自动降级。test_cg_*_compiled/、cg_test_output/为本仓库代码生成的产物示例;mod1in/、mod1out/为课程实验提供/派生的特征数据。