使用案例¶
本指南专注于鹤思中最常见的日常工作流程,并从作业提交到结果检索逐步讲解每个场景。对于专门或大规模工作负载,请参考"下一步"部分链接的高级指南。
用例 1:基础批处理作业¶
场景:在单个节点上运行简单的计算任务。
任务描述¶
您有一个处理数据并将结果输出到文件的脚本。这是批处理最常见的用例。
步骤 1:准备脚本¶
创建名为 simple_job.sh 的文件:
#!/bin/bash
#CBATCH --job-name=simple_test
#CBATCH --partition=CPU
#CBATCH --nodes=1
#CBATCH --ntasks-per-node=1
#CBATCH --cpus-per-task=1
#CBATCH --mem=100M
#CBATCH --time=0:05:00
#CBATCH --output=job_%j.out
# 打印作业信息
echo "作业开始时间: $(date)"
echo "运行节点: $(hostname)"
echo "作业 ID: $CRANE_JOB_ID"
# 模拟一些计算工作
echo "正在处理数据..."
sleep 5
echo "数据处理完成!"
# 打印作业完成信息
echo "作业结束时间: $(date)"
步骤 2:提交作业¶
预期输出:
步骤 3:检查作业状态¶
或查看你的所有作业:
步骤 4:查看结果¶
作业完成后,查看输出文件:
用例 2:交互式会话¶
场景:需要在计算节点上交互式地测试代码或调试应用程序。
任务描述¶
不提交批处理作业,而是直接申请计算节点的交互式资源并进入命令行。
步骤 1:申请交互式会话¶
这将分配: - CPU 分区的 1 个节点 - 2 个 CPU 核心 - 500 MB 内存 - 1 小时时间限制
步骤 2:交互式工作¶
连接后,你会在计算节点上看到 shell 提示符:
# 查看当前位置
hostname
# 查看分配资源
echo $CRANE_JOB_NODELIST
# 运行你的命令
python test_script.py
./my_program --input data.txt
# 完成后退出
exit
退出时资源会自动释放。
常见模式¶
查看作业历史¶
作业完成后,使用 cacct 查看作业统计:
# 查看你最近的作业
cacct --user $USER --starttime $(date -d "7 days ago" +%Y-%m-%d)
# 查看某个作业详情
cacct --job <job_id>
取消作业¶
资源效率¶
查看作业对分配资源的使用效率:
提示与最佳实践¶
- 从小开始:先用最小资源测试,再逐步扩大
- 设置准确的时间限制:高估浪费资源,低估会导致作业被取消
- 使用作业名称:便于在队列中识别
- 监控资源使用:作业完成后用
ceff优化后续提交 - 错误处理:建议单独指定
--error文件以捕获错误输出 - 检查点:长作业建议实现 checkpoint 以便故障恢复