问题标签 [qsub]
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.
parallel-processing - 如何在一个 PBS 作业提交中运行多个命令
我写了一个只需要 1-4 cpu 的代码。但是当我在集群上提交作业时,我必须至少占用一个节点,每个作业有 16 个核心。所以我想在我提交的每个作业的每个节点上运行几个模拟。我想知道是否有一种方法可以在一项工作中并行提交模拟。
这是一个示例:我的代码需要 4 个 CPU。我为一个节点提交了一个作业,我希望该节点运行我的代码的 4 个实例(每个实例具有不同的参数)以占用所有 16 个内核。
bash - 如何使用 awk 和条件管道提交 qsub 作业?
我有一个文件(fasta),我正在使用 awk 从(带有标题的序列)中提取所需的字段。然后我通过管道将其传输到 BLAST 程序,最后通过管道将其传输到 qsub 以提交作业。文件:
和命令(有效):
我想做的是添加一个条件,如果它低于某个阈值,则将对我正在运行的作业数量(使用 qstat)进行采样,该作业将被提交。例如:
不幸的是(无论如何对我来说)我所有的尝试都失败了。我会很感激任何帮助
编辑:详细说明:我想做的是从fasta文件中提取:
或者基本上: >HEADER\nSEQUENCE 一个接一个,并将其通过管道传输到可以采用标准输入的爆炸程序。我想为每个序列创建一个独特的作业,这就是我想为每个序列管道到 qsub 的原因。说白了,qsub 提交看起来像这样:
请注意,如果标准输入序列通过管道传递给它,则 -query 标志是不必要的。但是,对我来说主要的问题是如何结合我上面提到的条件,以便仅当 qstat 结果低于阈值时,序列才会被传送到 qsub。理想情况下,如果 qstat 结果高于阈值,它将休眠直到 i 低于阈值,然后将其向前传递。
谢谢。
cluster-computing - 在 Grid Engine 上并行启动许多不相关的作业?
我经常想在 Grid Engine 集群上启动一组完全不相关的(“令人尴尬的”并行)作业,以达到负载平衡的目的。
我现在所做的是,我为每个作业生成一个 Bash 脚本,然后分别提交它们中的每一个,所有这些都由我编写的 Perl 脚本控制。
如果我只是将所有作业放入一个文件,一行作业,那么 Grid Engine 将按顺序执行这些作业,这并不重要。
有什么方法可以让我只有一个文件,并告诉 Grid Engine 它应该并行执行每一行/作业?
基本上我想要像 Grid Engine Array Jobs 这样的东西。但是数组作业的问题是,它们只有在每个作业之间的变化元素是一个数字或数组中的一个索引,并且这个数字/索引是均匀分布的情况下才有效。但我说的是完全不相关且不共享模式的工作。
qsub - 什么是“千兆字节秒”?
从 qstat (Sun Grid Engine) 联机帮助页:
mem:作业的当前累积内存使用量,以 Gbytes 秒为单位。
这意味着什么?
cluster-computing - pbs作业忙时无输出
我在使用 PBS 时遇到了问题,在我提交的所有作业中,往往有一小部分不会产生应有的任何输出。我必须重新提交他们几次,直到他们都产生了输出。我还注意到,当其他用户提交大量作业时,这尤其糟糕。在这种情况下,我的所有作业都无法生成预期的输出文件。
我只是 PBS 的用户,所以不明白发生了什么。如果有人可以提出一些建议,那就太好了。谢谢。
python - 使用 qsub 提交连续且独立的作业的速度有多快?
这个问题与pbs job no output when busy相关。即当 PBS/Torque 处于“忙碌”状态时,我提交的一些作业没有输出。我想当许多作业一个接一个地提交时会更忙,而且碰巧的是,在以这种方式提交的作业中,我经常得到一些不产生任何输出的作业。
这里有一些代码。
假设我有一个名为“x_analysis.py”的 python 脚本,它将包含一些数据的文件作为其输入,并分析存储在文件中的数据:
现在,假设我需要: (1) 准备 N 个这样的数据文件:data_1.pkl, data_2.pkl, ..., data_N.pkl (2) 对每个文件进行“x_analysis.py”处理,并写入结果到他们每个人的文件。(3) 由于不同数据文件的分析都是相互独立的,所以我打算使用 PBS/Torque 并行运行它们以节省时间。(我认为这本质上是一个“令人尴尬的并行问题”。)
我有这个 python 脚本来执行上述操作:
该脚本准备一组要分析的数据,将其保存到一个文件中,写入一个 pbs 提交文件来分析这组数据,提交作业以执行此操作,然后继续对下一组数据再次执行相同操作, 等等。
事实上,当脚本运行时,作业 ID 列表会在作业提交时打印到标准输出。'ls' 表示有 N 个 .sub 文件和 N 个 .pkl 数据文件。“qstat”显示所有作业都在运行,状态为“R”,然后已完成,状态为“C”。但是,之后,'ls' 显示 .out 输出文件少于 N 个,“x_analysis.py”生成的结果文件少于 N 个。实际上,一些工作没有产出。如果我要清除所有内容,然后重新运行上述脚本,我会得到相同的行为,一些作业(但不必与上次相同)不会产生任何输出。
有人建议,通过增加提交连续作业之间的等待时间,情况会有所改善。
但我觉得这不是最令人满意的,因为我尝试了 0.1s、0.5s、1.0s、2.0s、3.0s,但都没有真正的帮助。有人告诉我,50s 的等待时间似乎很好,但如果我必须提交 100 个工作,等待时间将是大约 5000s,这似乎非常长。
我尝试通过提交作业数组来减少使用“qsub”的次数。我会像以前一样准备所有的数据文件,但只有一个提交文件,“analysis_all.sub”:
然后提交
但即便如此,一些工作仍然不会产生产出。
这是个常见的问题吗?我做的不对吗?在工作提交之间等待是最好的解决方案吗?我可以做些什么来改善这一点吗?
提前感谢您的帮助。
编辑1:
我使用的是 Torque 2.4.7 版和 Maui 3.3 版。
此外,假设作业 ID 为 1184430.mgt1 的作业不产生任何输出,而作业 ID 为 1184431.mgt1 的作业按预期产生输出,当我在这些上使用“tracejob”时,我得到以下信息:
编辑 2:对于不产生输出的作业,“qstat -f”返回以下内容:
与产生输出的工作相比:
似乎一个的退出状态是 0 而另一个不是。
编辑3:
从上面的“qstat -f”输出来看,问题似乎与后期作业文件处理中的“过时 NFS 文件句柄”有关。通过提交数百个测试作业,我已经能够识别出许多产生失败作业的节点。通过ssh
查看这些,我可以在 中找到丢失的 PBS 输出文件/var/spool/torque/spool
,我还可以在其中看到属于其他用户的输出文件。这些有问题的节点的一件奇怪的事情是,如果它们是唯一选择使用的节点,那么作业在它们上运行良好。只有当它们与其他节点混合时才会出现问题。
由于我不知道如何修复后期作业处理“过时的 NFS 文件句柄”,因此我通过向它们提交“虚拟”作业来避开这些节点
在提交实际工作之前。现在所有作业都按预期产生输出,无需等待连续提交。
nodes - 从 sge 下的 qsub 命令中排除节点
我有 200 多个工作需要提交到 sge 集群。我会将它们提交到两个问题中。其中一个问题有一台我不想提交作业的机器。我怎样才能排除那台机器?我发现唯一可能有用的是(假设 q1 可用的三个有效节点和 q2 的所有可用节点都是有效的):
cuda - 如何从文本编辑器在远程终端中运行脚本?
我的问题有点针对我所面临的情况。我真的不确定要在这里搜索什么来找到并回答它。
作为我研究的一部分,我正在开发一些基于 CUDA 的程序。我可以访问带有 GPU 节点的超级计算集群 ( http://www.rcac.purdue.edu/userinfo/resources/carter/ )。我的开发机器是 2011 年末的 13 英寸 MacBook Pro,没有 nVidia GPU。
有两种方法可以在节点上运行 CUDA 应用程序。我可以使用“qsub”来安排作业并等待它运行并获取输出文件。或者我可以使用“qsub -I”命令在 gpu 节点本身上启动一个交互式 shell。这有一些与启动相关的等待时间,但一旦启动,我几乎可以实时运行应用程序,就好像我在本地机器上一样。
现在,我使用 TextMate 或 TextWrangler 之类的东西来编写我的代码。有什么方法可以直接从我的文本编辑器(或任何编辑器)在那个终端( qsub -I one )中运行命令。这样,我将能够比手动将文件复制到服务器、在那里编译和运行它更快地进行更改和测试。
——托马斯
bash - 有没有办法同时使用 qsub 和 source ?
我写了一个shell脚本来分别处理一堆文件,像这样
MyProcessing.sh
是调用脚本,主脚本中的变量和函数在调用脚本中使用。
现在我想将我的 shell 脚本移动到集群中,并qsub
在迭代中使用。我试过了
但它不能以这种方式工作。任何人都可以帮忙吗?先感谢您。
cluster-computing - 如何在具有 2 个计算节点和 1 个头节点的扭矩集群中运行数据包捕获程序?
我使用带有 2 个计算节点和 1 个头节点的扭矩 pbs 配置了一个集群。我使用 qsub 命令(如 qsub myscript.sh)提交了作业
myscript.sh 包含一些 shell 代码。该脚本在任何计算节点中都成功执行,结果我得到了一些输出文件。这种类型的作业提交和执行非常容易。但是我在以下方面面临很多问题......
我有一个用 C 语言编写的带有 libpcap 依赖项的网络数据包捕获模块。我的要求是这样的。我想将此程序提交到不同的计算节点(computenode-0-0,computenode-0-1)。因此,无论所有数据包都到达头节点,这些数据包都将由我在计算节点中运行的程序处理。
我将如何提交 C 程序?计算节点如何进行负载均衡?我必须在集群中做哪些额外的配置?