Spustenie viacerych vypoctou naraz – OS - GNU / Linux – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Spustenie viacerych vypoctou naraz – OS - GNU / Linux – Fórum – Programujte.comSpustenie viacerych vypoctou naraz – OS - GNU / Linux – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
sleepy0
Stálý člen
9. 4. 2013   #1
-
0
-

Dobry den,

potrebujem upravit script tak aby aplikacia vedela spustit viacero vypoctou naraz, lebo mam k dispozicii n-procesorovy stroj, aplikacia vie bezat prave na jednom procesore a ku kazdemu vypoctu mam vstup, celkovo mam m vstupov, kde m>n. Potrebujem aby mi naraz bezalo len n vypocou. Za pomoc vopred dakujem.

Tu je script co som apisal: 

for $input_file in $input_files
do
	output = $($APPLICATION $options $input_file)
	# do something with output
done
Nahlásit jako SPAM
IP: 158.195.204.–
afsadfafsaf
~ Anonymní uživatel
1 příspěvek
10. 4. 2013   #2
-
+1
-
Zajímavé

na spustenie ulohy do pozadia v bash sluzi operator &

napr
./prikaz &
nasledne pomocou fg presunies do popredia

co treba vyriesit je presun vystupu do premmennej output ty to riesis cez operator $() jedna sa o tzv subshell takychto subshellov budes potrebovat N
a kazdy da vystup do svojej premennej.

Nahlásit jako SPAM
IP: 147.175.181.–
sleepy0
Stálý člen
16. 4. 2013   #3
-
0
-

Nakoniec som to riesil troska inak, lebo outputy si to vie zapisovat samo aj do vlastnych suborou. Cize zostavalo uz iba spustenie prave n procesou. Ale nechal som sa inspirovat &, nepocopil som vsak uplne ako vyuzit fg.

Tu je moj kod:

$PROCESSORS=#n
$ITERATOR
for $INPUT in $INPUT_FILES; do
	$APPLICATION $OPTIONS $INPUT &
	# Tu je zrejme treba niekde vyuzit to fg
	# ak by som to chcel
	# OUTPUT[$ITERATOR]=$($APPLICATION $OPTIONS $INPUT &)
	PID[$ITERATOR]=$! #Na zistenie pid-u poslednej spustenej aplikacie
	if [ $ITERATOR -eq $PROCESSORS ]; then
		wait ${PID[0]}
		wait ${PID[1]}
		# ...
		wait ${PID[n]}
		# Mozno by sa to dalo skratit nejako takto
		# for $I in 'seq 0 $PROCESSORS'; do
		#	wait ${PID[$I]}
		# done
		$ITERATOR=0
	fi
done
Nahlásit jako SPAM
IP: 158.195.204.–
sleepy0
Stálý člen
16. 4. 2013   #4
-
0
-

#3 sleepy

#Oprava na zaciatku ma byt
PROCESSORS=#n
ITERATOR=0
# a v if taktiez
ITERATOR=0
# a vo fo cykle
INPUT
Nahlásit jako SPAM
IP: 158.195.204.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý