Pthreads: paralelizace cyklu

Premysl Hruby dfenze na gmail.com
Středa Říjen 21 18:02:00 CEST 2009


On (21/10/09 17:41), Jan Kasprzak wrote:
> Date: Wed, 21 Oct 2009 17:41:44 +0200
> From: Jan Kasprzak <kas na fi.muni.cz>
> To: linux na linux.cz
> Subject: Pthreads: paralelizace cyklu
> User-Agent: Mutt/1.4.2.2i
> List-Id: Diskuse o Linuxu v cestine <linux.linux.cz>
> 
> 	Dobry den,
> 
> 	existuje nejaka rozumna knihovna, ktera by umela pres pthreads (NPTL)
> nejak rozumne paralelizovat for-cyklus? Jakoze mam kod
> 
> for (i = 0; i < n; i++)
> 	do_something_with(i);
> 
> n je vetsi nez pocet procesoru, ale ne moc velke (treba do desetinasobku
> poctu procesoru) a do_something_with() je omezene vykonem CPU. No a ja bych
> si predstavoval nejakou knihovnu, ktera si zjisti pocet CPU, a na jednotlivych
> CPU pusti vlakna ve stylu
> 
> 	while (i < n) {
> 		int j = atomicky_vezmi_dalsi_i(&i);
> 		do_something_with(j);
> 	}
> 
> Napsat neco takoveho pomoci pthread_mutex_* asi nebude tezke, ale presto
> by mozna pomohlo mit uz neco predpripraveneho. Idealne takoveho, aby kdyz
> o kus dal budu mit podobnou smycku
> 
> for (i = 0; i < n; i++)
> 	do_something_else_with(i);
> 
> tak aby se dala paralelizovat pomoci tech stejnych vlaken bez nutnosti
> jejich opetovneho vytvareni.
> 
> 	Existuje neco takoveho? Diky,
> 
> -Yenya
> 


Zkuste se podivat na OpenMP, takova vec, jak s minimalnim usilim a
zmenami alespon paralelizovat program.

-Ph
-- 
Premysl "Anydot" Hruby, http://www.redrum.cz/
-
I'm a signature virus. Please add me to your signature and help me spread!



Další informace o konferenci Linux