Paralelní zpracování
Standardní struktura počítačového softwaru je založena na sekvenčním výpočtu. Při řešení problému, je algoritmus určený k řešení tohoto problému realizován jako série za sebou následujících instrukcí. Tyto instrukce jsou prováděny pomocí CPU jednoho počítače. Z toho plyne, že současně může být vykonávána pouze jedna instrukce. Teprve po vykonání této instrukce následuje vykonávání další instrukce.
Pro zrychlení výpočtu se používá buď zdánlivý paralelní běh úloh pomocí multitaskingu nebo víceprocesorové systémy nebo počítačové clustery. Paralelizace funguje na principu rozdělování složitějších úloh na jednodušší a je považována za obtížnější formu programování. Existuje několik rozdílných forem paralelních výpočtů: bitové, instrukční, datové a paralelní úlohy.
Paralelní počítačové programy jsou mnohem náročnější na vytvoření než je tomu u sekvenčních programů, protože souběžnost zavádí několik nových tříd potencionálních programátorských chyb, z kterých je nejčastější souběh. Komunikace a synchronizace mezi jednotlivými úlohami je nejčastěji největší překážkou pro dobrou výkonnost paralelních programů.
Žádný program nemůže běžet rychleji než nejdelší řetězec na sobě závislých kalkulací (označuje se jako kritická sekce), protože výpočty závislé na předchozích výpočtech musejí být provedeny v určeném pořadí. Nicméně, mnoho algoritmů není jen jedním velkým řetězem závislých výpočtů, ale vyskytují se zde příležitosti k provádění paralelních výpočtů.