【问题标题】:using qsub (sge) with multi-threaded applications在多线程应用程序中使用 qsub (sge)
【发布时间】:2011-11-30 10:54:15
【问题描述】:

我想向我正在使用的集群网络提交一个多线程作业 - 但是关于 qsub 的手册页不清楚这是如何完成的——默认情况下,我猜它只是将其作为正常工作发送,而不管多线程如何——但这可能会导致问题,即将许多多线程工作发送到同一台计算机,放慢速度。

有谁知道如何做到这一点?谢谢。

批处理服务器系统是 sge。

【问题讨论】:

  • 如果你不告诉我们你使用的是哪个批处理系统,这个问题是完全无法回答的(有几个调用他们的提交命令qsub)。
  • 对不起,我正在使用 sge。也编辑过问题。
  • 不知道那个所以帮不上忙。

标签: linux multithreading qsub


【解决方案1】:

在 SGE/UGE 中,配置由管理员设置,因此您必须检查他们所说的并行环境

qconf -spl 
make
our_paraq

在配置中查找带有$pe_slots 的配置

qconf -sp make
qconf -sp our_paraq

具有您要使用的环境和核心数量的 qsub

qsub -pe our_paraq 8 -cwd ./myscript

如果您使用 mpi,您可以有更多的配置分配规则选择(上面的 $pe_slots),例如 $round_robin$fill_up,但这应该可以帮助您。

【讨论】:

    【解决方案2】:

    如果您的工作是多线程的,即使在 SGE 中,您也可以利用多线程的优势。在 SGE 中,单个作业可以使用一个或多个 CPU。如果您提交使用单处理器的作业,并且您的程序的线程数超过了单处理器的处理能力,则会出现问题。验证您的作业正在使用多少个处理器,以及您的程序正在为每个 CPU 创建多少个线程。

    在我的例子中,我有一个使用一个处理器和两个线程的 java 程序,它的工作效率很高。我提交相同的 java 程序以执行到多个 CPU,每个 CPU 有 2 个线程,以使其并行,因为我没有使用 MPI。

    【讨论】:

    • 如何指定线程数?是否也需要指定环境?
    • qsub -N myJobName -o outFile.txt -e errorFile.txt -l slot=2 myscript.sh
    【解决方案3】:

    用户“j_m”的回答非常有帮助,但在我的情况下,我需要同时请求多个内核并将我的工作提交到特定节点。经过大量搜索,我终于找到了一个适合我的解决方案,我将其发布在这里,以便其他可能有类似问题的人不必经历同样的痛苦(请注意,我是将此作为答案而不是回复,因为我在回复方面没有足够的声誉):

    qsub -S /bin/sh -cwd -l h=$NODE_NAME -V -pe $ENV_NAME $N_OF_CORES $SCRIPT_NAME
    

    我认为变量 $NODE_NAME、$N_OF_CORES 和 $SCRIPT_NAME 非常简单。您可以按照“j_m”的答案轻松找到 $ENV_NAME。

    【讨论】:

      猜你喜欢
      • 2013-07-14
      • 2012-05-15
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多