问题标签 [pbs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mpi - PBS 调度程序为 3 个处理器的 MPI 程序分配相同的处理器
我在一个有 8 个节点的集群上进行 MPI 编程,每个节点都有一个英特尔至强六核处理器。我的 mpi 代码需要三个处理器。
我使用 qsub 提交作业。当我使用“qstat -n”检查作业正在运行的处理器时,它会显示类似 cn004/0*3 的内容。
那么这是否意味着它只在一个处理器上运行?
因为它没有比我使用单个处理器时更快(这是两种情况下域大小相同的情况)
我用于提交的脚本如下
mpi - 在 PBS 脚本中确定 qsub 之后的总 CPU 计数
对于使用 qsub 调用的 PBS 脚本,我想知道实际分配了多少 CPU,以防 PBS 文件中定义的数字被命令行输入覆盖。例如使用以下 pbs 脚本文件:
作业脚本.pbs:
该脚本可以使用以下命令行仅使用 16 个 CPU(而不是 32 个)运行:
因此,我想要一种可靠的方法来确定脚本中实际可用的 CPU 数量。
string - 命令替换作为单行中的变量
我收到以下错误:
我正在尝试获取之前的.
号码
并将其用作qdel
openPBS 中的参数,以便我可以删除从登录开始的所有进程kigumen
所以理想情况下,这应该工作:
到目前为止,只有这个有效:
但我想要一个没有临时变量的干净的单线。
pbs - 使用扭矩/PBS“不允许从主机访问”创建新队列
我已经执行了以下命令。
但是当我的 PBS 脚本有以下标题时,
我收到以下错误:
python - 使用 Ipython 并行的 PBS 集群上的注册超时
我正在尝试使用 PBS 调度在 linux 集群上设置 ipython 并行。
我按照http://www.andreazonca.com/2013/04/ipython-parallell-setup-on-carver-at.html上的说明进行操作(官方说明更难遵循)。我在头节点上运行命令,它使用 PBS(即标准集群配置)将作业发送到从节点。
我的问题是我超时了。我尝试将等待时间从 2 秒增加到 20 秒,但没有成功。任何帮助,将不胜感激。完整输出如下。
实际上,最后我希望能够从连接 ssh 的笔记本电脑而不是从集群头节点运行 ipython 命令,但我认为这是合理的第一步。
根据 Andrea Zonca 的建议更新
添加
似乎有所帮助,尽管由于某种未知原因并没有立即生效。
但它仍然不起作用:
我跑
然后在头节点上运行:
但输出来自
是
所以我试着跑步
然后运行 nmap
这表明端口是打开的,并且确实 telnet 给了我从节点的响应。
但是当我运行上面的原始命令时,
nmap 显示没有端口打开。所以问题似乎是 qsub 文件中运行的 ipengine 没有像从命令行运行的 ipcontroller 那样打开端口。
这是 qsub 文件:
这是我的/home/username/.ipython/profile_default/ipcluster_config.py:
bash - 在一小部分提交的作业中找不到文件
我正在尝试在使用 Lustre 文件系统的 RHEL5 集群上运行大量批处理作业。我在大约 1% 的工作中遇到了一个奇怪的错误:他们找不到他们都用于转向的文本文件。重现错误的脚本如下所示:
对于一小部分作业,错误流输出将显示:
很奇怪,但它变得更奇怪了。
当我将files=($(ls ./*.txt | sort))
线路更改为
作业运行没有错误!不用说,这远远不能令人满意:我宁愿我的工作不依赖于黑魔法(尽管黑魔法总比没有魔法好)。
知道这里发生了什么吗?
cluster-computing - 来自一个文件的多个 mpirun 与多个文件运行
我正在处理一个我不是管理员且处于锁定配置的旧集群,这给我带来了一些问题。系统使用原始 mpich,集群脚本是用 Perl 编写的,运行时使用 parallel::mpi。这个 Monte Carlo 脚本生成 5000 个要运行的测试用例,然后在集群上启动。我查看了原始代码,它进行了大约 500 次(不是 5000 次)测试并将它们放在三个文件中。然后,这些文件一次将它们传递给集群,最多 260 个。我问系统管理员他是否知道程序员为什么这样做,他说这是因为 mpich(1) 不允许一次发送超过 260 个作业。我不确定这是 mpich1 的事情还是 parallel::mpi 的事情。
因此,我重写了 Perl 程序以生成 19 个文件,每个文件包含大约 250 个案例,以运行所有 5000 个案例。我的问题是我通常有一个文件,我使用 pbs_mpirun 命令运行和启动它。原始程序有三个单独的启动 pbs 文件。所以现在我有 19 个。我可以从同一个文件中启动它们吗?我必须在 mpirun 命令之间放置某种类型的睡眠吗?集群队列的设置方式一次只有一个用户可以在同一个队列上运行一项作业。因此,如果我启动启动多个运行以排队 n64,一次只能运行一个,这很好,但如果我没有,我不想提交 19 个运行并填写 qstat 列表来完成一个 monte carlo至。
这可能很常见,但我从来没有处理过,所以任何建议都将不胜感激。下面是我的 PBS 文件,它启动了第一个 Perl 集群文件。Perl 集群文件是 mpi_wokernode_1.pl - mpi_workernode_19.pl。
bash - 在 bash 脚本中运行 PBS 脚本和后处理输出
我有一堆作业要提交到 PBS 队列,并且输出应该在之后在本地进行后处理。由于作业相似(而且我不想经常手动更改它),我自己编写了一个 bash 脚本,它在本地生成一个 PBS 作业脚本,然后提交作业。我的问题如下:如何让我的 bash 脚本等到 PBS 作业完成然后开始后处理?(不断检查工作的状态不是一种选择。)我有什么可能这样做?
非常感谢您提供的所有提示、提示或解决方案!
编辑:如评论中所示(谢谢),一些编辑:
- PBS = 便携式批处理系统
- 文档可在此处获得:http: //resources.altair.com/pbs/documentation/support/PBSProUserGuide12.1.pdf
- 我考虑了可能的解决方案,并提出了以下一个不起作用的解决方案:我可以让我的 bash 脚本等待所请求的时间作为工作的挂钟时间。然而,有两个复杂性:首先,作业可能不需要那么多时间并提前终止,因此 bash 脚本等待时间过长;其次,作业可能会排队而不是立即执行,因此 bash 脚本可能等待的时间太少。
编辑 2:由于我不确定我是否总是可以按照下面的建议以交互方式运行,所以我考虑了以下问题:我让 PBS 作业脚本在完成之前创建一个(空)文件。我的 bash 脚本每隔几分钟(例如)检查该文件是否存在(使用 while 循环)。如果存在,我知道该作业已终止,可以通过删除刚刚创建的(空)文件开始后处理。这样,我最多只能延迟几分钟,并且不需要任何资源。这绝对不是理想的,而是一种解决方法。任何更实用的想法都会受到高度赞赏。
即使与 PBS 没有直接关系,任何想法都会受到赞赏。
卡里
bash - How to submit a job to a specific node in PBS
How do I send a job to a specific node in PBS/TORQUE? I think you must specify the node name after nodes.
However, this doesn't seem to work and I'm not sure why. This question was asked here on PBS and specify nodes to use
Here is my sample code
Also, how do I check which node the job is running on? I saw somewhere that $PBS_NODEFILE
shows the details, but it doesn't seem to work for me.
shell - 等待用户的所有作业完成,然后再将后续作业提交到 PBS 集群
我正在尝试调整一些 bash 脚本以使它们在 ( pbs ) 集群上运行。
各个任务由几个脚本执行,这些脚本由一个主脚本启动。到目前为止,这个主脚本在后台启动了多个脚本(通过附加&
),使它们在一台多核机器上并行运行。我想用qsub
s 替换这些调用以在集群节点之间分配负载。
但是,有些工作需要其他工作完成才能开始。到目前为止,这是通过wait
主脚本中的语句实现的。但是,使用 Grid Engine 执行此操作的最佳方法是什么?
我已经在手册页中找到了这个问题以及-W after:jobid[:jobid...]
文档,qsub
但我希望有更好的方法。我们正在谈论首先并行运行的几个 thound 作业,然后在最后一个完成后同时运行另一组相同大小的作业。这意味着我必须根据很多工作排队很多工作。
我可以通过在两者之间使用一个虚拟工作来解决这个问题,除了依赖第一组工作之外什么都不做,第二组可以依赖这些工作。这会将依赖项的数量从数百万减少到数千,但仍然:感觉不对,我什至不确定 shell 是否会接受这么长的命令行。
- 有没有办法等待我所有的工作完成(比如
qwait -u <user>
)? - 或者从这个脚本提交的所有作业(类似
qwait [-p <PID>]
)?
当然,使用qstat
andsleep
在while
循环中编写这样的东西是可能的,但我想这个用例很重要,足以拥有一个内置的解决方案,而我只是无法弄清楚这一点。
在这种情况下,您会推荐/使用什么?
附录一:
由于它是在评论中要求的:
也许也有助于确定确切的pbs系统:
由于到目前为止的注释指向作业数组,因此我在qsub
手册页中搜索了以下结果:
附录二:
我已经尝试过 Dmitri Chubarov 给出的扭矩解决方案,但它不像描述的那样工作。
如果没有作业阵列,它会按预期工作:
但是,使用作业数组第二个作业不会开始:
我猜这是由于第一个返回的作业 id 中缺少数组指示qsub
:
如您所见,没有...[]
表明这是一个作业数组。此外,在qsub
输出中没有...[]
s 但...-1
表示...-2
数组。
所以剩下的问题是如何格式化-W depend=afterok:...
以使作业依赖于指定的作业数组。