Vita:Thread

A HupWiki-ből...

Vitatkoznék azzal, hogy a többszálúság miatt lehet felfelé skálázni. Ha meggondolod, különböző szálakat elég nehéz különböző processzorokra szétosztani, pont a közös adatterület és az ebből adódó cache-koherenciai problémák miatt. Egymástól független feladatokat sokkal egyszerűbb így szétpakolni, egymás közt keveset kommunikáló processzeket tehát jóval egyszerűbb külön procikon futtatni, mint szálakat.


--

Szia,

Azt irtam, hogy multiproc rendszerben 1 program akkor hasznalja ki a multiproc elonyeit, ha szalakat hasznal. Amirol te irsz, az a horizontalis skalazodas, amirol en, az a vertikalis. Szalakat nem hasznalo program nem fog 70x-es sebesseggel futni egy 72 CPU-s gepben.

Egymastol fuggetlen feladathoz nem kell szalazni, nem kell SMP-zni. De nem minden feladat fuggetlen.

--

Hello,

De egy szálakat használó program sem fog 70x-es sebességgel futni egy 72 CPU-s gépben. Elképzelhető, hogy a sebesség változása meghaladja az 1-es viszonyszámot (tehát hamarabb lefut az egész), de az is elképzelhető, hogy nem. Attül függően, hogy a szálak mennyire függenek egymás által használt változóktól. Ha állandóan az folyik, hogy három külön procin futó három külön szál ugyanazt a változót akarja írni, és ehhez mindegyik állandóan read-write barrier-eket nyom, akkor az ebből adódó kommunikációs vergődés akár lassabbá teheti az egészet, mintha csak egyetlen szál végezné sorosan a három dolgát.

Mindössze annyit akarok tehát mondani, hogy a szálak használatától nem lesz automatikusan jobban skálázható a feladat futása, észnél kell lenni, mert akár romlás is előfordulhat. A feladat kommunikációigényétől függ.

---

Nem azt irtam, hogy "automatikusan biztositja", hanem azt, hogy "lehetove teszi". Jo, kicsit pongyola, mert nem feltetlenul csak ez (PVM, OpenMP es tarsai)...