在 HPC 集群上使用 python 代码 (mpi4py) 提交作业

2024-01-27

我正在工作带有 MPI 的 python 代码 (mpi4py)我想在 HPC 集群的队列中跨多个节点(每个节点有 16 个处理器)实现我的代码。

我的代码结构如下:

from mpi4py import MPI

comm = MPI.COMM_WORLD 
size = comm.Get_size()
rank = comm.Get_rank()

count = 0
for i in range(1, size):
    if rank == i:
        for j in range(5):
            res = some_function(some_argument)
            comm.send(res, dest=0, tag=count) 

I am 能够在头节点上完美运行此代码使用命令的集群

$mpirun -np 48 python codename.py

这里的“code”是 python 脚本的名称,在给定的示例中,我选择 48 个处理器。在头节点上,对于我的特定任务,该作业大约需要 1 秒才能完成(并且它成功地给出了所需的输出)。

然而,当我run 尝试将完全相同的代码作为 HPC 集群队列之一上的作业提交,它会持续运行很长时间(很多小时)(未完成)并且我必须在一天左右后手动终止该工作。此外,它没有给出预期的输出。

这是我正在使用的 pbs 文件,

#!/bin/sh

#PBS -l nodes=3:ppn=16 
#PBS -N phy
#PBS -m abe
#PBS -l walltime=23:00:00
#PBS -j eo
#PBS -q queue_name

cd $PBS_O_WORKDIR
echo 'This job started on: ' `date`

module load python27-extras
mpirun -np 48 python codename.py

我使用命令qsub 作业名.pbs提交作业。

我很困惑为什么代码应该在头节点上完美运行,但是当我提交此作业以在队列中的多个处理器上运行代码时遇到这个问题。我认为我可能需要更改 pbs 脚本。如果有人能建议我应该做什么来将这样的 MPI 脚本作为 HPC 集群中的队列上的作业来运行,我将非常感激。


不需要更改我的代码。这是有效的 pbs 脚本。 =)

显然,我需要在作业脚本中调用适当的 mpirun,以便当代码在集群中运行时,它使用与头节点中使用的相同的 mpirun。

这是造成差异的行:/opt/intel/impi/4.1.1.036/intel64/bin/mpirun

这是有效的作业脚本。

#!/bin/sh

#PBS -l nodes=3:ppn=16
#PBS -N phy
#PBS -m abe
#PBS -l walltime=23:00:00
#PBS -j eo
#PBS -q queue_name

cd $PBS_O_WORKDIR
export OMP_NUM_THREADS=16
export I_MPI_PIN=off
echo 'This job started on: ' `date`

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

