问题标签 [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.

0 投票
0 回答
123 浏览

c++ - 挂起/恢复线程,具体由处理器 Linux 执行代码

我正在开发一个可以在 PBS 下运行的程序,它具有特定的 CPU 计数,小于 CPU 的总数。我以前曾说过,如果程序超出限制,PBS 会通过终止程序来强制执行此限制。

我的程序将使用线程,但是它们将有几个阻塞命令,并且我想在此期间运行其他线程,因此我将暂停线程并将其放入队列中,同时恢复另一个线程。

但是 Linux 没有实现 pthread_suspend 等。解决方法是使用互斥锁,但是这通过一个循环在低级别工作,该循环可重复检查状态并锁定它N 个线程正在运行 >N 个 cpus 可能正在使用并且 PBS 将终止程序。

任何人都有不会导致此问题的解决方法吗?

最终,我的目标是防止我的程序使用超过 N 个处理器,而不会在阻塞调用期间浪费处理器时间,并且对此我很满意的解决方案(适用于 Linux 和 Windows)。

0 投票
5 回答
6491 浏览

python - 在没有实际作业文件的情况下提交 qsub 作业的语法?

我想在不创建离散作业文件的情况下即时提交 qsub 作业。所以,假设我有一个名为“get_time.py”的python 脚本,它只报告时间。而不是像这样制作提交脚本:

...然后提交作业:qsub job.sub

我希望能够绕过文件创建步骤,并且我认为该构造将是这样的: qsub -d . -e get_time.py

我的虚构参数在哪里-e告诉 qsub 以下是要发送到调度程序的代码,而不是使用离散的提交文件。

我疯了吗?似乎应该已经有一个简单的解决方案,但我无法在任何地方找到它。感谢您的任何建议!

0 投票
0 回答
427 浏览

arrays - 提交中的 PBS 作业数组 ID 占位符

我在网上搜索这个问题的答案但是我找不到任何有用的东西,所以我觉得我正在寻找的东西是不可能的,但也许我错过了一些东西......所以我只是想在这里问:

提交 PBS 作业数组时,我希望每个作业的 WORKING DIRECTORY 依赖于数组 ID。一个小例子来澄清。对于一个从 1 到 100 ( qsub -t 1-100 -v $array_size=100 .... called_script.sh) 的作业数组,每个作业都有自己的工作目录 bundle_1-100、bundle_2-100、..... bundle_100-100。Atm 我只使用该$PBS_ARRAY_ID变量和一个包含数组大小 ( $array_size) 的传递变量来导航到相应的文件夹。

Imo 这个解决方案并不是真正的最佳解决方案,因为我正在修复called_script.sh提交脚本调用的脚本中的命名方案。

因此,如果在提交作业时会有某种占位符作为作业数组 id ,即. 所以每个 called_script.sh 都会自动有一个不同的变量。qsub -t 1-100 -v $somevar=/some/directory/path/bunch-#PBS_ARRAY_ID_PLACEHOLDER-100 ... called_script.sh$somevar

我认为理论上应该是可能的,但是我觉得这只是理论:)。

提前谢谢任何答案

0 投票
1 回答
538 浏览

bash - 脚本中的 Trap 命令在从 CLI 调用时有效,但在 PBS 作业中使用时无效

我有以下简单的 bash 脚本:

当我从命令行运行此脚本时:即

然后通过发送 CTRL+CI 中断脚本获取两封电子邮件。一个包含消息:“收到信号退出”。另一个包含消息“收到信号 SIGINT”。

但是,当我将此脚本作为 PBS 作业运行时:

然后等待一两分钟,对提交的作业执行 qdel,我只收到一封包含“received signal EXIT”的电子邮件。虽然我还希望收到一封说明收到信号 SIGTERM 的电子邮件,但因为 qdel 手册页指出:

有人知道这是为什么吗?理想情况下,当我的脚本中的某些内容返回不同于 0 的退出代码时,我希望收到一封电子邮件,但我也想在脚本提前终止时收到一封不同的电子邮件,例如由于 SIGINT 或 SIGTERM。

一些附加信息,当我修改该行时:

