N步跑通CANNJudge算子竞赛提交流程:平台全流程实战指南

发布时间:2026/10/20 1:14:35
N步跑通CANNJudge算子竞赛提交流程:平台全流程实战指南 N步跑通CANNJudge算子竞赛提交流程平台全流程实战指南【免费下载链接】cann-learning-hubCANN 学习中心仓支持在线互动运行、边学边练提供教程、示例与优化方案一站式助力昇腾开发者快速上手。项目地址: https://gitcode.com/cann/cann-learning-hub你注册好了 CANNJudge 账号打开平台却不知从哪条命令下手登录走哪种方式工程模板下回来先改哪个文件提交后卡在 Running 还是 Pass 该信哪个这篇指南带你把登录 → 取题 → 写码 → 提交 → 查分这条链路完整走一遍每步都给出可执行的命令、成功判据和典型卡点。工具与脚本在仓库的 skills/cannjudge-submit/ 目录需要在线开发环境时可先拉下仓库再动手git clone https://gitcode.com/cann/cann-learning-hubCANN 为这类算子竞赛提供编译、运行与评测底座你写的 Kernel 最终跑在 AI Core 上Host 侧逻辑负责切分与调度。理解算子在软件栈中的位置能帮你判断报错发生在哪一层。第一次提交怎么做4 步跑通最短路径第一次提交不必追求性能目标是走通闭环。下面 4 步全部可用命令行完成每步附做对了的判据。登录。在你实际要执行下载和提交的 Linux 主机上运行python3 cannjudge_cli.py login --account youremail.com密码在终端隐藏输入。判据命令结束后~/.cannjudge/session.json出现权限 600之后执行info等命令不再要求账号。看题。用题目链接或 ID 查看规格python3 cannjudge_cli.py info --problem-id add判据能读到code_template字段、dtype 列表和算子原型且与你页面看到的题目一致。公开题目的info/download/--dry-run预检不需要本地登录私有资源仍走服务端鉴权。取工程。把模板下载到新目录下载器拒绝覆盖已有工程所以务必换新目录python3 cannjudge_cli.py download --problem-id add --output ./add-work判据目录下出现完整工程和.cannjudge-project.json元数据能看清哪些文件可编辑。预检并提交。改完源码先预检再正式提交python3 cannjudge_cli.py submit --problem-id add --project-dir ./add-work/project --dry-run python3 cannjudge_cli.py submit --problem-id add --project-dir ./add-work/project --no-wait python3 cannjudge_cli.py query --submission-id ID判据--dry-run列出拟提交文件和 SHA-256 且无报错正式提交返回 submissionId查询终态出现Pass兼容旧状态Accepted即算跑通。主线工作流登录、取题、提交、查结果怎么串 最短路径只覆盖 happy path这一节把每个环节的输入、输出和真实卡点讲清楚。登录三种方式与两种会话坑默认用终端隐藏输入登录最省事。拿不到交互终端比如通过 Agent 远程操作时改用 RSA 密文方式python3 generate_key.py python3 encrypt_password.py --public-key public.pem python3 cannjudge_cli.py login --email youremail.com --ciphertext RSA密文 --private-key private.pem原理是私钥留在开发机、公钥加密后的密文可以反复使用——只要private.pem不重新生成同一份密文一直有效。详细说明见 references/rsa-login.md。两种会话坑先说在前面会话默认存~/.cannjudge/session.json有效期最长 7 天服务端可能提前使其失效报 401 就清除旧会话重新登录报 403 先检查题目和小组权限别急着反复重试。Windows 上的 DPAPI 会话搬不到 Linux 复用必须在执行提交的那台主机、那个系统账号下重新登录。多账号切换时把--session-file PATH放在子命令之前隔离会话。取题链接比 ID 更稳--problem-id和--problem-url都支持。建议优先贴完整链接CLI 会按小组、比赛、题目逐层解析作用域同名题不会选错。下载拿到的是真实 ZIP 工程包同时读取/template元数据生成不含凭据的模板清单。开发两种工程结构别混淆code_template是分流依据--project-type auto为默认不要凭目录名猜题目类型工程类型你改什么提交内容传统算子工程op_host与op_kernel下的可编辑文件tiling_h、tiling_key_h、host_cpp、kernel_cpp 四字段npu_kernel_dev核函数工程模板中标记 editable 的文件如kernel.ascfiles: [{path, content}]数组传统工程的标准目录长这样各文件职责如下code/ ├── op_host/ │ └── {op}.cpp # TilingFunc、InferShape、InferDataType └── op_kernel/ ├── {op}_tiling.h # Tiling 数据结构 ├── tiling_key_{op}.h # TilingKey 多核切分可选 └── {op}.cpp # Kernel 计算主体核函数题没有 op_host/op_kernel 这层目录模板里只有可编辑的kernel.asc内含run_kernel入口和一批只读文件CMakeLists.txt、main.asc、data_utils.h、scripts/等。接口签名、dtype 编码每次都从当次在线模板读不同题目不同见 references/kernel-project.md。两条开发铁律平台不开放测试用例 API。你能拿来做本地验证的是下载包内的公开数据不要尝试探测隐藏用例。只实现题目规定的 dtype、shape 和属性。不无条件补类型、不加无关转换多写不等于多对。提交先预检再上线提交动作本身很简单卡点几乎都出在预检阶段。CLI 会做四类检查只读模板文件被改动、可编辑源码缺失、元数据里的 problem_id 与目标不一致、路径越界——任何一条不满足就中止而不是偷偷忽略。python3 cannjudge_cli.py submit --problem-url 题目链接 --project-dir ./add-work/project --dry-run python3 cannjudge_cli.py submit --problem-url 题目链接 --project-dir ./add-work/project python3 cannjudge_cli.py query --submission-id ID python3 cannjudge_cli.py rank --problem-id ID--dry-run只显示文件列表和 SHA-256不发送源码默认提交后等待 120 秒轮询可用--max-wait调整--no-wait则立刻返回 ID 供你回头分次查询。传统工程下CLI 会自动从工程里挑出*_tiling.h、可选tiling_key_*.h、op_host/*.cpp、op_kernel/*.cpp组装提交内容匹配到多个候选文件时会停手让你确认避免误选。平台侧会把你的源码放到真实硬件上编译、运行并逐测试点评判。所以本地 CPU 静态检查通过不等于 NPU 通过只有平台返回Pass且所有测试点通过才算完成。接入方式怎么选题目默认值怎么读 ⚖️两个最容易分叉的决策放一起讲用哪种方式接入以及怎么读题。接入方式对比方式适合谁优势注意点CLI日常手工提交一条命令一个动作会话自动复用密码终端隐藏输入别写进脚本和命令历史RSA 密文登录远程/Agent 无法开交互终端密文可反复用私钥不出机器多一步pycryptodome依赖密钥丢了旧密文即失效Python SDK批量脚本或自动化流程细粒度控制每一步返回值凭据走运行时变量不打印完整登录响应SDK 最小链路长这样依赖与 CLI 相同from cannjudge_cli import CANNJudgeClient client CANNJudgeClient() if not client.load_session(): client.login(account, password) client.save_session() problem client.resolve_problem(题目链接或ID) folder client.download_package(problem[_id], ./add-work, include_metadataTrue) # 在 folder 内完成可编辑源码后 payload client.prepare_submission(problem[_id], folder) sid client.submit_payload(payload) print(client.wait_for_result(sid))默认值与边界错误做法 vs 正确做法读题时参考算子的行为定义必须查官方文档并动手验证凭直觉是 Wrong Answer 的最大来源。对照表如下决策点错误做法正确做法默认参数语义按字面值实现比如把min0, max0当成范围 [0,0]查文档并本地跑一遍参考算子它可能表示自动计算数据范围维度处理直接GetDim(0..3)按 4D 写死用GetDimNum()动态读秩循环求 totalLength数据类型只实现 float32 一条路径用模板参数覆盖题目要求的全部 dtype尾部对齐整块 DataCopy尾部数据越界32 字节对齐拷贝加尾部回补边界输入空张量、单元素直接跳过显式覆盖并定义行为后再提交属性同理axis-1是最后一维keepdims决定输出秩这些都要进你的实现分支而不是只在样例里碰巧对。状态码怎么看Wrong Answer 往哪查 状态对照表状态含义你的动作Pass/Accepted全部测试点通过记录 submissionId去rank看名次Running评测执行中不是终态稍后重查或用--no-wait分次查询Wrong Answer部分用例数值不对按下面顺序排查Compile Error源码没编过先修编译别急着猜数值Runtime Error运行期异常查越界访问、空指针、stream 使用超时未在时限内完成查极端 shape 下的死循环或切分粒度过细Wrong Answer 的排查顺序先读平台msg和每个测试点的testcase_status把失败用例分成几类别笼统归因精度问题。看precision_ratio接近 1.0 却没达标十有八九是 float16 边界量化——参考算子在 half 上的取整行为和你不一致。按 dtype → 维度 → 属性 → 边界的顺序二分定位每轮只动一个变量。平台precision_ratio原样引用即可不要把新字段硬套旧语义时间单位以页面评测说明为准。正确性之后的性能方向多核切分把数据按availableCoreNum合理切到多核切分策略写进 TilingKey。减少 global memory 往返能放 local 的不反复读 global合并碎拷贝。向量化搬运按 32 字节对齐组织数据向量指令吃满带宽。计算与搬运重叠double buffer 让 DataCopy 和计算流水线化。原则不变正确性不达标时一切性能动作让路。提交前自查清单- [ ] 算子原型、接口签名与当次模板一致不同题目不同不复用旧题签名 - [ ] dtype、shape 范围严格等于题目规定没有私自扩展 - [ ] 参考算子的默认值已查文档并用 Python 对照验证 - [ ] 维度动态读取无 2D/4D 硬编码 - [ ] 尾部对齐有显式处理非对齐输入不越界 - [ ] 空输入、单元素、极值输入的行为已定义 - [ ] 只读模板文件未被改动无多余 main 或凭据文件混入 - [ ] submit --dry-run 预检通过文件列表与预期一致 - [ ] 下载包内公开数据本地验证通过 - [ ] submissionId 已记录失败可断点续查精选 FAQQ1为什么info、download、--dry-run有时不用登录这些命令走的是公开资源接口服务端只按资源本身鉴权涉及私有数据时才需要有效会话。Q2网络超时后我能直接重发一次提交吗不能盲目重发。先查询该账号在该题目的既有提交记录确认上一次是否已被受理、拿到 submissionId再决定是否需要重新 POST。Q3平台为什么不开放测试用例 API目的是逼你写泛化实现而不是对样例过拟合。本地验证就用下载包内的公开数据公开测试点全过也不代表所有规格边界都实测到交付时把这一点写清楚。Q4RSA 密钥丢了密文还能用吗不能。generate_key.py重新生成后旧密文用新私钥解不开只能重新加密如果当时还保留终端隐藏输入这条通道也可以直接改走它。下一步动作登录 CLI挑一道基础算子题如 Add走通下载 → 预检 → 提交闭环把 submissionId 记下来。建一张题目速查表签名、dtype、CANN 版本、精度要求逐题登记——同一平台不同题的规格差异是混用代码的主要事故源。养成--dry-run先行的习惯拿到失败结果后按msg 分类 → 单变量修复 → 全量回归的节奏迭代不要一次改多处。用rank --problem-id对照当前榜单定位自己的耗时差距再决定下一轮优化投在多核切分还是内存流水上。【免费下载链接】cann-learning-hubCANN 学习中心仓支持在线互动运行、边学边练提供教程、示例与优化方案一站式助力昇腾开发者快速上手。项目地址: https://gitcode.com/cann/cann-learning-hub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询