在 HPC 集群上使用 python 代码 (mpi4py) 提交作业 的相关文章

  • Python 初学者 - 没有名为“mpi4py”的模块

    我是一名学生 第一次使用Python 目前我在虚拟机上使用 Xubuntu 19 10 我检查了 python 和 mpi4py 安装 我的 并行编程 教授给了我这个简单的 python 代码 from mpi4py import MPI
  • OpenMP 和 C++11 多线程

    我目前正在从事一个混合高性能计算 HPC 和交互性的项目 因此 HPC 部分依赖于 OpenMP 主要是具有大量相同计算的 for 循环 但它包含在具有 GUI 和多线程的更大框架中 目前通过 c 11 线程实现 std thread an
  • 等待用户的所有作业完成,然后再将后续作业提交到 PBS 集群

    我正在尝试调整一些 bash 脚本以使它们在 pbs questions tagged pbs 簇 各个任务由由主脚本启动的多个脚本执行 到目前为止 这个主脚本在后台启动多个脚本 通过附加 使它们在一台多核机器上并行运行 我想用以下方式替换
  • mpi4py 中的共享内存

    I use a MPI mpi4py 脚本 在单个节点上 适用于非常大的对象 为了让所有进程都能访问该对象 我通过comm bcast 这会将对象复制到所有进程并消耗大量内存 尤其是在复制过程中 因此 我想分享一些像指针这样的东西 而不是对
  • Erlang集群

    我正在尝试使用 Erlang 作为将所有组件粘合在一起的粘合剂来实现一个集群 我喜欢它创建一个完全连接的节点图的想法 但在在线阅读不同的文章后 似乎这不能很好地扩展 最多有 50 100 个节点 OTP 的开发者是否故意施加此限制 我确实知
  • 取消使用 Hangfire.io 计划的正在运行的作业

    我使用hangfire io 库安排作业 我可以观察它在内置仪表板中的处理情况 但是 我的系统要求可以从仪表板取消该作业 有一个选项可以删除正在运行的作业 但这只会更改数据库中作业的状态 并不会停止正在运行的作业 我在文档中看到有可以通过的
  • Spring Batch - “job”作用域 bean 不能注入到“job”或“step”作用域 bean

    我正在使用 Spring Batch 版本 3 0 2 RELEASE 和 Spring Framework 版本 3 2 12 RELEASE 我正在尝试将一个工作范围的 bean 注入到另一个工作范围的 bean 中 我的配置看起来像这
  • 节点集群工作人员内存使用情况

    有谁知道是否有一种独立于平台的方法来获取工作人员的内存使用情况 我希望它会像这样工作 console log App process memoryUsage process memoryUsage cluster on online fun
  • 如何在 Talend 中动态猜测 Mysqlinput 中的架构

    我已经构建了一个将数据从 mysql db 表复制到 b mysql 表的作业 表列是相同的 只是有时可以在表数据库中添加新列 我想检索从 a 到 b 的所有列 但只检索表 b 中存在的那些列 我能够放入表 b 中存在的查询特定选择列语句
  • 如何使用 MS HPC Server 2008 R2 的 MPI 堆栈成功编译 mpi4py?

    故事是这样的 我需要一个 Python 的 MPI 包装器 我知道有mpi4py http code google com p mpi4py 对于当前的工作 我 大部分 使用 Python 和 Windows 我想使用 Microsoft
  • 如何为 Kubernetes 作业设置时间限制?

    我想启动一项 Kubernetes 作业并给它一个固定的完成期限 如果截止日期到来时 Pod 仍在运行 我希望该作业自动被终止 这样的事情存在吗 起初我以为工作规范是activeDeadlineSeconds涵盖了这个用例 但现在我看到了a
  • 通过脚本在 Microsoft 集群中创建专用 MSMQ 队列

    我们正在迁移到 Windows 2008 R2 Standard 并将使用 Microsoft 集群 主动 被动 配置 我们的应用程序严重依赖于 MSMQ 专用队列 并且我们的安装使用以下 C 代码创建了 100 多个专用队列 Messag
  • 集群环境 (Websphere) 中的 Java EE 应用程序范围变量?

    在 Java EE 应用程序 在 Websphere 上运行 中是否有任何简单的方法可以在整个集群的应用程序范围内共享对象 有些东西可能类似于 Servlet Context 参数 但在集群中共享 例如 在服务器 A 和 B 的集群中 如果
  • Android 中的 WorkManager 多次执行 do Work()

    我正在使用 WorkManager 来安排一些任务 但问题是工作管理器在一次调用中多次执行这些任务 doWork 我在用 android arch work work runtime 1 0 0 alpha08 我尝试过使用 alpha07
  • Log4J SocketAppender 吞下来自远程客户端的调试信息

    我已经配置了一个简单套接字服务器 http logging apache org log4j 1 2 apidocs org apache log4j net SimpleSocketServer html public class Sim
  • 将请求传递给特定的分叉节点实例

    如果我错了 请纠正我 但不可能在同一端口上启动多个 http 服务器 基于此 有趣的是 NodeJS 集群可能会分叉 因为我知道有一个主人正在将请求传递给其中一个分叉工人 什么worker是由操作系统管理的或者cluster schedul
  • 集群环境下的Spring Singleton

    正如中所讨论的this https stackoverflow com questions 1194129 singleton in cluster environmentpost 不适合使用单例聚集的环境 因为不同 JVM 中有多个单例对
  • Linux 中 NDIS 过滤器的类似物是什么?

    我正在研究一个as close to real time我在linux中尽可能地使用系统 并且需要在收到特定数据包后立即发送大约600 800字节的TCP数据包 为了获得最佳的延迟 我希望这个数据包直接从内核发送 而不是将接收到的数据包一直
  • Node Js:Redis 作业在完成其任务后未完成

    希望你们做得很好 我在我的 Nodejs 项目中实现了 BullMQ Bull 的下一个主要版本 来安排发送电子邮件的作业 例如 发送忘记密码请求的电子邮件 所以 我编写了如下所示的代码 用户服务 await resetPasswordJo
  • 集群应用程序服务器中的 JMS 主题订阅者如何接收消息?

    假设我创建了一个带有一个订阅者 PropertiesSubscriber 的 JMS 主题 PropertiesTopic PropertiesSubscriber 运行在负载平衡的应用程序服务器集群中 如下图所示 替代文本 http ww

