4

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

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

批处理服务器系统是 sge。

4

3 回答 3

5

在 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_robinand $fill_up,但这应该可以帮助您。

于 2012-09-03T20:55:28.993 回答
0

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

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

于 2012-01-26T13:18:25.717 回答
0

用户“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。

于 2020-09-24T04:55:24.493 回答