- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有了 PBSpro,我可以请求资源来运行我的工作。我的并行集群作业归结为多次运行同一个文件,每次都使用不同的索引/作业 ID。每个任务都会产生自己的子进程,每个任务总共使用 4 个 CPU。这项工作是令人尴尬的并行,每个任务彼此独立,因此非常适合 GNU 并行工具。为了充分利用集群并在有空间的地方压缩我的任务,我向 PBS 发出资源请求,如下所示:PBS -l select=60:ncpus=4:mpiprocs=1
。生成的 $PBS_NODEFILE
然后包含分配给该任务的主机列表。
问题在于 PBSpro 作业管理器可以将多个作业分配给同一个节点,或者仅将 1 个作业分配给一个节点,并且必须以某种方式将此信息并行传递给 GNU。使用 --sshloginfile $PBS_NODEFILE
这样做不会传递每个节点上可用的不同资源信息(而且 GNU parallel 似乎只使用此列表中的唯一名称)。
出错的地方是 GNU parallel 看到 X 核数(主机/节点的核数),不管是否只有 1 个作业分配给该主机。限制每台主机的作业数量会导致内核闲置时主机使用效率低下,或者在主机上运行的任务多于超额订阅内核的可用资源。
问题归结为:
最佳答案
使用-S
标志来指定服务器和x/$SERVERNAME
变体来限制CPU的数量(x
)对于那个服务器。
第一步是使用bash生成输入-S
标志
NCPU=4
HOSTS=`cat $PBS_NODEFILE | uniq-c | awk 'BEGIN{OFS=""}{print $1*$NCPU,"/",$2}'|tr '\n' ','|sed 's/,$//'`
( credit to Hiu )
这个 bash 命令输出一个服务器列表,每个服务器都有可用的 cpu 核心数。
然后并行运行如下:
PERC=$((100/$NCPU))
序列 0 999 | parallel -j $PERC% -N1 -u -S $HOSTS "cd $PBS_O_WORKDIR; python3 $WORKING_PATH$INPUT_FILENAME {}"
地点:
seq 0 999
运行 1000 个任务,ID 范围从 0 到 999(包括 999)-j $PERC%
= -j 25%
(100%/4
4 个 CPU)-N1
仅向每个任务发送 1 个参数-u
立即打印输出(并且有一些速度优势)关于hpc - PBS:GNU parallel:分配的主机不同,多 CPU 作业,一些主机的多个作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50289943/
类似于: #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 中是可能的。如果您有共享文件系统,则
我是一名优秀的程序员,十分优秀!