随机推荐

  • 如果数组包含重复项则进行二分查找

    Hi 如果我们使用二分搜索在以下数组中搜索 24 则搜索键的索引是多少 array 10 20 21 24 24 24 24 24 30 40 45 我对二分搜索有疑问 如果数组有重复值 它是如何工作的 任何人都可以澄清吗 您建议的数组在中
  • “java.exe”退出,代码为 2

    我将 Google Play 服务添加到我的地图项目中 但现在不断收到此错误 java exe 已退出 代码为 2 我不确定它是否与以代码 1 退出的 java exe 不同 但我已经尝试了网上的所有建议 我的堆大小是1G 我的目标版本是
  • 在 Windows 上部署后,glassfish 将您的类/项目保存在哪里?

    我在 Windows XP 上使用 Glassfish3 1 使用Netbeans部署Web服务项目后 它工作正常 但是当我去 install path glassfish 3 1 glassfish domains domain1 app
  • 通过 Maven 添加 Janino 包时出现“无效的签名文件摘要”错误

    我正在尝试通过 Maven 存储库添加对 Janino 2 7 6 的依赖项 当我尝试运行该应用程序时 出现以下错误 exec maven plugin 1 2 1 exec unpack dependencies JanineAttemp
  • C# 中左移位的奇怪行为

    在测试这段代码时 for int i 0 i lt 32 i Console WriteLine i byte MaxValue 1 lt lt i 我得到这些输出 0 256 1 512 2 1024 3 2048 4 4096 5 81
  • 按住自定义 UIButton 时更改深灰色突出显示的颜色?

    我有一个习惯UIButton这是一个云 透明的黑白 png 文件 没有关闭状态 只有一张图像 当用手指轻敲并按住它时 它会变成深灰色 我正在尝试将深灰色改成不那么压抑的颜色 该按钮在视图中公开 而不是在选项卡栏 工具栏或导航控制器中 我已经
  • 如何将自定义文件导入 APK

    众所周知 apk 文件是一个 zip 格式的存档文件 包括以下文件和文件夹 AndroidManifest xml assets 类 dex META INF res 资源 arsc 我想要的是包含一个自定义文件 即 README txt
  • 创建一个人类可读的时间戳并存储在 C++ 中的字符串中

    我想根据程序运行的时间创建带有时间戳的文件名 即 logfile 2020 04 21 18 11 10 txt logfile 2020 04 22 18 13 43 txt 我可以得到时间戳 我认为 std chrono steady
  • 异步多线程异常处理?

    我希望在异步编程 beginInvoke endInvoke 中采用一种异常处理方法 其中如果任何一个线程 beginInvoke 失败 那么我希望所有其他异步处理线程停止工作 请提出一些解决方案 下面我还附上了我的示例代码 public
  • 如何与框架项目 swift 共享父(主机)项目 pod?

    我正在开发框架 我已将此框架项目添加到宿主项目中 现在我想将 cocoapods pod 框架 添加到父 主机 项目中 并将相同的 pod 共享到子 框架 项目中 或者我可以添加一些东西到 Podfile 中 它将与子项目共享 SwiftP
  • Report Builder 3.0 SWITCH 表达式 DEFAULT/ELSE

    我正在尝试根据用户的特许经营号码显示不同的徽标 参数 UserFranNr 如果值 99 且 87 则要显示的嵌入图像是 ID0 嵌入图像名称是字符串 这适用于嵌套 IIF 但似乎是使用正确的时间 地点SWITCH 未来很可能会有更多特许经
  • 无法登录 Magento 管理员

    我已将 magento 安装在子目录中 www domain com subdir magento 该网站一度运行得非常完美 我什么也没做 直到我的客户说他无法登录到 magento admin 我从我的电脑上登录得很好 但在他的电脑上 它
  • 使用 Delphi 以编程方式添加、删除文件并将文件提交到 Subversion 存储库中

    我想以编程方式检查文件是否已版本化 并使用 Delphi 添加 删除文件并将文件提交到 subversion 存储库中 有谁有示例代码可以帮助我创建必要的函数和过程 Thanks Steve Delphi XE 集成是开源的 基于 MPL
  • 我如何从左侧切换而不使用 jquery-ui

    如何在不使用 jquery ui 的情况下从左侧切换 JavaScript document ready function button click function content slideToggle HTML div This is
  • Javascript toFixed 不四舍五入

    我正在使用 javascript 绑定到一些复选框 并且toFixed 2 没有四舍五入 有什么想法为什么不四舍五入吗 例如 如果数字是859 385它只是显示859 38代替859 39 我还读到toFixed可以根据您使用的浏览器进行不
  • 消息中的换行符

    使用Google Apps脚本 如何在变量中换行以发送邮件 换行符在msgBox Browser msgBox line 1 n line 2 请注意 您需要使用额外的反斜杠转义 n
  • React Native 应用程序崩溃,没有任何错误日志

    React Native 应用程序崩溃 没有任何错误日志 没有输出 react native log android 终端 没有出现错误的红屏 Android 模拟器只是崩溃 尝试使用 Expo 运行 再次崩溃 没有错误 工作时发生Text
  • 滚动到 UWP 的 ListView 中的新项目

    我正在创建一个带有包含消息的 ListView 的聊天应用程序 当发送 接收新消息时 ListView 应滚动到新消息 我正在使用 MVVM 所以 ListView 看起来像
  • ASP.NET 正则表达式验证器(密码强度)

    我有一个具有以下表达式的验证控件 d 2 w 2 W 1 8 这是一个至少包含以下内容的密码2 digits 2 个字母字符 1 个非字母数字 and 最少 8 个字符 不幸的是 这似乎不兼容跨浏览器 此验证在 Firefox 中完美运行
  • 在 HPC 集群上使用 python 代码 (mpi4py) 提交作业

    我正在工作带有 MPI 的 python 代码 mpi4py 我想在 HPC 集群的队列中跨多个节点 每个节点有 16 个处理器 实现我的代码 我的代码结构如下 from mpi4py import MPI comm MPI COMM WO