Algoritmus externí paměti - External memory algorithm
v výpočetní, algoritmy externí paměti nebo out-of-core algoritmy jsou algoritmy které jsou určeny ke zpracování dat, která jsou příliš velká na to, aby se vešla do počítače hlavní paměť najednou. Takové algoritmy je třeba optimalizovat, aby bylo možné efektivně načítat a přistupovat k datům uloženým v pomalé hromadné paměti (pomocná paměť ) jako pevné disky nebo páskové jednotky, nebo když je paměť zapnutá počítačová síť.[1][2] Algoritmy externí paměti jsou analyzovány v model externí paměti.
Modelka
Algoritmy externí paměti jsou analyzovány v idealizovaném stavu model výpočtu nazývá se model externí paměti (nebo I / O modelnebo model přístupu na disk). Model externí paměti je abstraktní stroj podobně jako Model stroje RAM, ale s mezipaměti navíc hlavní paměť. Model zachycuje skutečnost, že operace čtení a zápisu jsou v a mnohem rychlejší mezipaměti než v hlavní paměť, a to čtení dlouhé souvislé bloky je rychlejší než čtení náhodně pomocí a hlava pro čtení a zápis na disk. The provozní doba z algoritmus v modelu externí paměti je definován požadovaným počtem čtení a zápisů do paměti.[3] Model představili Alok Aggarwal a Jeffrey Vitter v roce 1988.[4] Model externí paměti souvisí s mezipaměťový model, ale algoritmy v modelu externí paměti mohou znát obě velikost bloku a mezipaměti velikost. Z tohoto důvodu se model někdy označuje jako model s vědomím mezipaměti.[5]
Model se skládá z a procesor s vnitřní pamětí nebo mezipaměti velikosti M, připojený k neomezený externí paměť. Interní i externí paměť se dělí na bloky velikosti B. Jedna operace vstupu / výstupu nebo přenosu paměti spočívá v přesunutí bloku B souvislé prvky z vnější do vnitřní paměti a provozní doba algoritmu je určen počtem těchto operací vstupu / výstupu.[4]
Algoritmy
Algoritmy v modelu externí paměti využívají skutečnosti, že načtením jednoho objektu z externí paměti se načte celý blok velikosti . Tato vlastnost se někdy označuje jako lokalita.
Hledání prvku mezi objektů je možné v modelu externí paměti pomocí a B-strom s větvícím faktorem . Pomocí B-stromu lze v prohlížeči dosáhnout vyhledávání, vkládání a mazání čas (v Velká O notace ). Informace teoreticky, to je minimum provozní doba pro tyto operace možné, takže použití B-stromu je asymptoticky optimální.[4]
Externí třídění třídí v nastavení externí paměti. Externí třídění lze provést pomocí distribučního řazení, které je podobné quicksort, nebo prostřednictvím a -druh sloučení. Obě varianty dosahují asymptoticky optimální doba běhu seřadit N předměty. Tato vazba platí také pro rychlá Fourierova transformace v modelu externí paměti.[2]
Problém permutace je přeskupit prvky do konkrétního permutace. To lze provést buď tříděním, které vyžaduje výše uvedený běh třídění, nebo vložením každého prvku v pořadí a ignorováním výhody lokality. Permutaci lze tedy provést v čas.
Aplikace
Model externí paměti zachycuje hierarchie paměti, který není modelován v jiných běžných modelech používaných při analýze datové struktury, tak jako stroj s náhodným přístupem a je užitečné k prokázání dolní hranice pro datové struktury. Tento model je také užitečný pro analýzu algoritmů, které fungují na datových sadách příliš velkých, aby se vešly do interní paměti.[4]
Typickým příkladem je geografické informační systémy, zvláště digitální výškové modely, kde celá sada dat snadno přesahuje několik gigabajty nebo dokonce terabajtů dat.
Tato metodika přesahuje rámec univerzální CPU a také zahrnuje GPU výpočetní i klasická zpracování digitálních signálů. v univerzální výpočet na grafických jednotkách (GPGPU), výkonné grafické karty (GPU) s malou pamětí (ve srovnání se známější systémovou pamětí, která se nejčastěji označuje jednoduše jako RAM ) jsou využívány s relativně pomalým přenosem paměti CPU na GPU (ve srovnání s výpočtovou šířkou pásma).
Dějiny
Časné použití termínu „out-of-core“ jako adjektiva je v roce 1962 v odkazu na zařízení které jsou jiné než základní paměť z IBM 360.[6] Časné použití výrazu „out-of-core“ ve vztahu k algoritmy se objeví v roce 1971.[7]
Viz také
- Externí třídění
- Online algoritmus
- Streamovací algoritmus
- Algoritmus zapomínající na mezipaměť
- Paralelní externí paměť
- Procházení grafu externí paměti
Reference
- ^ Vitter, J. S. (2001). Msgstr "Algoritmy externí paměti a datové struktury: nakládání s MASIVNÍMI ÚDAJI". ACM Computing Surveys. 33 (2): 209–271. CiteSeerX 10.1.1.42.7064. doi:10.1145/384192.384193.
- ^ A b Vitter, J. S. (2008). Algoritmy a datové struktury pro externí paměť (PDF). Základy a trendy v teoretické informatice. Seriál o základech a trendech v teoretické informatice. 2. Hanover, MA: Nyní vydavatelé. 305–474. CiteSeerX 10.1.1.140.3731. doi:10.1561/0400000014. ISBN 978-1-60198-106-6.
- ^ Zhang, Donghui; Tsotras, Vassilis J .; Levialdi, Stefano; Grinstein, Georges; Berry, Damon Andrew; Gouet-Brunet, Valerie; Kosch, Harald; Döller, Mario; Döller, Mario; Kosch, Harald; Maier, Paul; Bhattacharya, Arnab; Ljosa, Vebjorn; Nack, Frank; Bartolini, Ilaria; Gouet-Brunet, Valerie; Mei, Tao; Rui, Yong; Crucianu, Michel; Shih, Frank Y .; Ventilátor, Wenfei; Ullman-Cullere, Mollie; Clark, Eugene; Aronson, Samuel; Mellin, Jonas; Berndtsson, Mikael; Grahne, Gösta; Bertossi, Leopoldo; Dong, Guozhu; et al. (2009). "I / O model výpočtu". Encyklopedie databázových systémů. Springer Science + Business Media. 1333–1334. doi:10.1007/978-0-387-39940-9_752. ISBN 978-0-387-35544-3.
- ^ A b C d Aggarwal, Alok; Vitter, Jeffrey (1988). "Složitost vstupu / výstupu třídění a související problémy". Komunikace ACM. 31 (9): 1116–1127. doi:10.1145/48529.48535.
- ^ Demaine, Erik (2002). Algoritmy a datové struktury vynechávající mezipaměť (PDF). Přednášky z letní školy EEF o masivních souborech dat. Aarhus: BRICS.
- ^ NASA SP. NASA. 1962. str. 276.
- ^ Počítače v krizi. ACM. 1971. s. 296.