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

该行任务运行方式:local/localhost/sge/slurm

–node

该行任务指定运行的节点

  • localhost 运行的任务不需要指定运行资源。

任务依赖关系

  • shell任务支持简单的任务依赖,通过 wait 关键字进行任务依赖限定。

  • --groups/-g 参数可将N行命令合并为一个任务组。

  • --num/-n 参数限定同时运行的最大任务数。

主程序中断或被 kill 掉时,会自动清空正在运行中的任务,避免计算资源浪费。

callback和init

  • --init--callback 支持在所有任务运行前/后执行指定命令。

  • initcallback 命令均强制 localhost 本地运行。

  • callback 可用于任务分析完成之后的结果汇总、回传或通知等场景。