我可以看到执行的最后一个命令是“mailx -s”SIGTERM”“someone@anywhere.com”而不是“sleep 1000”。所以它似乎是 SIGTERM 信号被捕获的情况,但随后的陷阱命令确实不适用于 PBS 工作...

0 投票
1 回答
568 浏览

bash - 当作业运行时,PBS(扭矩)调度程序不会从 .bash_profile 加载我的别名?

我的主目录中的 .bash_profile 文件中有一堆别名声明、函数、PATH 添加等。我还使用 PBS(扭矩)调度系统。通常,一切正常,我可以从 bash 访问我的别名。但是,当我提交工作时,我的别名没有被加载。

我想也许 .bash_profile 文件在作业开始运行时没有被加载,所以在我的作业脚本中我包含了一个~/.bash_profile语句,我可以通过包含一个小语句来确认正在访问该文件echo Testing!,但我的别名仍然是'工作。

这是我的 .bash_profile 的示例:

这是我的作业脚本 commands.sub 的示例:

但是,我总是得到这个输出:

谁能给我一些建议以使这项工作正常进行?!谢谢!

0 投票
2 回答
627 浏览

python - 在脚本完成之前输出文件不包含任何内容

我编写了一个 python 脚本,其中有几个print语句。打印出来的信息可以帮助我监控脚本的进度。但是,当我将包含 的 bash 脚本 qsubpython my_script &> output到计算节点上时,即使脚本正在运行并打印某些内容,输出文件也不包含任何内容。输出文件将包含脚本完成后的输出。那么如何在脚本运行时通过输出文件实时获取输出。

0 投票
3 回答
2591 浏览

pbs - 错误:pbs_iff:无法读取来自 pbs_server 的回复

我已经安装了 Torque-4.2.6 版本。我的机器有 RHEL 6 操作系统。我已经通过 user1 登录安装,因为它具有 root 权限。每当我执行“pbsnodes -a”命令时,它都能正常工作。如果我通过 user2 登录到同一台机器上,每当我执行 'pbsnodes -a' 时,它都会抛出以下错误。

pbs_iff: 无法读取来自 pbs_server 的回复 无权限。pbsnodes:无法连接到服务器“node1”,错误=15007(未经授权的请求)

没有像 pbs_iff 这样的可执行文件。可能是什么问题呢。?谁能帮我。?

0 投票
1 回答
990 浏览

pbs - 我可以更改 TORQUE 资源管理器中暂停的作业的 PBS 脚本文件吗?

我在锁定的作业队列中有几个作业,状态为UserHold. 有没有办法编辑启动它们的 PBS 文件?我qalter以前用来更改walltime、组或名称。这次我想在提交的 PBS 文件中更改 arun 调用的参数。

0 投票
1 回答
654 浏览

scripting - 为什么 pbs(dsh) 将我的任务安排到一个节点上?

我想在 2 个不同的节点上执行 foo.sh。因此,我编写了以下脚本:

使用 Cluster_ExecExp_pbsdsh.sh:

奇怪的是, foo.sh 总是在同一个节点的两个 CPU 上执行 :(

那么:为什么 pbs(dsh) 将我的任务安排到一个节点上,即使我指定了 nodes=2:ppn=1?(我是否必须在我的两个脚本中都提供这些参数?)


更新:如果 foo.sh 由

然后我得到 output.txt:

因此,似乎给参数 -l nodes=2:ppn=1 两次会导致 qsub 和 pbsdsh 两次分配作业。但我仍然不明白为什么作业没有安排在不同的机器上。

0 投票
0 回答
598 浏览

bash - 在下一个命令之前等待一组 qsub 作业完成

由于我使用的集群中的资源限制,我在bash中使用for循环提交了一堆作业。我想在下一个命令之前等待 pbs 中的所有作业完成。这里的链接似乎解决了我的问题等待一组 qsub 作业完成 ,但如果我没有下一个作业脚本要运行但一些简单的 bash 命令,我仍然很困惑我应该在 -cwd 之后放置什么

这是for循环提交pbs任务

在所有 JobFiles 在 pbs 中完成之后,我想使用一些基本命令 cat/cut 等来总结 TransDecoder 的输出,比如

任何人都可以帮忙吗?谢谢