在clus上使用python和PBS进行“令人尴尬的并行”编程

2024-10-16 20:45:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个产生数字的函数(神经网络模型)。我希望在一个带有Torque的标准集群上使用PBS测试python中的几个参数、方法和不同的输入(意味着数百次函数运行)。

注意:我尝试了parallelpython、ipython等等,但从未完全满意,因为我想要更简单的东西。集群处于我无法更改的给定配置中,这样一个集成python+qsub的解决方案肯定会对社区有益。

为了简化,我有一个简单的函数,例如:

import myModule
def model(input, a= 1., N=100):
    do_lots_number_crunching(input, a,N)
    pylab.savefig('figure_' + input.name + '_' + str(a) + '_' + str(N) + '.png')

其中,input是表示输入的对象,input.name是字符串,do_lots_number_crunching可能持续几个小时。

我的问题是:有没有一种正确的方法来转换像参数扫描这样的东西

for a in pylab.linspace(0., 1., 100):
    model(input, a)

进入“something”,为每次调用model函数都启动一个PBS脚本?

#PBS -l ncpus=1
#PBS -l mem=i1000mb
#PBS -l cput=24:00:00
#PBS -V
cd /data/work/
python experiment_model.py

我正在考虑一个包含PBS模板并从python脚本中调用它的函数,但是还没有找到它(decorator?)。


Tags: 方法函数name脚本numberinput参数model