Aby byly moje šachové programy lehce uživatelsky přístupné, upravil jsem je jako klienta k rozšířenému šachovému uživatelskému prostředí Winboard (to je verze pro windows; verze pro linux a unix se jmenuje Xboard). Úspěch totoho uživatelského prostředí jistě spočívá v dobré dokumentaci a jednoduchém způsobu komunikace mezi klientem a serverem. Server (uživatelské prostředí) si klienta (motor) spustí jako child process a komunikují spolu přes standardní vstup a výstup. Vlastní protokol komunikace je už poněkud složitější.
Efektivita větší než jedna
Při paralelizaci algoritmů se zavádí veličina známá jako efektivita. Ta teoreticky nemůže být větší než jedna, ale v praxi je možno takovéto hodnoty dosáhnout. Je v tom ovšem háček. Tento fenomén se vyskytuje zjednodušeně řečeno vždy při prohledávání stavového stromu do hloubky.
Algoritmus alfa-beta umožňuje zrychlit použití minimaxu. V určitých fázích výpočtu jsem totiž schopen některé větve stromu úplně vynechat, aniž by to ovlivnilo výsledek výpočtu. Myšlenka alfa-bety je následující: posloupnost tahů (resp. cestu stromem odpovídající těmto tahům)
můžu jistě zavrhnout, když vím, že ohodnocení daného uzlu nebude lepší než ohodnocení jiné již známé varianty. V tom případě, i když celý podstrom ještě není kompletně prohledán, můžu hledání na daném podstromu ukončit a přesunout se ve stavovém stromu dál.
Cílem šachového programu je pro danou šachovou pozici najít nejlepší tah pro stranu, která je právě na tahu. Šachové programy, tak jako mnoho jiných algoritmů, procházejí stavový strom úlohy.
V tomto případě jsou uzly stavového stromu možné pozice pro provedení určité posloupnosti tahů (kořen stromu je pak výchozí pozice), větve stromu jsou tahy, kterými přecházím od jednoho uzlu (pozice) k druhému. Šachové programy používají k prohledání stavového stromu
kombinaci dvou základních algoritmů – minimaxu a alfabety.
Úkolem projektu bylo zparalelizovat šachový program. Nejprve ve stručnosti diskutuji algoritmus sekvenčního šachového programu, následně nastíním jeden velmi zajímavý problém týkající se paralelizace. Dále popíšu, jak jsem přesně paralelizaci implementoval, uvedu výsledky a
naznačím možná vylepšení pro paralelní i sekvenční verzi. Ke konci krátce popíšu, jak jsem paralelní i sekvenční verzi upravil na klienta pro jedno známé šachové uživatelské prostředí.
Autor: Václav Vávra
Rok: 2008
Webové služby jako prostředek pro vývoj
Jakmile se zaměříme na vývoj softwaru pro Grid, napadne nás hned několik otázek:
K dnešnímu dni existuje několik gridů, které běží v produkčním prostředí. Tato stránka obsahuje odkazy a některé informace o těchto produkčních gridech.
EGEE (Enabling Grids for E-sciencE)
EGEE je někdy přezdívána jako Panevropská gridová platforma, jež je financována Evropskou unií pro vybudování výpočetní kapacity pro vědecké a akademické účely. Sdružuje cca 200 institucí z více než 39-ti zemí. Aktuální stav je nyní:
Vrstvy gridu
Architektura gridu je velmi komplexní věc a je proto často popisována pomocí vrstev (layers), kde každá z nich má svoji specifickou funkci. Vyšší vrstvy jsou obecně uživatelsky zaměřené naproti tomu nižší vrstvy jsou zaměřeny na počítače, sítě a specialně zařízení (tedy hardwarově zaměřené).
Jednotlivé vrstvy gridu
Definice Gridu
Výpočetní grid je hardwarová a softwarová infrastruktura, která poskytuje spolehlivý, standardizovaný, všudypřítomný a levný přístup ke špičkovým výpočetním službám.
(I. Foster, C. Kesselman. - The Grid: Blueprint for a New Computing Infrastructure, 1999)
V technickém slova smyslu je to rozsáhlý distribuovaný systém organizačně samostatných elementů, kterými mohou být individuální počítače (paměti, CPU, pevné disky) a informační systémy vzájemně propojeny počítačovou sítí.