使用 Joblib 并行化将 python 脚本提交到 Sun Grid Engine
Submit python script to Sun Grid Engine with Joblib parallelization
我有一个 python 脚本,它使用 joblib
模块和 loky
后端进行并行化,n_jobs
设置为 12
。我想知道我应该如何使用 qsub
命令将它提交给 sun 网格引擎。
我有这样的东西:
qsub -q all.q \
-l h_vmem=14G \
-V \
-N \
-pe all.pe \
12 \
script.py
对于带有 joblib
模块的 python 脚本,这会像预期的那样工作吗?
Q : "Would that work as expected for python script with joblib
module?"
这取决于人们对 "as expected" 子句的期望,不是吗?
Python-解释器,如上所述,肯定会实例化12
n_jobs
-控制数量的自我"copied" 流程实例(执行为 loky
已实施),因为它被指示这样做。
但是,qsub
已经请求SGE/SoGE/*GE预配置GE,以便下一次操作 12
并行环境实例(即完全独立 运行ning 12
python 进程,每个进程有 14 [GB] RAM
分配要求 ~ 168 [GB] RAM
- 所以希望你至少有那么多的物理 RAM 资源,否则会很糟糕-thrashing 开始,对 joblib
(仅稍后出现)技巧可能产生的任何期望造成毁灭性的不利影响。
每个这样的 Python 进程,在它自己的 SGE/SoGE PARALLEL_ENVIRONMENT
内部将稍后启动它自己的 12
loky
-机械化joblib
-口述n_jobs
,导致总共 144
。他们工作量的性质将决定,如果这些变成 "wasted",如果 disk-I/O-bound,"underperforming",如果 CPU/RAM-traffic 的总和已经进入物理 RAM-I/O-bound 上限,或 "smart",如果资源和需求在整个计算图 运行 中遵守 Lege Artis 平衡(我的帽子确实会受到尊重)。
最佳 Next Step :
与您的 SGE/SoGE 技术支持部门一起修改 configuration,最好在提交主要作业之前使用预测试 运行,并添加 -v
"Verifier" :
######################################################
# this-JOB-SUBMISSION-CONFIGURATION-file
######################################################
# Usage:
#
# gsub @<this-JOB-SUBMISSION-CONFIGURATION-file>
#
# Remarks:
#
# qsub -q all.q \ ### -q define-LIST-OF-QUEUES 2B used 4scheduling this JOB
# -l h_vmem=14G \ ### -l define-RESOURCES
# -V \ ### -V export-ALL-ENVIRONMENT-VARS to the job-CONTEXT
# -N \ ### -N qsub-JOB-NAME ? a missing value :: rather test with adding -v qsub-JOB-SUBMISSION-VERIFIER
# -pe all.pe 12 \ ### -pe instantiate-PARALLEL-ENVIRONMENTS <pe_name> <pe_min>[-][ <pe_max> ]
# script.py ### <command> [ <command_parameters> [...]]
我有一个 python 脚本,它使用 joblib
模块和 loky
后端进行并行化,n_jobs
设置为 12
。我想知道我应该如何使用 qsub
命令将它提交给 sun 网格引擎。
我有这样的东西:
qsub -q all.q \
-l h_vmem=14G \
-V \
-N \
-pe all.pe \
12 \
script.py
对于带有 joblib
模块的 python 脚本,这会像预期的那样工作吗?
Q : "Would that work as expected for python script with
joblib
module?"
这取决于人们对 "as expected" 子句的期望,不是吗?
Python-解释器,如上所述,肯定会实例化12
n_jobs
-控制数量的自我"copied" 流程实例(执行为 loky
已实施),因为它被指示这样做。
但是,qsub
已经请求SGE/SoGE/*GE预配置GE,以便下一次操作 12
并行环境实例(即完全独立 运行ning 12
python 进程,每个进程有 14 [GB] RAM
分配要求 ~ 168 [GB] RAM
- 所以希望你至少有那么多的物理 RAM 资源,否则会很糟糕-thrashing 开始,对 joblib
(仅稍后出现)技巧可能产生的任何期望造成毁灭性的不利影响。
每个这样的 Python 进程,在它自己的 SGE/SoGE PARALLEL_ENVIRONMENT
内部将稍后启动它自己的 12
loky
-机械化joblib
-口述n_jobs
,导致总共 144
。他们工作量的性质将决定,如果这些变成 "wasted",如果 disk-I/O-bound,"underperforming",如果 CPU/RAM-traffic 的总和已经进入物理 RAM-I/O-bound 上限,或 "smart",如果资源和需求在整个计算图 运行 中遵守 Lege Artis 平衡(我的帽子确实会受到尊重)。
最佳 Next Step :
与您的 SGE/SoGE 技术支持部门一起修改 configuration,最好在提交主要作业之前使用预测试 运行,并添加 -v
"Verifier" :
######################################################
# this-JOB-SUBMISSION-CONFIGURATION-file
######################################################
# Usage:
#
# gsub @<this-JOB-SUBMISSION-CONFIGURATION-file>
#
# Remarks:
#
# qsub -q all.q \ ### -q define-LIST-OF-QUEUES 2B used 4scheduling this JOB
# -l h_vmem=14G \ ### -l define-RESOURCES
# -V \ ### -V export-ALL-ENVIRONMENT-VARS to the job-CONTEXT
# -N \ ### -N qsub-JOB-NAME ? a missing value :: rather test with adding -v qsub-JOB-SUBMISSION-VERIFIER
# -pe all.pe 12 \ ### -pe instantiate-PARALLEL-ENVIRONMENTS <pe_name> <pe_min>[-][ <pe_max> ]
# script.py ### <command> [ <command_parameters> [...]]