- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我需要“并行”运行许多串行程序(因为问题很简单但耗时 - 我需要读取同一程序的许多不同数据集),那么解决方案很简单如果我只使用一个节点。我所做的就是在每个命令后继续提交带有“&”号的串行作业,例如在作业脚本中:
./program1 &
./program2 &
./program3 &
./program4
这自然会在不同的处理器上运行每个串行程序。这在登录服务器或独立工作站上运行良好,当然也适用于仅需要一个节点的批处理作业。
但是如果我需要运行同一程序的 110 个不同实例来读取 110 个不同的数据集怎么办?如果我使用提交 110 个 ./program# 命令的脚本提交到多个节点(比如 14 个),批处理系统是否会在不同节点上的不同处理器上运行每个作业,或者会尝试在同一处理器上运行它们, 8核心节点?
我尝试使用简单的 MPI 代码来读取不同的数据,但会导致各种错误,110 个进程中约有 100 个进程成功,其他进程崩溃。我也考虑过作业数组,但我不确定我的系统是否支持它。
我已经在各个数据集上广泛测试了串行程序 - 没有运行时错误,并且我没有超出每个节点上的可用内存。
最佳答案
不会,PBS 不会自动为您在节点之间分配作业。但这是一件很常见的事情,您有几种选择。
最简单且在某些方面对您来说最有利的是将任务打包成 1 节点大小的 block ,并将这些任务包作为单独的作业提交。这将使您的工作更快开始; 1 节点作业通常比 14 节点作业调度得更快,只是因为调度中单节点大小的漏洞多于 14 个节点。如果所有作业花费的时间大致相同,那么这种方法效果特别好,因为这样除法就非常简单了。
如果您确实想在一项工作中完成所有工作(例如,为了简化簿记),您可能有权也可能没有访问 pbsdsh 命令;有一个很好的讨论here 。这使您可以在作业中的所有处理器上运行单个脚本。然后,您编写一个脚本来查询 $PBS_VNODENUM 以找出它是哪个 nnodes*ppn 作业,并运行相应的任务。
如果不是 pbsdsh,Gnu parallel是另一个可以极大地简化这些任务的工具。如果您熟悉的话,它就像 xargs,但会并行运行命令,包括在多个节点上。因此,您可以提交(比如说)14 节点作业,并让第一个节点运行 gnu 并行脚本。好处是,即使作业的长度并不相同,这也会为您进行调度。我们向系统上的用户提供的关于使用 gnu 并行处理此类事情的建议是 here 。请注意,如果您的系统上没有安装 gnu parallel,并且由于某种原因您的系统管理员不会这样做,您可以在您的主目录中设置它,这不是一个复杂的构建。
关于pbs - PBS 批处理系统是否跨节点移动多个串行作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5453427/
类似于: #PBS -t 0-99 #PBS -d "~/$PBS_ARRAYID.output" 我在这里要做的是使用作业的数组 ID 重新定义作业数组中每个作业的工作目录。这是有效的代码吗? 我需
如果我需要“并行”运行许多串行程序(因为问题很简单但耗时 - 我需要读取同一程序的许多不同数据集),那么解决方案很简单如果我只使用一个节点。我所做的就是在每个命令后继续提交带有“&”号的串行作业,例如
我知道我可以使用 qstat 查看 pbs 作业请求了多少内存,但是有没有办法查看作业当前使用了多少内存? 谢谢! 最佳答案 qstat -f 应该向您显示有关作业内存使用情况的最新信息 关于pbs
向 PBS 排队系统提交作业脚本时,会自动或由用户指定挂墙时间,例如通过 #PBS -l walltime=1:00:00 问题是这个时间是否可以从作业脚本中访问。是否有环境变量或其他方式来获取此墙时
我向 PBS 提交了几份工作。现在,我希望我最后提交的作业是第一个。 一种选择是保留所有预览作业(使用 qhold )。问题是我用了-W depend=afterok:切换以在预览作业结束后立即启用作
我低估了一项工作所需的时间。是否可以在作业运行时更改作业的时间限制? 最佳答案 qalter jobid -l walltime=X 您可以阅读qalter文档here . 关于pbs - 有没有办法
我有一个 64 节点集群,运行 PBS Pro。如果我提交数百个作业,我可以同时运行 64 个作业。这很棒,除非所有 64 个作业恰好都接近 I/O 限制,并且正在读/写同一磁盘。在这种情况下,我希望
当您向 PBS 服务器提交作业时,是否可以指定我们不想使用的节点? 谢谢 最佳答案 您可以使用 excludenodes排除两个特定的主机,例如 #PBS -l excludenodes=host1:
我已经执行了以下命令。 qmgr -c "create queue fastq queue_type=execution" qmgr -c "set queue fastq started=true"
默认情况下,提交作业到扭矩队列的输出将保存到名为 job_name.o658392 的文件中。使用该示例,我想要做的是将输出文件命名为 658392.job_name.log。 我知道我可以通过在脚本
我正在尝试运行命令 qstat 但我没有获得队列状态,而是看到了这个错误: Cannot resolve default server host 'torqueserver' - check serv
我需要在 PBS 集群上运行 Java 应用程序,但我不太清楚它应该如何运行。 应用程序启动了几个线程,线程的数量取决于运行它的节点上的内核数量。然后它为每个核心启动 2 个线程。 对我来说最好的事情
例如,我有一个文件/home/user/nodes,其中包含: node1 node2 node3 node4 ... 当我尝试提交如下作业时: qsub -v PBS_NODEFILE=/home/
命令 'qstat -a' 输出许多已完成作业的信息行,所有作业都具有状态 'C'。似乎他们会永远留下来。由于这些工作已经“完成”,如何清理这些不需要的工作信息?谢谢! 最佳答案 这由 qmgr 参数
当您向 PBS 服务器提交作业时,是否可以在列表中指定我们要使用的节点? 谢谢 最佳答案 是的。使用 qsub 时,请使用 -l 选项指定节点名称。例如 qsub -l nodes=b2005+b18
当我使用 提交作业时 qsub script.sh $@ 是否在 script.sh 中设置为某个值?也就是说,是否有任何命令行参数传递给 script.sh? 最佳答案 您可以使用 qsub 的 -
我正在尝试编写一个(Python)函数来生成 PBS 作业提交脚本。用户应该能够请求作业的一些限制,例如每个节点的进程数、内存量和挂起时间。我找到了很多关于如何设置这些资源的示例,但我从未找到准确的描
我必须使用不同的参数(或随机数生成器种子)运行同一模型的多次模拟。之前我在一个具有多个核心的服务器上工作,我在其中使用了带有 apply_async 的 python 多处理库。这非常方便,因为我可以
我想弄清楚如何让我的 PBS 脚本使用 vim 以 bash 格式突出显示。 PBS 脚本只是 bash 脚本,它们不以 clasic shebang 开头,而是用于集群计算机上的排队系统。必须有一种
我有一个长期运行的 Torque/PBS 工作,我想监控输出。但是只有在作业完成后才会复制日志文件。有没有办法说服 PBS 刷新它? 最佳答案 这在 TORQUE 中是可能的。如果您有共享文件系统,则
我是一名优秀的程序员,十分优秀!