管理群集中的作业执行

qmap的Python项目详细描述


qmap是一个旨在快速运行类似作业集合的工具。 很容易并行。 它可以独立运行,也可以使用不同的hpc调度程序(slurm、sun grid 发动机和LFS)。

qmap包含5种不同的工具:

  • run:使用扩展资源执行命令
  • template:创建作业映射文件
  • submit:从映射文件提交作业
  • 重新附加:重新附加到以前的qmap执行
  • info:探索作业的元数据

警告

qmap使用使用subprocess模块的shell python标准库的。通过使用 shell=True,这可能导致外壳注入漏洞。 有关详细信息,请参见https://docs.python.org/3/library/subprocess.html#security-considerations

文档位于:https://qmap.readthedocs.io/en/latest/

工具

qmap运行

使用更多资源执行命令以维护工作环境

qmap run -m <memory> -c <cores>  "<command>"
qmap模板

创建一个与qmap submit一起工作的jobs map file

qmap template "<command with wildcards>" -f <jobs map file>

创建的文件使用当前加载的Easy Build模块 以及当前conda环境作为作业预命令[1] 如果没有明确提供。

job命令是扩展后的所有组合:

{{list,of,items}}:
comma separated list of items
{{file}}:all lines in file
*, ?, [x-y]:wildcards in Python’s glob module

格式为{{...}}的通配符在第一阶段展开 和glob通配符稍后将展开。

作为附加功能,上述任何组都可以命名为 {{?<name>:...}}并使用{{?=<name>}}替换任何位置。

注意

要命名glob通配符,它们应该只在组中。 例如{{?myfiles:*}}

qmap提交

从ajobs map file执行所有作业

qmap submit -m <memory> -c <cores>  <jobs map file> --logs <logs folder> --max-running <#>

qmap submit已实现,以将一组作业提交到群集执行 控制他们。 它充当工作负载管理器和用户之间的一层,防止她/他 一次提交大量作业(可能会阻止未来用户)。 可以提交给工作负载管理器的作业数由 –max running标志。

警告

如果qmap submit已关闭,则尚未提交给 工作负载管理器永远不会。 因此,建议在屏幕中运行它。

此外,在指定存储带有–logs标志的日志的文件夹中 用户可以找到关于每个作业执行的重要信息,以及 来自stdout和stderr的日志。

此工具的另一个功能是可以使用对作业进行分组-分组 选项此选项使用传递的值作为适合每个作业的命令数。 因此,几个命令可以作为同一个作业的一部分,一个接一个地执行。 对于使用相同分配的“小”作业,此选项可能很有趣。 如果任何命令失败,关联的作业将失败。

最后,任何作业命令都可以包含以下几个值 在处决前被替换。这些值表示作业参数 此外,每个作业的唯一标识符。

${QMAP_LINE}:identifier of the line the job command has in the input file
${QMAP_CORES}:cores for the execution
qmap重新连接

关闭qmap submit执行后,您可以 从其日志目录重新连接

qmap reattach --logs <logs folder>

注意

如果在上一次执行中有作业尚未提交给工作负载管理器 qmap reattach可以提交它们,但是除了no-console接口之外,执行将暂停。

qmap信息

qmap submit为每个作业生成一个包含元数据信息的文件。 qmap info旨在探索它们并检索 请求的数据。信息以json格式存储,并且 用户可以请求任何字段:

qmap info --logs <logs folder> <field 1> <field 2>.<subfield 1> ...

此外,–status选项可用于筛选作业 按其状态(完成失败其他挂起运行未提交全部)。

如果不传递任何字段,则返回值 是作业的输入命令。 此功能可用于生成新作业文件原始作业文件的子集。

作业映射文件

此文件包含要执行的命令列表,以及 在每个作业之前和之后执行的命令(例如加载简易构建模块或conda环境)。 文件格式为:

[pre]
# command to be executed before any job

[post]
# command to be executed after any job

[params]
# parameters for all the jobs
cores = 7
memory = 16G

[jobs]
job command
job command

安装

qmap依赖于python>;3.5和一些外部库。

您可以直接从我们的github存储库安装它:

pip install git+https://github.com/bbglab/qmap.git

许可证

Apache Software License 2.0

[1]Commands executed before any actual job

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Eclipse Helios for Web项目   java指定行。作为编译器设置的分隔符?   osm映射中带有osmdroid的java标记   java Android ClassNotFoundException在路径:DexPathList上未找到类   java从j2me调用GWT方法   更新到java 8后的aspectj问题   如何仅从根元素java,com提取文本内容。滴虫软件。是的。html   安卓公司。谷歌。火基。数据库DatabaseException:未能转换java类型的值。将字符串改为长字符串   从java中的方法返回arraylist变量   java如果将引用重新分配给同步块内的锁对象,会是什么?   java下载。使用spring mvc的资源文件中的xlsx文件   java Eclipse提供了什么工具来运行Eclipse中未包含的程序?   spring boot Java泛型如何读取传递给泛型方法的类型上的字段或调用方法   Javacard中的javaecdsa签名