QSUB процесс для каждого файла в каталоге? - PullRequest
1 голос
/ 02 сентября 2011

Я использую

qsub -t 1-90000 do_stuff.sh

чтобы отправить мои задачи в кластер Sun GridEngine, но теперь я нахожусь с наборами данных (тоже очень большими), которые не так удобно называть. Какой лучший способ пойти по этому поводу? Я мог бы попытаться переименовать их все, но имена содержат информацию, которую необходимо сохранить, и это, очевидно, создает массу проблем. Я мог бы просто предварительно обработать все в jsons, но если есть способ просто qsub -all_contents_of_directory, это было бы идеально.

Я СОЛ? Должен ли я просто перейти к соответствующему каталогу и найти -exec 'qsub setupscript.sh {}'?

Ответы [ 4 ]

1 голос
/ 05 февраля 2012

Используйте другой сценарий для отправки работы - вот пример, который я использовал, где я хочу имя каталога в названии работы.«run_openfoam» - это скрипт pbs в определенном каталоге.

#!/bin/bash
cd $1
qsub -N $1 run_openfoam

Вы можете адаптировать этот скрипт в соответствии со своей работой, а затем запустить его через цикл в командной строке.Таким образом, вместо отправки массива заданий, вы отправляете задание для каждого имени каталога, переданного в качестве первого параметра этому сценарию.

1 голос
/ 16 февраля 2012

Я склонен использовать Makefiles для автоматизации этого материала:

INPUTFILES=$(wildcard *.in)
OUTPUTFILES=$(patsubst %.in,%.out,$(INPUTFILES))

all : $(OUTPUTFILES)

%.out : %.in
        @echo "mycommand here < $< > $@" | qsub 

Затем введите «make», и все файлы будут отправлены в qsub. Конечно, все это будет отправлено сразу, что может привести к неудачным последствиям для вашего вычислительного кластера и артериального давления вашего системного администратора.

Если вы удалите «| qsub», вывод команды make - это список команд для запуска. Добавьте этот список в одну или несколько команд qsub, и вы получите повышение эффективности и сокращение заданий qsub. Я использовал для этого параллельный GNU, но ему нужен qsub, который блокирует, пока работа не будет выполнена. Я написал обертку, которая делает это, но она часто вызывает qstat, что означает много попаданий в систему. Я должен как-то изменить его, но здесь не так много хороших вариантов в вычислительном отношении.

0 голосов
/ 19 июля 2015

Создать файл со списком наборов данных в нем find . -print >~/list_of_datasets Сценарий:

#!/bin/bash
exec ~/setupscript.sh $(sed -n -e "${SGE_TASK_ID}p" <~/list_of_datasets)

qsub -t 1-$(wc -l ~/list_of_datasets) job_script

0 голосов
/ 11 ноября 2011

Я не могу понять "-t 1-90000" в вашей команде qsub. Мой поиск по руководству qsub не показывает такую ​​опцию "-t".

...