使用 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> [...]]