Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Vlákno názorů k článku
Technologie grafických stanic firmy SGI

ondra.novacisko.cz
ondra.novacisko.cz (neregistrovaný) ---.seznam.cz
4. 2. 2010 8:21

SMP a paralelní programování

Ta část o problémů SMP je opravdu výstižna. Mimochodem, proč se dneska používaji technologie Dual Channel pro přístup do paměti? No hlavně proto, že každý processor má jaksi „blíže“ ke svému kanálu. O duplikování stránek z jednoho bloku paměti do druhého se stará operační systém. To je taky asi důvod, proč v nových OS (Win 7 apod) jsou pracovní sady všech aplikací 2× větší, než normálně.

Onehdy jsem programoval řadič pro plánování paralelních úloh. Centralizovaný řadič jsem byl nucen nakonec přepsat na distribuovaný řadič, protože to (i do budoucna) poskytovalo lepší výkonost. Prostě každý procesor měl vlastní frontu úloh a pokud úloha generoval další úlohy, tak si je zařazoval do své fronty. Pouze v případě, kdy mu „došla práce“ prohledal fronty ostatních procesorů a z nich si vytáhl další práci. V ideálním případě se hlavní úloha rozpadla na N procesorů hned na začátku a pak už to mezi sebou komunikovalo minimálně.

klusacek
klusacek (neregistrovaný) ---.net.upc.cz
4. 2. 2010 13:09

Re: SMP a paralelní programování

No nevim jak je to na Intelu, ale pokud se pamatuju tak na AMD Dual channel znamena jen 2* vetsi sirku sbernice. Jadra jsou uvnitr chipu beztak pripojena na spolecnou L3 cache.

To co pisete spis pripomina nekolik fyzickych CPU propojenych pres hypertransport linky (coz jsou velmi rychle seriove linky). AMD to ma tak ze kazdy rekneme 4jadrovy CPU ma vlastni RAM a pak nekolik tehle linek pomoci nihz komunikuje s ostatnimi CPU. Cely to probiha bez ucasti programatora (nemusim tedy psat prikaz posli blok dat na CPU 4). Misto toho je pamet kazdeho uzlu teto site namapovana do spolecneho fyzickeho prostoru a radice pameti a HT linek se staraji v hodne presmerovani pozadavku na cteni/zapis. Takze je to podobny jako u SGI.

ondra.novacisko.cz
ondra.novacisko.cz (neregistrovaný) ---.seznam.cz
4. 2. 2010 13:53

Re: SMP a paralelní programování

Nevím, takhle mi to bylo řečeno obchodníkem s počítači. Víc jsem nezjišťoval, takže možná je to kec. Nicméně mi bylo taky řečeno že jsou dvojjádrové procesory se společnou cache a ale s vlastní cache. Tak nevím.

Každopádně to k těm NUMA stejně spěje.

adh
adh (neregistrovaný) ---.net.upc.cz
25. 2. 2010 0:20

Re: SMP a paralelní programování

AMD K8 a Intel i7 _JE_ NUMA, takze nespeje, ale je.

ondra.novacisko.cz
ondra.novacisko.cz (neregistrovaný) ---.seznam.cz
4. 2. 2010 13:54

Re: SMP a paralelní programování

PS: Jo, kupoval jsem AMD tříjádrový (což je vlastně čtyřjádrový, kdy jedno jádro je vadné) a hypertransport byl zmíněn v prospektu.

Yenya
Yenya (neregistrovaný) ---.fi.muni.cz
4. 2. 2010 14:03

Re: SMP a paralelní programování

Dual channel neznamena, ze by „kazdy CPU mel bliz ke sve pameti“, ani „jen 2× vetsi sirku sbernice“.

Dual channel jsou dva nezavisle radice, ktere muzou kazdy delat neco jineho (nebo muze byt crossbar switch v CPU nakonfigurovany na jejich „tupe“ prokladani). Naopak neni pravda ze by treba jadro 0 melo bliz k radici 0 a naopak. Aspon u AMD je to symetricke.

Cili jeden AMD procesor neni NUMA. Vicesocketovy system uz ale NUMA je.

-Yenya

ondra.novacisko.cz
ondra.novacisko.cz (neregistrovaný) ---.seznam.cz
4. 2. 2010 15:39

Re: SMP a paralelní programování

Nechtěl jsem tvrdit, že AMD je NUMA, protože jak jsem pochopil u NUMA jde o to, že na uzlu je plnohodnotný procesor včetně všech potřebných řadičů, kdyžto tady jsem chápal, že je výhodou dual channelu je, když je paměť uspořádána tak, že se procesory nebijou na jedné paměti, kdy operační systém plánuje přidělování procesoru a paměti tak, aby oba řadiče jeli současně, každý „na svým“. Nemusí to být tedy tak, že by to bylo přiděleno na tvrdo, ale prostě při přístupu jednoho procesoru do jednoho kanálu má druhý procesor přístupný druhý kanál bez čekání, nebo musí počkat.

