Co je distribuované programování?
Distribuované programování je jednou z forem paralelního programování nebo paralelního výpočtu. Paralelní programování zahrnuje počítače a výpočetní jednotky uvnitř počítačů, které pracují souběžně na konkrétním problému, jako je předpovídání zítřejšího počasí. Výpočtové jednotky mohou být velmi těsně umístěny a koordinovány nebo mohou být umístěny odděleně. Když jsou výpočetní jednotky od sebe, nazývá se distribuované programování. V takovém případě se výpočetní jednotky velmi často liší od sebe navzájem a liší se také operační systém a nastavení sítě, což činí programování výpočetní činnosti obzvláště náročné.
Při řešení problému distribuovaným způsobem je třeba program rozdělit tak, aby části programu mohly běžet na různých výpočetních jednotkách; tyto části se často nazývají „procesy“. Procesy probíhají současně, ale musí vzájemně komunikovat vstupy a výsledky. Pokud jsou procesy spuštěny na jiném hardwaru, jako je jedna součást běžící na Intelu a druhá běžící na SUN, musí být programy kompilovány a optimalizovány odlišně.
Jedním ze způsobů, jak vyřešit dostatečně obtížný problém, je rozbít vstupní části a nechat různé výpočetní jednotky pracovat na různých částech pomocí stejného algoritmu, sady pravidel nebo kroků pro řešení problému. Například k roztržení genomu 10 000 párů by mohlo být první 1 000 párů přiřazeno první výpočetní jednotce, druhý 1 000 párů přiřazen druhé výpočetní jednotce atd., A to vše za použití stejného algoritmu. Jednou z výhod při distribuovaném programování je, že různé výpočetní jednotky mohou pro řešení stejného problému provozovat různé algoritmy, což vede k výrazně lepšímu řešení. Jedná se o řešení skládačky s tím, že někteří lidé skládají hranice, zatímco jiní skládají kousky určité barvy.
Koordinace distribuovaných výpočetních procesů může být obzvláště obtížným úkolem. Některé výpočetní jednotky mohou selhat nebo mohou být přerušeny při zpracování jiné práce. Zprávy obsahující vstupy nebo výsledky výpočtu se nemusí dostat k cíli. Pokud jsou programy psány naivním způsobem, může ztráta výpočetní jednotky nebo některých zpráv způsobit zablokování celé sady počítačů.
V distribuovaném programování by jeden proces mohl být řídícím procesem, který by v podstatě zajišťoval práci ostatních procesů, nebo by všechny procesy mohly fungovat způsobem peer-to-peer, přičemž žádný proces by nebyl „master“. Některé příklady problémů s pokusem o distribuované programování zahrnují analýzu geologických dat pro zdroje, jako je ropa, modelování proteinů a biologických molekul, praskání kódovaných zpráv a vojenské simulace. Projekt SETI, jehož cílem je hledat inteligentní mimozemský život z rádiových zpráv přijímaných Zemí, je možná jedním z nejznámějších příkladů.