为方便大家做题,比赛所有赛题均会放置到 git 仓库,可以一键 clone 所有赛题源码,对于之后放出的赛题/做出的题目修改可以使用 git pull 方便的同步。
本次将在2个平台上放出赛题:
上海交通大学高性能计算综合能力竞赛(HelloHPC)是以科学计算与人工智能应用优化的入门向竞赛。
比赛面向全校同学开放,追求零基础入门、题目难度具有梯度,致力于让完全没接触过高性能计算的新生和具备一定专业基础的同学都能享受比赛,在学习的过程中有所收获。
比赛是个人赛,我们为零基础小白准备了入门指南。同时我们为大家准备了丰厚的奖金,欢迎大家报名参赛!
- 宣讲会:2025年9月19日
- 签到题放出 & 交我算账号分发:2025年9月20日12:00
- 正式比赛:2025年9月23日12:00 - 9月30日12:00
- 颁奖典礼:2025年10月,具体时间另行通知
注:
- 交我算账号将在选手完成签到题后获得
- 我们将于正式比赛开始前3天放出签到题,参赛者完成签到题后即可获得分发的交我算账号,参赛者可以提前登录交我算熟悉做题环境
- 我们将通过报名人数计算所需准备的交我算账号数量,仅保证所有在正式比赛开始前完成报名的选手能够在完成签到题后得到账号;正式比赛开始后报名仍然开放,但如果出现交我算账号不足的情况需要等待人工申请分配
仅上海交通大学全日制在校生有获奖资格
为给低年级的同学提供更多的获奖机会,提高低年级同学参与积极性。我们将大一到大三划为低年级组,大四与硕博生划为高年级组,分开进行评奖。
目前不同年级组的奖项分配为按照经验人数比计算得出的,可能会变化,我们将在正式比赛开始前确定分配比例
低年级组
- 一等奖 2 名: 奖金 3000 元、获奖证书、纪念T恤衫一件
- 二等奖 4 名: 奖金 1500 元、获奖证书、纪念T恤衫一件
- 三等奖 8 名: 奖金 600 元、获奖证书、纪念T恤衫一件
- 新生特别奖 4 名: 奖金 300 元、奖品《深入理解计算机系统(CSAPP)》、获奖证书、纪念T恤衫一件
高年级组
- 一等奖 1 名: 奖金 3000 元、获奖证书、纪念T恤衫一件
- 二等奖 2 名: 奖金 1500 元、获奖证书、纪念T恤衫一件
- 三等奖 5 名: 奖金 600 元、获奖证书、纪念T恤衫一件
说明:
- 不同组按照自己所在组的排名发放奖金。例如低年级组中一等奖发放给1~2名,二等奖发放给3~5名
- OJ平台设有低年级组榜和高年级组榜,如果发现自己被划分到错误榜请联系组委会或私戳校内赛咨询群管理员
- 高年级组的对应奖项的分数线不低于低年级组的对应奖项
- 例如高年级组第一名按计划应得一等奖,但如其分数低于低年级组一等奖分数线则降级为发放二等奖,如仍低于二等奖分数线则降级为发放三等奖,依次类推
- 注:降级发放仅占用原奖项名额不占用降级后奖项的名额。例如若高年级组一等奖降级到二等奖,且二等奖无需降级则此时高年级组会发放三个二等奖
- 新生特别奖仅发放给大一的同学,获得一二三等奖的同学无新生特别奖获奖资格。新生特别奖将发放给大一学生中未获得一二三等奖的前三名
比赛前两名直通【九坤(北京)投资有限公司】实习面试,免笔试!
本次比赛将作为上海交通大学Xflops超算队第一轮考核的成绩,比赛成绩优异者将进入面试环节。
- 比赛得分超过100分,可获得2个劳动学时
- 比赛得分超过200分,可获得4个劳动学时
在正式做题之前,强烈建议先阅读一遍比赛规则
- 不得作弊。比赛为个人赛,任何多人合作完成题目的行为都将被认为作弊。我们将进行代码查重,希望大家诚信参赛。
- 不得使用恶意代码注入等方式对评测与 OJ 进行攻击。本考核不是 CTF,不考察任何形式的攻击。如果我们发现任何攻击行为,将取消参赛成绩。
- 不得打表。超算比赛要求保证优化后源码的正确性与普适性。如果我们发现你的代码中基于给出的示例算例打表,将取消参赛成绩。同时我们在评测时会适当修改示例算例中的部分数据。
- 使用计时计算性能的题目均给出了明确的计时阶段,不得通过使用编程语言的异步等特性将原处于计时段的计算过程移动到计时段外以减小运行时间。
- 可以使用搜索引擎与 AI 辅助答题,但请确保自己已经充分理解了所提交的每一行代码的含义。
- 请不要在登录节点上运行并行编译或并行计算等高负载程序。交我算平台设有相应检测,如因在登录节点上进行运行高负载程序导致封号后果自负。
- 比赛分发的交我算账号仅用于参加本次比赛,请勿滥用交我算平台计算资源,一经发现,立即封号。
- 比赛结束后组委会将进行 Code Review,如发现违规行为将进行处罚,排行榜名次可能发生变动。请确保你上传的代码是开发的原始代码,严禁上传编译后/混淆后的代码阻碍 Code Review。恶意阻碍、拒不配合 Code Review 者将取消参赛成绩。
下述排序仅为所用核心数和字典序排序,不代表题目实际难度排序。请自行评估难度并选择合理的解题策略
| 题目 | 总分 | 所需核心数 |
|---|---|---|
| HelloHPC | 10 | - |
| 小交问答 | 100 | - |
| Masked Bitmatrix Density | 120 | 1 |
| 小K的海洋模拟 | 100 | 4 |
| Calculation | 120 | 8 |
| 魔咒筛选器 | 100 | 8 |
| Amazing LLM | 150 | 32 |
| Graph500 Benchmark | 100 | 128 |
| Rope Net Simulation | 100 | 128 |
| 成为天气之子 | 100 | 128 |
每题的核心与内存配比均为 1950M(部分题目叙述时为了简化可能会按照 2G 计算)
每道题目均设有 submit.py 供选手生成提交文件,通常来说运行 python submit.py 即可生成提交文件。部分题目可能有拓展的用法将在题目的 readme 中介绍。
评测机设有严格的提交文件检查,请确保你使用了赛题自带的脚本生成提交文件
每道题均要求提交
writeup.md阐述你的做题思路,比赛中上传评测机时可以提交空文件或不提交此文件,但请确保你的最后一次提交附带了正确的writeup.md,赛后进行 Code Review 时如发现提交空writeup.md或阐述内容与题目完全不符本题得分将清零
每道题均为大家设置了自测脚本 evaluate.py,用于帮助大家自测目前的做题与得分情况。
请注意:
- 运行脚本时请在
evaluate.py所在文件目录下运行 - 运行脚本的评分仅作参考,最终得分以Xflops超算队的测试结果为准
- 如果你的环境缺少
pyyaml库运行脚本时会报错,可以运行pip install --force-reinstall pyyaml安装(注意,部分节点系统中带有pyyaml库,如不加入--force-reinstall将会识别到库已存在跳过安装)
比赛设置 kp_run 和 kp_interact 两个队列供参赛选手使用。
该队列用于运行所需核心数较多的(>8核心)的试题,队列最长运行时间为2h,允许申请的最大的核心数量为128核心,仅允许使用1个节点。
该队列用于使用 VSCode 连接计算节点开发以及交互式操作测试核心数较少的(<=8核心)题目,队列最长运行时间为8h,允许申请的最大核心数量为8核心,仅允许使用1个节点。
推荐使用 kp_interact 队列进行 VSCode 连接,用于交互式开发与代码测试。对于需要较多核心数运行的题目,编写 slurm 脚本并使用 sbatch 提交到 kp_run 队列运行。
再次提醒,不要在登录节点上进行 VSCode 连接做代码开发,语法解析器可能导致高负载占用。交我算平台设有登录节点运行程序负载检测,如因在登录节点上进行运行高负载程序导致封号后果自负。
比赛集群的详细文档可参考:
- HPC入门指南-登录交我算集群: 给出了校内赛时在交我算集群开发的最佳实践建议
- 交我算官方文档:交我算集群配置介绍、slurm 使用方法等
上述两个队列申请时均需要加入-q <队列名称>进行申请,例如:
salloc -N 1 -n 8 -p kp_interact -q kp_interact --time=2:00:00 # 在kp_intercat队列上申请单节点8核心的任务,限时2小时- 所有的试题中给出的命令指导均假设当前命令行环境拥有足够的资源量,实际上你当前命令行环境可能并没有足够的资源量(例如在 kp_interact 队列开发时你至多申请到8个核心),请自行编写 slurm 脚本并使用
sbatch提交到 kp_run 队列以申请到足够多的资源量运行命令。 - 如遇到
readme中的关于试题评测方法的自然语言描述存在歧义的情况,请根据evaluate.py源码的实现逻辑为准,如你确信evaluate.py的实现逻辑存在问题,请向我们反馈。 - 如发现题目/OJ中存在问题或安全漏洞欢迎向我们反馈(请给出问题的复现方法),我们将向你公开表示感谢。
- 请注意行尾序列,所有题目分发的附件与题目仓库的所有文件均为 LF 行尾序列,在使用 VSCode 进行编辑时可在右下角栏查看并确认。文本文件经过 Windows 系统可能自动转为 CRLF 行尾序列,这将导致部分脚本(.sh)运行异常,如发现你的文本文件为 CRLF 行尾序列,请更改为 LF 行尾序列再运行脚本。
- 请注意及时备份你的文件,错误的运行脚本可能将导致你的数据丢失。如因错误运行脚本数据丢失无法恢复,后果自负。
- 比赛的所有题目均预期你在 Linux 系统运行,所有命令行均假设你在 Bash 上运行,如在其他系统/其他终端上运行可能出现意外情况。