问题标签 [sungridengine]
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.
regex - 在 Sun Grid Engine (SGE) 中否定多个队列
在为 Sun Grid Engine 作业提交指定目标队列时,是否可以否定多个目标?
通常我会有类似的东西:
它将在与模式“chrom*”不匹配的每个主机/队列上运行。例如,如果我想在除“chrom*”和“reef”之外的每台机器上运行怎么办?我能找到的所有文档都表明 SGE 应该支持这一点(它们支持 OR 和多种模式),但是到目前为止我的所有尝试都失败了。
我尝试过的一些事情:
(等等)。
我在这里忽略了一些简单的事情吗?我找到的关于他们的模式匹配的最佳文档在这里,在“匹配类型”下:http: //linux.die.net/man/1/sge_types
variables - 在 Oracle/Sun GridEngine 中执行 bash 脚本
我有一个脚本,它首先定义一系列变量,然后使用这些变量运行程序。但是,该脚本被 Grid Engine 拒绝(它在工作站上工作,但作为阵列作业的一个组件,它需要通过 SGE 运行),因为变量被作为命令读取,导致“找不到命令”回复。
使用以下内容完全重现该错误:
输出示例:
如何让 GridEngine 使用 bash 作为该脚本的解释器?
linux - 如何在 qsub 命令中使用管道或重定向?
我想使用 qsub(SGE 8.1.3,CentOS 5.9)在网格上运行一些命令,这些命令需要使用管道(|
)或重定向(>
)。例如,假设我必须并行化命令
(显然是一个简化的例子:实际上我可能需要将像 bowtie 这样的程序的输出直接重定向到samtools )。如果我这样做了:
的结果内容hello.txt
看起来像
同样,如果我使用管道 ( echo "hello world" | myprogram
),则该消息将传递给myprogram
,而不是实际的标准输出。
我知道我可以编写一个小的 bash 脚本,每个脚本都包含带有管道/重定向的命令,然后执行qsub ./myscript.sh
. 但是,我正在尝试使用脚本同时运行许多并行化作业,因此我必须编写许多这样的 bash 脚本,每个脚本都使用稍微不同的命令。在编写此解决方案的脚本时,可能会开始感觉非常骇人听闻。Python中此类脚本的示例:
这令人沮丧有几个原因,其中我的程序甚至无法删除许多jobXX.sh
脚本以自行清理,因为我不知道作业将在队列中等待多长时间,并且脚本必须工作开始时到场。
有没有办法将我的完整echo 'hello world' > hello.txt
命令提供给 qsub ,而不必创建另一个包含该命令的文件?
database - 从 IPython 并行集线器数据库中检索结果
我一直在使用 IPython 并行在 SGE 集群上运行并行作业。稍后,当所有作业完成后,我使用作业消息 ID 提交我的作业并从中心数据库 (SQlite) 检索结果。这工作正常,直到我的控制器崩溃;在重新启动控制器时,我无法检索提交给旧控制器的作业。我收到了这个错误:
数据库文件 (tasks.db) 仍然存在,并且大小与集线器崩溃前相同。所以,我确定结果在数据库中。我可以使用新控制器检索它们吗?另外,如果我使用 bd_query 命令:
我得到一个空的结果。
memory - 如何估计将作业提交到运行 SGE 的集群的内存需求?
我正在尝试将作业提交到集群 [运行 Sun Grid Engine (SGE)]。该工作不断被终止,报告如下:
我设定的资源要求是:
mem_free
是我的作业需要h_vmem
的内存量,是作业允许使用的内存量的上限。我想知道我的工作将被终止,因为它需要超过该阈值(12G)。有没有办法估计我的操作需要多少内存?我试图弄清楚应该是上限。提前致谢。
python - Python - glob.glob 在 Unix 操作系统的指定文件路径中找不到 *.txt
我正在将我在 Windows 环境中编写的一些 Python 脚本转换为在 Unix(Red Hat 5.4)中运行,并且在转换处理文件路径的行时遇到了麻烦。在 Windows 中,我通常使用以下方式读取目录中的所有 .txt 文件:
似乎也可以在 Unix 中使用 glob.glob() 方法,所以我正在尝试实现此方法以使用以下代码在名为“source”的目录中查找所有文本文件:
当我运行此代码时,testout.txt 文件按预期出现,但 sourceout.txt 文件为空。我认为如果我改变线路,问题可能会解决
至
然后从 /hill 目录运行代码,但这并没有解决我的问题。其他人知道我如何能够读取源目录中的文本文件吗?对于其他人可以提供的任何见解,我将不胜感激。
编辑:如果相关,上面引用的目录 /afs/ 树位于我通过 Putty SSH 进入的远程服务器上。我还使用 test.job 文件来 qsub 上面的 Python 脚本。(这一切都是为了让自己在 SGE 集群系统上提交作业。) test.job 脚本如下所示:
python - python sge api提交到特定节点
我尝试将我的程序与集群一起使用。现在我创建小作业,并使用 bash 脚本将其提交给特定节点。这些作业将一个大文件复制到节点,在该文件上执行 5 个其他程序,最后该作业将文件复制回来并在节点上将其删除。
这个提交作业的 bash 脚本检查给定目录中有多少硬盘是可用的,计算可以在该节点上运行的最大作业数,并将该作业数发送到该特定节点。这种方法的缺点是我必须在所有作业完成后多次运行这个 bash 脚本。
现在我想用 python 和 drmaa api 做到这一点。但现在我想知道它是否能够使用这个 api 进行节点控制。是否可以使用 drmaa api 提交到特定节点?
或者我是否必须使用 Popen 编写一个解决方法来执行 qsub 命令并通过解析 qstat 命令的输出来获取每个节点的作业数?
java - SGE h_vmem 与 java -Xmx -Xms
在我的工作中,我们有几个运行各种 RHEL 版本的 SGE 集群,我们正在使用更新的 Redhat 测试一个新集群,所有 . 在旧集群(“Centos 5.4 版”)上,我可以提交如下作业,并且运行良好:
echo "java -Xms8G -Xmx8G -jar blah.jar ..." |qsub ... -l h_vmem=10G,virtual_free=10G ...
在新集群“CentOS release 6.2 (Final)”上,具有这些参数的作业由于内存不足而失败,我必须将 h_vmem 更改为 h_vmem=17G 才能使其成功。新节点的 RAM 大约是旧节点的 3 倍,在测试中我一次只做几个工作。
在旧集群上,我将 设置-Xms/Xms
为N
,我可以使用N+1
orso 作为h_vmem
. 在新集群上,除非我设置h_vmem
为2N+1
.
我写了一个很小的 perl 脚本,它所做的只是逐步使用消耗更多内存并定期打印出使用的内存,直到它崩溃或达到限制。h_vmem 参数使其在预期的内存使用情况下崩溃。
我尝试了多个版本的 JVM(1.6 和 1.7)。如果我省略h_vmem
,它可以工作,但是运行起来风险更大。
我搜索了其他人看到类似问题的地方,但没有找到解决方案。
cpu-usage - SGE 节点的负载能否超过 CPU 的数量?
我正在 Sun Grid Engine(现在称为 Oracle Grid Engine)集群上运行作业。为了查看我的工作是否因为节点超载而变慢,我尝试检查节点的状态:
和
现在,load_avg
是 103.41,而NCPU
只有 64。这应该发生吗?某些作业是否使用 CPU 而不是分配给它们的插槽?
更新:响应查询,配置被上传到http://pastebin.com/hLnJBetS。
sungridengine - SGE hold_jid 和捕获失败的作业
我有一个脚本,它提交多个作业以在 SGE 队列上并行运行,另一个收集脚本在此作业列表完成时执行。我-hold_jid wc_job_list
用来在并行作业运行时保持收集脚本的执行。
我只是注意到有时某些并行作业会失败,而收集脚本仍在运行。该文件指出:
如果任何引用的作业以退出代码 100 退出,则提交的作业将仍然没有资格执行。
如何捕获并行失败的作业退出状态,以便如果其中任何一个因任何原因失败,则不会执行收集脚本或给出错误消息?