问题标签 [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.
cluster-computing - PBS: Requesting only a single core per node without requesting the entire node
I've got processes that need to be farmed out over a cluster that supports PBS, however, due to limitations with the process, I can only run one process per node at a time. Each node has two processors, the ghetto approach would be to simply request two processors per job. But that wastes a core per job. Is it possible to request a single core per job while making sure that only a single process from all of my jobs is running at a time on a given node?
multithreading - PBS(扭矩)未能将四核处理器视为 4 个处理器
我有一个 Debian 集群,每个节点有 2 个节点和两个四核处理器。我使用 Torque 和 Maui 作为调度程序。当我尝试运行具有 16 个进程的 MPI 作业时,调度程序无法运行该作业:要么将其放入队列(尽管当时没有任何作业在运行),要么运行并且生成的输出文件说你试图运行一个只有 4 个处理器的 16 个进程的作业。
我的 .../pbs/server_priv/nodes 文件如下所示:
我用来运行程序的脚本示例如下:
我尝试了很多节点和 ppn 的组合,但是发生了两个错误之一。关于发生了什么的任何想法?
c++ - 共享内存、MPI 和排队系统
我的 unix/windows C++ 应用程序已经使用 MPI 进行了并行化:作业在 N 个 cpus 中拆分,每个块并行执行,非常高效,速度扩展非常好,工作做得很好。
但是有些数据在每个过程中都是重复的,并且由于技术原因,这些数据不能轻易地通过 MPI 拆分(...)。例如:
- 5 Gb 的静态数据,为每个进程加载完全相同的数据
- 可以在 MPI 中分发的 4 Gb 数据,使用的 CPU 越多,每个 CPU 的 RAM 越小。
在 4 CPU 作业中,这意味着至少需要 20Gb RAM 负载,大部分内存“浪费”,这太糟糕了。
我正在考虑使用共享内存来减少整体负载,“静态”块每台计算机只会加载一次。
所以,主要问题是:
是否有任何标准的 MPI 方法可以在节点上共享内存? 某种现成的+免费图书馆?
- 如果没有,我将
boost.interprocess
使用 MPI 调用来分发本地共享内存标识符。 - 共享内存将由每个节点上的“本地主机”读取,并且共享只读。不需要任何类型的信号量/同步,因为它不会改变。
- 如果没有,我将
有任何性能下降或需要注意的特定问题吗?
- (不会有任何“字符串”或过于奇怪的数据结构,一切都可以归结为数组和结构指针)
该作业将在 PBS(或 SGE)排队系统中执行,在进程不干净退出的情况下,我想知道这些是否会清理节点特定的共享内存。
pbs - how to limit number of concurrently running PBS jobs
I have a 64-node cluster, running PBS Pro. If I submit many hundreds of jobs, I can get 64 running at once. This is great, except when all 64 jobs happen to be nearly I/O bound, and are reading/writing to the same disk. In such cases, I'd like to be able to still submit all the jobs, but have a max of (say) 10 jobs running at a given time. Is there an incantation to qsub that will allow me to do such, without having administrative access to the cluster's PBS server?
cluster-computing - 在集群上测试 MPI
我正在集群上学习 OpenMPI。这是我的第一个例子。我希望输出会显示来自不同节点的响应,但它们都来自同一个节点 node062。我只是想知道为什么以及如何实际从不同节点获取报告以显示 MPI 实际上正在将进程分发到不同节点?谢谢并恭祝安康!
ex1.c
ex1.pbs
编译并运行:
更新:
我想在一个 PBS 脚本中运行多个后台作业,以便这些作业可以同时运行。例如,在上面的示例中,我添加了另一个调用来运行 ex1 并将两个运行都更改为 ex1.pbs 中的后台
(1) 在 qsub 这个脚本与之前编译的可执行文件 ex1 之后,结果很好。
(2) 但是我觉得ex1的运行时间太快了,可能两个后台job没有太多的运行时间重叠,当我将同样的方式应用到我的实际项目中时,情况并非如此。所以我在 ex1.c 中添加了 sleep(30) 以延长 ex1 的运行时间,以便在后台运行 ex1 的两个作业几乎一直同时运行。
但是重新编译和再次qsub之后,结果好像不太对劲。有进程中止。在 ex1.o35571 中:
在 ex1.e35571 中:
我想知道为什么有进程中止?如何在 PBS 脚本中正确 qsub 后台作业?
scripting - PBS 编程
关于 PBS 的一些简短且可能很愚蠢的问题:
1-我使用
是否可以在作业文件中提交(子)作业?
2-我有以下脚本:
对于启动 job_b,最好在 job_a 的结果完成之前拥有。是否可以设置某种障碍或其他解决方法,以便在 job_a 完成之前不会启动 job_b?
谢谢
java - 是否有适用于 Torque/PBS 的 DRMAA Java 库?
有人知道已知可与 PBS/Torque 集群软件一起使用的 DRMAA-API 的 Java 实现吗?
这背后的背景:我想使用符合 DRMAA 的 API 从 Java 将作业提交到新设置的 linux 集群。集群由PBS/Torque管理。Torque 包括用于 Torque/PBS 的 PBS DRMAA 1.0 库,其中包含 DRMA-C 绑定并在 libdrmaa.so 和 .a 二进制文件中提供。我知道 Sun Grid Engine 包含一个提供 Java-DRMAA API 的 drmaa.jar。事实上,我选择使用 SGE,但决定先尝试 PBS。
该决定背后的理论是:
“DRMAA 是一种标准,因此 Java API 只需要符合标准的 drmaa-c 绑定。” 但是,我找不到这样的“通用 DRMAA-C-java API”,现在假设这个假设是错误的,并且 Java 库是特定于引擎的。
编辑:我刚刚尝试了来自 sun Grid Engine 包的 drmaa.jar,并尝试将它与 pbs libdrmaa.so 交叉使用。毫不奇怪,那失败了(JNI unsatisfied link error)。
结论:这样不行!经过一番搜索,我只看到以下几个选项:
- 在 Globus 工具包上安装 GridWay。安装在 PBS 之上的 GridWay 声称以 Java 提供 DRMAA。对于我的设置来说,看起来太复杂了。
- 报废 DRMAA,通过从 Java 调用系统命令 qsub、qstat 等提交给 PBS。简单但不是很好。
自己实现一个 drmaa 绑定。太复杂了...
切换到网格引擎。在我看来,GE 在语言绑定方面优于 PBS。
我倾向于选择选项 2。或 4。有什么建议吗?
queue - 如何在 SGE 排队系统中指定等价的 ppn(在 PBS 上)?
有没有办法在 中指定ppn
(或等效的)SGE
?我不想在一个节点中使用所有 cpu,所以我将能够在每个核心上拥有更多内存。(在 PBS 中你会做-l nodes=16:ppn=2
的例子)
谢谢。
linux - R 编程 - 使用 PBS 在多节点 linux 集群上提交作业
我在多节点 Linux 集群上运行 R。我想使用脚本或批处理模式在 R 上运行我的分析,而不使用 MPI 或 snow 等并行计算软件。
我知道这可以通过划分输入数据来完成,以便每个节点运行数据的不同部分。
我的问题是我该怎么做呢?我不确定我应该如何编写我的脚本。一个例子会很有帮助!
到目前为止,我一直在使用 PBS 运行我的脚本,但它似乎只在一个节点上运行,因为 R 是一个单线程程序。因此,我需要弄清楚如何调整我的代码,以便将劳动力分配给所有节点。
到目前为止,这是我一直在做的事情:
1)命令行:
2) myjobs.pbs:
3)myscript.sh:
4) my_script.R:
任何建议将不胜感激!谢谢!
-CC
python - 在集群上使用 python 和 PBS 进行“令人尴尬的并行”编程
我有一个生成数字的函数(神经网络模型)。我希望在带有 Torque 的标准集群上使用 PBS 从 python 测试几个参数、方法和不同的输入(意味着函数的数百次运行)。
注意:我尝试了 parallelpython、ipython 等,但从未完全满意,因为我想要更简单的东西。集群处于我无法更改的给定配置中,这种集成 python + qsub 的解决方案肯定会对社区有益。
为了简化事情,我有一个简单的功能,例如:
其中input
是表示输入的对象,input.name
是字符串,并且do_lots_number_crunching
可能持续数小时。
我的问题是:是否有正确的方法来转换诸如参数扫描之类的东西
进入“某事”会为每次调用该model
函数启动一个 PBS 脚本?
我正在考虑一个包含 PBS 模板并从 python 脚本中调用它的函数,但还无法弄清楚(装饰器?)。