如何获得aprun排名

2024-01-01

我正在尝试使用 aprun 运行多节点作业。但是,我不知道如何在 bash 环境中获取排名(或作为每个作业的 ID 的任何内容)。就像这个简单的工作:

aprun -n 8 -N 2 ./examplebashscript.sh

我怎样才能获得每个衍生职位的排名? 如果没有诸如排名或任何唯一的作业 ID 之类的内容,该 aprun 行将仅运行完全相同的程序 16 次,这是不可取的。

我一直在阅读文档,令人惊讶的是我找不到任何解释 aprun 提供的默认变量的内容。

我以前使用过 mpirun,我知道如何使用 C 和 Python 程序获取每个作业的排名值,但不知道如何在 Bash 中获取。 aprun 的记录甚至更少。


一种可行的方法是编写一个包装器脚本,该脚本可以获取要运行的任务列表,然后将每个任务生成到单独的脚本中。

在您的片段中,您似乎希望每个计算节点运行 2 个脚本实例,总共获得 8 个实例,因此,在您的作业脚本中,您可以执行以下操作:

for (( i=0; i<8; i+=2 )); do
   aprun -n 1 ./wrapper.sh $i 2 &
done
wait

然后在包装器中你可以执行类似的操作(其中 $j 为你提供唯一索引):

end=$(( $1 + $2 ))
for (( j=$1; j<$end; j+=1 )); do
   ./examplebashscript.sh $j &
done
wait

您还可以设置以下环境变量来获取各种进程和线程的位置。在运行“aprun”之前,您需要在 shell(或作业脚本)中设置这些:

export MPICH_CPUMASK_DISPLAY=1
export MPICH_RANK_REORDER_DISPLAY=1

例如,运行:

aprun -n 24 ./examplebashscript.sh

(相当于简写):

aprun -n 24 -N 24 -S 12 -d 1 ./examplebashscript.sh

将在 STDERR 上为您提供以下类型的输出(请注意,这是在每个计算节点具有两个 Intel Ivy Bridge 12 核处理器的 XC30 上,因此由于存在超线程,掩码显示每个节点 48 个核心上的位置):

[PE_0]: MPI rank order: Using default aprun rank ordering.
[PE_0]: rank 0 is on nid02749
[PE_0]: rank 1 is on nid02749
[PE_0]: rank 2 is on nid02749
[PE_0]: rank 3 is on nid02749
[PE_0]: rank 4 is on nid02749
[PE_0]: rank 5 is on nid02749
[PE_0]: rank 6 is on nid02749
[PE_0]: rank 7 is on nid02749
[PE_0]: rank 8 is on nid02749
[PE_0]: rank 9 is on nid02749
[PE_0]: rank 10 is on nid02749
[PE_0]: rank 11 is on nid02749
[PE_0]: rank 12 is on nid02749
[PE_0]: rank 13 is on nid02749
[PE_0]: rank 14 is on nid02749
[PE_0]: rank 15 is on nid02749
[PE_0]: rank 16 is on nid02749
[PE_0]: rank 17 is on nid02749
[PE_0]: rank 18 is on nid02749
[PE_0]: rank 19 is on nid02749
[PE_0]: rank 20 is on nid02749
[PE_0]: rank 21 is on nid02749
[PE_0]: rank 22 is on nid02749
[PE_0]: rank 23 is on nid02749
[PE_23]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000100000000000000000000000
[PE_22]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000010000000000000000000000
[PE_21]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000001000000000000000000000
[PE_0]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000000000000000001
[PE_20]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000100000000000000000000
[PE_9]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000000001000000000
[PE_11]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000000100000000000
[PE_10]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000000010000000000
[PE_8]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000000000100000000
[PE_1]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000000000000000010
[PE_2]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000000000000000100
[PE_18]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000001000000000000000000
[PE_7]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000000000010000000
[PE_15]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000001000000000000000
[PE_3]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000000000000001000
[PE_6]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000000000001000000
[PE_16]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000010000000000000000
[PE_14]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000100000000000000
[PE_13]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000010000000000000
[PE_12]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000001000000000000
[PE_4]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000000000000010000
[PE_5]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000000000000000100000
[PE_17]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000000100000000000000000
[PE_19]: cpumask set to 1 cpu on nid02749, cpumask = 000000000000000000000000000010000000000000000000

您也许能够以某种方式捕获它并使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获得aprun排名 的相关文章

