Asi takhle mám napsaný program který spouštím na clusteru kde se vytvoří x paralelních jobů (záleží kolik je vstupních souborů - pro každý soubor jeden job) tady ten program počítá průchodnosti elektrických obvodů pomocí log. hradel přes vektory(který jsou ve vstupním souboru) a pak následně generuje reporty...
Vesměs všechno mám(teď už i ten CPU time + real time
)
Jen toto musím ještě dodělat:
Ten program má udělaný tak že se nastavuje hodnota do které testuje vektor... Tak a když je hodnota 1 tak vyhodí hromadu vektorů který nejdou vyřešit... tak se zvedne hodnota např 100* teď už job trvá delší dobu(testuje více do hloubky) a už vyhodí méně vektorů které nejdou vyřešit a pořád se to opakuje dokud nezbudou jen opravdu neřešitelné vektory + chybné vektory.
Dělá se to proto že je to rychlejší než nastavit hodnotu na 100.000 a čekat protože by se testoval každý vektor do hloubky 100.000 což by bylo náročnější i na výpočetní výkon.
Měl jsem myšlenku(jako jsem psal nahoře v příspěvku... třeba po 5 min kontrolovat ID jobu) a když už není tak spustit znovu s větší hodnotou
Kouknout - vidět (a případně uložit...)
ps -A | grep <program>
Co kdyby ta úloha na konci forknula (spustila v jiném procesu) sama sebe s jiným parametrem?
Pokud je ten řetěz krátký, tak stačí napsat script který je sekvenčně zavolá...hledej základy příkazového řádku...
To co píšete zní velmi zajímavě určitě vyzkouším
Vesměs to spouštím tímto jednoduchým sh
for fname in `ls ~/projekt/BENCH/`
do
fn=`basename "$fname" .bench`
echo "Job pro: $fname = $fn"
qsub -cwd -b y -j y ./ATALANTA -N -b 1 -B 0 -Z -W 2 -X -n ~/BENCH/$fname -F ~/projekt/PROCESSED/$fn".processed" -t ~/projekt/TEST/$fn".test" -U ~/projekt/ABORTED/$fn".aborted" -P ~/projekt/REPORT/$fn".report"
done