Optimalizace na straně OS … pokud vím, od té doby, co mám AMD s dual channelem pozoruju, že WIndowsy hrozdně neradi přehazují jednovláknovou úlohu mezi procesory, na starších vícejádrech, kde byla obyčejná paměť to nehrálo roli a tam se mi nestalo, že by jeden procesor jel na 100% a druhý na 0%, ale že oba jeli zhruba na 50%. Na AMDčkach je to běžný jev. Pochopil jsem, že se plánovač zařazuje procesy tak, aby se maximálně vyhnul situaci, kdy oba procesory musí přistupovat současně na jeden kanál. Mám pocit, že WinAPI snad dokonce na to má atribut na proces, tuším „ideal processor“. Podle něho pak plánuje a vybírá stránky fyzické paměti na alokaci či přiswapování.

klusacek
klusacek (neregistrovaný) ---.net.upc.cz
4. 2. 2010 16:06

Re: SMP a paralelní programování

Jen jestli to neni spis updatovanymi windowsemi. Neustale prehazovat 1 proces mezi 2ma jadry je
hloupost at mate jakykoliv radic pameti. Vede to neustalemu vyprazdnovani a naplnovani cache. Jestli se to takhle opravdu chovalo a ted se jiz ne, tak spis to byla nejaka chybka windowsu kterou po case opravili a automaticky nainstalovali novou verzi pres windows update, nebo jak se to jmenuje.

Jenik
Jenik (neregistrovaný) ---.opera-mini.net
4. 2. 2010 14:10

Re: SMP a paralelní programování

Tvrzení, že se o duplikování stránek stará operační systém mně připadá, pardon, uhozené.
Bavíte se doufám o dnešní PC architektuře, kde se provozuje symetrický multiprocesing – procesory pracují nad společným paměťovým prostorem a z pohledu programátora musí toto být transparentní. Nějaké přesuny a komunikaci musí řešit hardware, jinak si to nedovedu představit – jak by třeba byla zajištěna kompatibilita se staršími SMP OS? To by jako na takovém stroji běžely jen s jedním CPU a s poloviční RAM?

Yenya
Yenya (neregistrovaný) ---.fi.muni.cz
4. 2. 2010 14:17

Re: SMP a paralelní programování

Soucasne systemy jsou budto SMP, nebo cc-NUMA. Coz znamena, ze programator nejakou neuniformnost pameti resit nemusi, nechce-li. Cili operacni system ani programator se skutecne nemusi starat, ze ktereho NUMA uzlu zrovna ma pridelenou pamet.

Na druhe strane dost pomaha, pokud OS o NUMA topologii vi a vyuziva teto znalosti. Linux napriklad mel (na SGI Altixech, nevim jestli je to v upstreamu) moznost stranky textu jadra mit duplikovane ve vice NUMA uzlech, protoze se predpokladalo, ze nejaky kod jadra obcas vykonava kazdy NUMA uzel. Nebo treba alokator pameti se snazi pridelovat procesu prednostne ty stranky pameti, ktere jsou nejbliz procesoru, na kterem dany proces bezi.

Nevim o tom, ze by soucasne OS delaly nejake cilene presuny jiz naalokovanych stranek smerem k uzlum, ktere ty stranky nejvice vyuzivaji. To uz by vyzadovalo kristalovou kouli srovnatelne sily, jaka je potreba pro zjisteni, kterou stranku ted zrovna odswapovat :-)

-Yenya

zz
zz (neregistrovaný) ---.78-99-162.t-com.sk
8. 2. 2010 22:42

Re: SMP a paralelní programování

Po skusenosti z linuxom a windowsom na X3650 M2 zo zapnutou NUMA architekturou. Linux o NUMA vie a (IMAO) ju aj vyuziva. Hlavne mu vadi ak nie su jednotlive pametove uzly rovnake. Taky windows serverXY sa tym nejak netrapilm a vobec mu nevadilo ze jeden socket nemal „vlastnu“ pamet.

JardaP . aura:24
4. 2. 2010 17:34

Re: SMP a paralelní programování

No, kdyz si treba nainstalujete Widle 98 na SMP stroj, tak druhy procesor tam bude vzdy vyhradne na vytapeni kastliku. Pamet ale uvidi celou.

zz
zz (neregistrovaný) ---.78-99-162.t-com.sk
8. 2. 2010 22:45

Re: SMP a paralelní programování

SMP stroj ma spolocnu pamet. taky IBM X326 (ak si to dobre pametam cislo) ma polku pemetovych socketou pouzitelnych len ked je tam druhe puzdro. Inak ich neuvidi NIK, ani bios.

Zasílat nově přidané příspěvky e-mailem