随机推荐

  • emacs 是否为 html 模式提供隐藏显示

    emacs 是否具有隐藏 显示 html 代码折叠功能 当我使用 org 模式时 我有它 但似乎无法在 nXML html 端找到它 我为 mhtml mode 编写了这个 它运行得很好 它可以通过标签折叠 HTML 以及嵌入的 CSS 和
  • 如何将(参考)Quick book 的 dll 添加到 silverlight 项目?

    我正在使用 silverlight 项目 在此我必须使用 Quick books SDK QBFC 但问题是 silverlight 不允许其他组装 因为 Silverlight 使用不同的运行时和常规 Net 框架的子集 这就是为什么我们
  • 在 R 中使用从宽到长的 Reshape [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在 R 中将数据从宽到长重塑 我的宽格式数据如下所示 我有以下数据矩阵 在行中我有不同的公司 在列中有来自不同年份的不同变量 收
  • 如何在 Ubuntu 上托管/发布我的 .Net Core WebAPI?

    我正在学习 Net Core 我使用 ASP Net MVC 开发了 Web 应用程序 因为它可以在本地 IIS 上安装和运行 在 Ubuntu 和 Linux 中托管 发布 Net Core WebApi 的类似方式是什么 而不是在 50
  • 允许使用多个字符进行 C++ 字符初始化 [重复]

    这个问题在这里已经有答案了 在通过阅读书籍学习 C 的过程中 我看到了这行 对我来说 奇怪的代码 char ch AB Or char ch AB 这对我来说很奇怪 因为我不明白你可以分配给char多个 字母 没有任何例外 cout lt
  • Delphi Tokyo 64 位将非正规数刷新为零?

    在短暂查看 system math 的源代码时 我发现 64 位版本 Delphi Tokyo 10 2 3 将非正规 IEEE Doubles 刷新为零 从以下程序中可以看出 apptype console uses system sys
  • 所有可能接触项目后端的开发人员都应该了解哪些有用的 SQL 语句/使用模式?

    所有可能接触项目后端的开发人员都应该了解哪些有用的 SQL 语句 Update 就像在算法中一样 我们知道存在排序问题 洗牌问题 并且我们知道它们的一些解决方案 这个问题是针对同一件事 例如 我能想到的一个是 获取不存在的类的列表 由任何学
  • x86 是否具有原子增量来保留存储的值?

    我已经发现lock inc addr但这并没有保留存储值的副本 甚至同一线程中紧随其后的读取也可能发生在竞争写入之后 我发现的最好的解决方案是load inc cas http en wikipedia org wiki Compare a
  • 使用 ZeroMQ 实现消息总线

    我必须开发一个消息总线 供进程相互发送和接收消息 目前 我们正在Linux上运行 并计划稍后移植到其他平台 为此 我使用 TCP 上的 ZeroMQ 该模式是带有转发器的 PUB SUB 我的总线作为一个单独的进程运行 所有客户端都连接到
  • 如何使用JBoss Tattletale工具?

    我需要减小项目中 JAR 文件的大小 即 9 17MB 我已经减小了它 通过删除所有记录器语句和死代码 将文件大小减少到 6 31MB 我还通过删除并编译每个 JAR 文件来单独检查它 通过它 我删除了最多 6 个文件 现在我想将 JAR
  • 在 Chrome 操作系统上加载本地文件

    我正在尝试创建一个 JavaScript pacman 游戏 但每当我尝试加载脚本文件或图像时 都会收到错误 The browser I m using is chrome and the files are stored in the s
  • 在 Jquery Ui Datepicker 中禁用今天之后的未来日期

    我想在 Jquery Ui Datepicker 中禁用今天之后的所有未来日期 这里是Demo http jsfiddle net X82aC 541 Code start date datepicker maxDate 0 beforeS
  • 如何从 JAX-WS Web 服务中访问 ApplicationContext?

    如同如何从 JAX WS Web 服务中访问 ServletContext https stackoverflow com questions 261348 how can i access the servletcontext from
  • AsyncTaskLoader 基本示例。 (安卓)

    我在我的应用程序中使用 Loader 并根据使用此 Loader 对 COntacts 执行的查询得到的结果 我执行一些计算并将它们存储回 Sqlite DB 中 我希望这个操作是异步的 但是我对使用异步任务感到困惑 因为我有很多不同的数据
  • 带有分隔符作为字符串的字符串列表?

    我在一个存储为字符串的对象中有一个名为 HistoryText 的属性 我想显示网格中的所有行 我应该能够删除和编辑网格中的行 格式为 16 5 2003 12 09 anna Organization created 2 6 2005 1
  • JSF 2.0 使用外部上下文以及 faces-redirect=true 打开新的浏览器窗口

    我正在开发 JSF 2 0 应用程序 单击 时 我在后端 bean 操作中执行一些逻辑 需要重定向到新窗口中的另一个 URL 并在退出操作之前在原始 bean 操作中执行一些清理工作 我目前正在使用 externalContext redi
  • 有多少用户可以打开与 Microsoft Access 的连接?

    有多少用户可以同时打开与 Microsoft Access 数据库的连接 我正在使用 asp net 4 0 来编写我的应用程序
  • nodeschool learnyounode node.js 模块 FILTER LS 练习

    下面是nodeschool learnyounode模块的练习5 创建一个程序 打印给定目录中的文件列表 并按文件扩展名进行过滤 您将获得一个目录名称作为程序的第一个参数 例如 path to dir 和作为第二个参数进行过滤的文件扩展名
  • JavaDoc:在哪里向文档添加注释/评论?

    当用 C 编码时 我总是找到标签remarks对于提供有关类或方法的实现的注释 或者提供有关我正在实现的理论的信息非常有用 我现在使用 Java 但找不到合适的 JavaDoc 标签 也许在 Java 中你可以用不同的方式来完成这个任务 有
  • 如何获得aprun排名

    我正在尝试使用 aprun 运行多节点作业 但是 我不知道如何在 bash 环境中获取排名 或作为每个作业的 ID 的任何内容 就像这个简单的工作 aprun n 8 N 2 examplebashscript sh 我怎样才能获得每个衍生