“смущающе найдите что-либо подобное” программирующий использование Python и PBS на кластере

У меня есть функция (модель нейронной сети), который производит числа. Я хочу протестировать несколько параметров, методов и различных исходных данных (значение сотен выполнений функции) от использования Python PBS на стандартном кластере с Крутящим моментом.

Примечание: Я попробовал 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)

во "что-то", что запустило бы сценарий PBS для каждого вызова к model функция?

#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, но еще не могла понять это (декоратор?).

10
задан meduz 22 July 2010 в 10:43
поделиться

1 ответ

pbs_python [1] может работать для этого. Еслиexpert_model.py 'a' в качестве аргумента, вы можете использовать

import pbs, os

server_name = pbs.pbs_default()
c = pbs.pbs_connect(server_name)

attopl = pbs.new_attropl(4)
attropl[0].name  = pbs.ATTR_l
attropl[0].resource = 'ncpus'
attropl[0].value = '1'

attropl[1].name  = pbs.ATTR_l
attropl[1].resource = 'mem'
attropl[1].value = 'i1000mb'

attropl[2].name  = pbs.ATTR_l
attropl[2].resource = 'cput'
attropl[2].value = '24:00:00'

attrop1[3].name = pbs.ATTR_V

script='''
cd /data/work/
python experiment_model.py %f
'''

jobs = []

for a in pylab.linspace(0.,1.,100):
    script_name = 'experiment_model.job' + str(a)
    with open(script_name,'w') as scriptf:
        scriptf.write(script % a)
    job_id = pbs.pbs_submit(c, attropl, script_name, 'NULL', 'NULL')
    jobs.append(job_id)
    os.remove(script_name)

 print jobs

[1]: https://oss.trac.surfsara.nl/pbs_python/wiki/TorqueUsage pbs_python

4
ответ дан 4 December 2019 в 01:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: