如果您仅将“make”作为可能的并行环境,那么这意味着您的集群上没有设置并行环境。
根据这两种情况,您的问题有两种解决方案:
A) 您拥有集群的 root/admin 访问权限
B) 你没有
如果是 B,请让您的管理员创建一个并行环境。在情况 A 中,您必须创建一个并行环境。要创建新的并行环境,您必须键入(需要 root/admin 权限):
qconf -ap <pe_name>
默认编辑器将从您必须编辑的默认 pe_conf 文件开始。如果您只需要设置一个 openMP 并行环境,您可以使用以下选项:
pe_name smp
slots 9999
user_lists NONE
xuser_lists NONE
start_proc_args /bin/true
stop_proc_args /bin/true
allocation_rule $pe_slots
control_slaves FALSE
job_is_first_task FALSE
urgency_slots min
accounting_summary TRUE
对于 MPI 并行环境:
pe_name mpi
slots 9999
user_lists NONE
xuser_lists NONE
start_proc_args /opt/sge/mpi/startmpi.sh $pe_hostfile
stop_proc_args /opt/sge/mpi/stopmpi.sh
allocation_rule $fill_up
control_slaves FALSE
job_is_first_task TRUE
urgency_slots min
accounting_summary TRUE
如您所见,在后一种情况下,您会将 SGE 指向 MPI 配置的正确初始化脚本和关闭脚本。在第一种情况下,您只需指向/bin/true。
allocation_rule 在此示例中有所不同。 $fill_up 表示 SGE 将使用 MPI 作业的一部分填充它可以找到的任何 CPU,而对于 smp 配置,您只需在同一台机器上分配正确数量的插槽,即 $pe_slots。
如果您使用 MPI,则应使用高性能交换机(例如 infiniband)连接您的节点,否则您的工作将花费更多时间进行通信而不是计算。
编辑:
哦,顺便说一句:在并行环境中提交作业的正确合成器是有效的:
qsub -pe <pe_name> <nb_slots>
最终编辑:
这个问题的最终答案在下面的 cmets 中。实际上,如果集群上没有设置并行环境 (PE),SGE 将无法处理多线程作业。如果您没有集群的管理员权限,您必须 猜测 使用 qconf -spl 使用正确的 PE 并使用 qconf -sp <pe_name> 检查不同的 PE,或者在您的软件允许用户指定必须使用的 PE。
否则,即如果集群上没有可用的 PE,您将无法使用软件的并行版本。
有关详细信息,请参阅 cmets。