赛事官网->https://openoperator.cn
此仓库是openoperator赛事举办方提供的模板仓库。选手可以直接Fork此仓库作为自己队伍的仓库。
- Fork此仓库
- 点击
settings->webhooks->Add webhook,配置webhookPayload URL填写http://152.136.18.42:8000/webhookContent type选择application/jsonSecret填写分配到的密钥(参赛信息收集完成后会分发随机的webhook secret)SSL verification选择DisableWhich events...选择Just the push event- 勾选
Active - 点击
Add webhook
- Clone仓库,随便在README.md中写点什么
- 使用
git push将修改推送到github,恭喜你完成了第一次代码提交! - 点开
xx Commits提交记录页面,边刷新边等待一会,如果系统此时不太忙碌,大约1~3分钟后你就可以在该次提交的评论处看到系统反馈的结果和运行日志。
配置好webhook后,当仓库发生push操作,github会向远程服务器发送提交信息。远程仓库检查webhook secret有效性后,拉取仓库更新,执行评估脚本。无论结果如何,执行结束后该次commit评论区会收到日志。如果该次提交的某道题目跑分优于你在该道题目上的历史最好成绩,排行榜的该道题目成绩会更新(排行榜检查是否有新的最好成绩的间隔为5分钟)。
提交时仓库根目录需要包含config文件和题目的mlu代码文件。文件组织结构如下
.
├── config # 配置文件,用于指定要评估的题目
├── LeakyReLU.mlu # bangc代码文件,必须包含kernel函数定义和用于外部程序调用的函数定义
├── ... # 其他题目的bangc代码文件
└── README.md # 可选的代码说明Note
通过config文件可以指定本次提交想要评估的题目范围
config文件的每行代表一个题目,应按照题目序号的三位数字给出
例如,LeakyReLU的序号是001,为了评估LeakyReLU题目,config中必须包含一行001
Tip
每道题目的评估耗时预计不少于30s,评估系统评估完所有题目后才会返回结果,请合理安排评估请求,尽量不要一次性评估太多题目。
Caution
如果提交中不包含config文件,则会默认评估所有题目!
- 代码文件必须以题目名称命名,这是评估脚本能找到你代码的关键要求。
- 代码中要覆盖头文件引用,核函数定义和用于外部调用的函数定义。
- 用于外部调用的函数名必须设置为bang_func,bang_func的返回值为
torch::Tensor,输入参数包含torch::Tensor input和参考代码中__init__部分定义的其他参数,请参考LeakyReLU示例进行理解。
题目按照类别分为basic,easy,medium,hard。其中basic是必做题,其他类为挑战题。
打分有两个指标:
- 算子结果必须与参考结果误差不大于1e-2,精度达标后性能评估结果才有效
- 性能分数按照
bangc代码硬件时间相对于torch的执行时间赋值
- 每次只评估少量题目
- 尽量在调试服务器debug,远程评估时通过阅读commit评论中的报错进行debug
- 系统只接收
main分支的提交,所以请分时开发或者做好分支管理 - github评论是执行结束第一时间更新的,排行榜是周期性更新的,且只会记录团队历史最好成绩