PAC 2025 | 优化赛道初赛【题一:DGEMM算子优化】
DGEMM赛题简介
DGEMM(Double-precision General Matrix Multiply)是BLAS(Basic Linear Algebra Subprograms)标准库中的一个核心函数,用于计算双精度浮点数(FP64)的通用矩阵乘法。它是科学计算、深度学习、工程仿真等领域中最基础且关键的高性能算子之一。
赛题说明
1. 已提供GemmTest工具
源码路径径:/home/PAC/gemm_test.tar.gz,解压到个人目录下即可
2. 编译
修改Makefile文件中相关配置,执行make all生成dgemmbench程序
3. 运行./dgemmbench ,分别计算四组数据的结果:
./dgemmbench -m 12349 -n 140 -k 3040 -c 1
./dgemmbench -m 24698 -n 8 -k 3040 -c 1
./dgemmbench -m 256 -n 3040 -k 3040 -c 1
./dgemmbench -m 3040 -n 16 -k 12349 -c 1
注:矩阵m, n, k为: (12349,140,3040), (24698,8,3040), (256, 3040, 3040), (3040,16,12349)
4. 计算资源使用单个NUMA(38核)
5. 精度指标
与refblas(测试套中提供,教科书算法)的残差小于50,残差计算公式参考开源BlasTester,具体计算方法已在代码中提供,参考test/gemmtest.cpp
6. 提交脚本参考(必须使用脚本提交到计算节点运行)
#!/bin/bash
#DSUB --mpi hmpi
#DSUB -nn 1 节点数
#DSUB -R 'cpu=38;mem=256000' 申请38核,内存256G
#DSUB -x job 作业节点独占
#DSUB -oo test.out
#DSUB -eo test.err
source /home/HPCKit/latest/setvars.sh
./dgemmbench -m 3040 -n 16 -k 12349 -c 1
撰写脚本之后dsub -s sub.sh提交
djob -l 作业号查看作业运行情况,查看*.out相关文件确认结果,正确输出如下:
7. 残差
残差如果大于50,会报错,需重新调整方法控制误差在50以内
8. 赛题一不允许使用MPI,最大可用核心数为38
9. Makefile
可根据最终的编译器和编译选项修改
10. 提交版源码、Makefile、编译环境、运行说明放在账号家目录result_1下,保留运行截图等确保数据可复现
11. 平台登录方式(可在网盘中下载)
见下方网盘地址
作业提交内容
1. 提交内容
- 最终优化后的源代码
- 编译环境说明及Makefile文件配置
- 最终的*.out作业日志
- 技术报告PPT(使用组委会统-PPT模板并添加录音,时长5分钟)
2. 说明
- 新建目录mkdir ~/result_1。源代码、Makefile配置文件及*out结果文件放置在result_1路径下,由于机器不支持下载,该部分文件需保存在服务器上
- 技术报告PPT及编译环境说明等需上传至网盘
评分规则
1. 编程语言:C/C++,汇编,intrinsics。推荐使用KUPL.mma模板库与KUPL.memcpy数据搬移模块
2. 编译器:可以使用gcc, 毕昇编译器(推荐毕昇编译器)
3. 评分标准:取四次测试的Flops总和,Flops值越高,成绩越好
账号申请&作品提交
1. 账号申请
- 组队完成后,团队所有上机实操成员(不含指导老师)下载网盘中的“个人保密承诺书”并签署确认
- 添加组委会“Paraedu2013”或“Paraterazhangna”微信,将签署后的“个人保密承诺书”以照片或者扫描的形式的回传,回传承诺书时,请注明团队名称或编号
- 每个团队共用一个账号,2个工作日内,工作人员会将账号开通完成,请及时关注邮箱
2. 作品提交方法
- 各队需在7月20日前由其中1名队员通过官网个人主页(官网链接:www.pac-hpc.com)提交参赛作品及相关文件的网盘链接和提取密码。
- 作品提交截止前,各队可对程序随时修改,并在原路径更新提交参赛程序,组委会默认以最新提交内容为准。逾期未提交的队伍视为弃赛。
3. 作品提交模板(百度网盘):
下载地址:https://pan.baidu.com/s/11Kjktz4ic-PhCFZU-EhyPA 提取码: PAC5
官方通知
2025/6/26
2025/6/9
2025/6/9
2025/5/22
2025/6/6
2025/4/15
2025/3/6
2024/10/23
2024/10/23
2024/9/30
2024/8/22
2024/7/24
2024/7/12
2024/6/22
2024/4/26
2022/7/7
2022/5/7
2021/10/27
2021/9/2
2021/8/23
6月09