Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Počet vláken programu - měl by se přizpůsobit CPU?

Zdravím. Chtěl bych se zeptat na takovou věc. Dejme tomu, že program řeší určitou úlohu a ta je už napevno rozdělená na 8 částí (protože určovat počet až za běhu je problematické). Tyto části lze zpracovávat paralelně, ale také sériově jednu za druhou. Lze tedy vytvořit až 8 vláken a každému předat jednu část ke zpracování. Otázka je, jak to řešit na CPU, které má méně než 8 jader/vláken. Je nějaký rozdíl v tom, pokud program přesto použije 8 vláken, nebo použije např. 4 na 4-jádrovém CPU a v každém vlákně provede 2 části sériově? Jde o to, jestli nějak programově řešit rozpoznávání počtu vláken, nebo natvrdo v jakékoliv situaci použít 8 vláken. Pokud by měl procesor třeba jen 1 jádro, těch 8 vláken si nějak pořeší OS a bude mezi nimi přepínat, to je jasné. Ale nebude to méně efektivní, než kdyby program nespouštěl vlákna a všechny části zpracoval sériově? Jak velká je vůbec režie kolem vláken v OS? Vím jen, že potřebují podstatně méně prostředků, než procesy. Ale jinak moc nevím.

edit: Já myslím, že nechat 8 vláken plně v režii plánovače OS je také přijatelné. Ale nechám si případně poradit.

Díky.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Ono nejde ani tak o reziu vlaken v OS (to neni nic tragicke), ale o to ze ked tu ulohu rozdelis, tak… nový
MM.. 18.06.2015 11:00
MM..
Ty části jsou na sobě zcela nezávislé, takže synchronizace není potřeba. Ale zjistil jsem teď jeden… poslední
Niko Bellic 18.06.2015 12:56
Niko Bellic

Ono nejde ani tak o reziu vlaken v OS (to neni nic tragicke), ale o to ze ked tu ulohu rozdelis, tak mas overhead (synchronizacia a riadenie rozdelovania pripadne kdesi presuvat data atd)

P.S. prepnutie kontextu je principialne tusim len 1 instrukcia, ale neviem co tam vsetko k tomu Win este sachuje.

Zpět do poradny Odpovědět na původní otázku Nahoru