在 Sun Grid Engine 中,是否可以有数组作业,其中每个子任务都有独特的要求?例如,我可能有一个数组作业,其中每个任务都有一个小的独特要求,但我不想单独启动每个作业。
答案1
我假设您指的是资源需求。如果是的话(即使不是也可能),答案是否定的。数组作业的定义是,它是一组共享一个共同作业定义的任务。资源需求是在作业级别设置的。
作为参考,请参阅作业的定义 (JB_Type: source/libs/sgeobj/sge_job_JB_L.h) 与任务的定义 (JAT_Type: source/browse/gridengine/source/libs/sgeobj/sge_ja_task_JAT_L.h)。JB_Type 用于定义作业的参数,而 JAT_Type 用于跟踪任务的执行。
如果您正在寻找一种方便的方式来自动提交和跟踪大量作业,请查看 DRMAA。SGE 的 API 绑定可用于 C、Java、Python、Ruby 和 Perl。
丹尼尔
答案2
每个子任务都知道其作业 ID。这可以从环境 (SGE_TASK_ID) 中提取。
在处理数组作业时,我有处理每个作业唯一参数的包装代码。
我首先为每个作业生成一个包含参数的平面文件。文件可以是 CSV、JSON、文本,只要您能根据 SGE_TASK_ID 进行查找即可。此文件会保存到某个常见位置。
作业通过此文件的路径提交。每个作业运行时,它都知道查看此文件并找到要执行的参数包。