runshell 任务投递
runshell是将计算任务投递到本地服务器、SGE集群、Slurm集群上运行的命令,可用于本地计算资源不足的情况下,利用集群资源来进行任务分析。runsge 命令功能与之完全一致。
注:早期版本中的
runbatch命令和阿里云 BatchCompute 功能已移除。当前版本使用runshell替代runbatch进行本地和集群任务投递。
shell任务格式
runshell 批量投递任务,将 shell 脚本中的每一行命令作为一个任务并行投递到计算资源中。
shell脚本格式如下:
echo hello // -c 1 -m 1G --mode sge -q all.q
echo world
wait
echo end
每一行命令作为一个任务投递,每个任务支持
//后添加资源限定。wait关键字会阻塞当前任务投递过程,等待之前的所有任务运行完成后才投递后续行。需要注释的行可使用
#。
行级任务资源限定
脚本中每行任务可通过 // 符号后添加参数选项来覆盖该行任务的配置:
参数 |
描述 |
|---|---|
-c/–cpu |
该行任务申请的CPU资源 |
-m/–memory |
该行任务申请的内存资源 |
-q/–queue |
该行任务的SGE/Slurm队列 |
-N/–jobname |
该行任务名称,不要以数字开头 |
–mode |
该行任务运行方式: |
–node |
该行任务指定运行的节点 |
localhost运行的任务不需要指定运行资源。
任务依赖关系
shell任务支持简单的任务依赖,通过
wait关键字进行任务依赖限定。--groups/-g参数可将N行命令合并为一个任务组。--num/-n参数限定同时运行的最大任务数。
主程序中断或被 kill 掉时,会自动清空正在运行中的任务,避免计算资源浪费。
callback和init
--init和--callback支持在所有任务运行前/后执行指定命令。init和callback命令均强制localhost本地运行。callback可用于任务分析完成之后的结果汇总、回传或通知等场景。