Portál AbcLinuxu, 1. května 2025 09:53
suma_right = 0; #pragma omp parallel for if(parallel) num_threads(parallel) reduction(+:suma_right) for(long i = 0; i < data->number_of_examples; i++) { suma_right += data->examples[i].value; }Daný kód bude prováděn paralelně, pokud bude nastavená nějaká gobální celočíselná proměnná
parallel
na nenulovou hodnotu a to parallel
vlákny.
Všechno ostatní (vytvoření vláken, rozdělování úkolu apod.) má na starosti překladač. Samozřejmě, že mu do toho můžete kecat. Ale nemusíte a to je právě super. :) Nemusíte se trápit přílišnými detaily synchronizace vlaken, jejich vytváření atd. (GCC umí od verze 4.2, MS VC++ od verze 2005 (asi verze 8), PGI umí (nevím od kdy), ICC umí (nevím od kdy)).
Beowulf je jenom obecný název pro clustery. Beowulf culster může podporovat Mosix, ale nemusí. V tom případě musíte přepsat kód tak, aby využíval MPI nebo PVM. Mosix mí takovou krásnou věc, vytvoří jakýsi "virtuální metapočítač", v rámci něhož umí stěhovat vlákna. To pak stačí posix vlákna a jádro je samo podle potřeby stěhuje na jiné stroje. Nemusíte (většinou) nic přepisovat. Nejsem si vědom, že existuje nějaká free varianta, co umí podobnou věc jako openMosix. Viz wiki.
OpenSSI, Kerrighed. A jenom drobná oprava ke komentáři výše - OpenMosix neumí a nikdy neuměl migrovat vlákna a taky nepodporuje aplikace používající sdílenou paměť. Moshe bar o tom psal na mailinglistu ve smyslu, že vzhledem k latencím sítí stejně nemá cenu distribuovanou sdílenou paměť implementovat, nicméně Kerrighed se o to snaží. Vypadá jako lepší z těch dvou, ale ne tak dospělý. To je ode mne asi vše ...
Podle té studie by se tak mohlo zdát, leč Kerrighed všechny zmiňované funkce měl, ale už nemá - ve verzi 2, která by měla být narozdíl od verze 1 stabilní, je všechny vypnuli a teď, jak se projekt stabilizuje se je budou snažit všechny postupně znovu zapnout, ale zatím by měla funguvat z výše jmenovaných jen ta sdílená paměť, což je super, ale podle dalších ohlasů (studií, postů na fórech) to stejně moc nefunguje. Testovací aplikace chodí perfektně, ale třeba Apache nebo další, pro které by bylo praktické využití obrovské, mají problémy.
A srovnávat OpenMOSIX s OpenSSI a Kerrighedem taky není úplně fér - OpenMOSIX má funkce, které osttaní dva zase postrádají - OpenMOSIX můžeš provozovat na úplně normáním desktopu, akorát s upraveným jádrem a běžící službou, jednotlivé nody můžou mít klidně úplně jiné softwarové vybavení. Pro OpenSSI musí mít každý node úplně stejný obraz /, takže pro typické využití OpenMOSIXu (ve dne kancelář s desktopy, v noci výpočetní cluster) není OpenSSI ideální. Kerrighed zase kvůli DSM (Distributed Shared Memory) neumožňuje odstraňovat nody z clusteru za chodu a má to i další omezení. Takže OpenMOSIX určitě má své uplatnění a lidi to taky na mailinglistu dali dost dobře vědět, když Moshe ohlásil konec projektu. Jenom je jeho využití kousek jinde, než dalších SSI clusterů.
Kerrighed zase kvůli DSM (Distributed Shared Memory) neumožňuje odstraňovat nody z clusteru za chodu a má to i další omezení.Tak to je těžkej průser, který jeho použití sráží až téměř do nepoužitelnosti. Co se stane, když některý z nodů spadne ať už z důvodu HW nebo SW chyby?
v diskuzi jsem zachytil nekolik komentaru, kde zminujete osobni zkusenosti z nekterym z nejznamensich ssi systemu (mosix/openSSI/kerrighed). V soucasne dobe u nas na fakulte (fel-cvut) vyvyjime vlastni podobny system, momentalne neni ve verejne distribuovatelnem stavu, nicmene zakladni checkpointing/migrace chodi dobre.
Zajimalo by mne, zda byste mi mohli lepe popsat vas osobni zpusob pouziti vyse zminenich systemu.. na co konkretne jste je pouzivali, co je pro vas na tech systemech dulezite atd..
Pokud by byl nekdo z vas ochoten my to popsat, tak bud sem nebo idealne do email Martin.Stava na gmailu com.
Diky, Martin
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.