Pthreads: paralelizace cyklu

Jan Kasprzak kas na fi.muni.cz
Středa Říjen 21 17:41:44 CEST 2009


	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

-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/    Journal: http://www.fi.muni.cz/~kas/blog/ |
Please don't top post and in particular don't attach entire digests to your
mail or we'll all soon be using bittorrent to read the list.     --Alan Cox



Další informace o konferenci Linux