cache oblivious string dictionaries
play

Cache-Oblivious String Dictionaries Gerth Stlting Brodal University - PowerPoint PPT Presentation


  1. ✩ ✥ ✖ ✚ ✑ ✠ ✌ ✛✜ ✘ ✢✣ ✣✤ ✘ ✌ ✁ ✄ ✖ ✏ ✠ ✁ ✄ ✁ ✘ ✦ ✖ ☛ ✏ ✄ ☛☞✌ ✠ ✠ ✡ ✟ ✁ ✍ ✎ ✁ ✆ ✟ ☞ ✏ ✁ ✑ ✞ ✄ ✆ ✒ ✁ Cache-Oblivious String Dictionaries Gerth Stølting Brodal University of Aarhus Joint work with Rolf Fagerberg �✂✁ ☎✝✆ ✓✕✔ ✞✕✗ ✓★✧ ✆✙✘

  2. ✙ ☎ ✒ ✓ ✔ ✗ ✘ ☞ ✓ � ✕ ✂ ✔ ☞ ✝ ✑ ✑ ✏ � ✡☛ ✠ ✟ � ☎ � Outline of Talk Cache-oblivious model Basic cache-oblivious techniques Cache-oblivious string algorithms Cache-oblivious string dictionaries – Cache-oblivious tries and blind tries ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  3. � ✒ ✓ ☎ ☞ ✘ ✗ ✔ ✔ ✓ ✑ ✕ ✏ ☞ ✝ ✡☛ ✠ ✟ ✑ ☎ ✂ Hierarchical Memory Models ☞✞✎ ☞✖✕ ☞✞✎ ☞✍✌ ✆✞✝ ✁✄✂

  4. ✤ ✑ ☛ ✌ ✁ ✖ ✘ ☞ ✑ ✣ ☎ ✟ ✠ ✡☛ ✏ ✒ ✕ ✓ ✔ ✗ ✘ ☞ ☎ ✓ ✕ ✂ ✔ ☞ ✝ ✑ ✍ ✂ ✎ ☛ ☛ ✝ ☞ ✌✍ ✎ ✏ ✠ ✆ ✔ ✑ ✍ ☛ ☎ ✂ ✞ ✌ ✎ ✎ ✒ ✄ ✂ ✁ � ✏ ✓ ✌ ✍ ✠ ✟✡✠ Hierarchical Memory ✗✛✚ ✗✙✜ ✗✛✢ ✗✙✘ ☞✞✎ ☞✖✕ ☞✞✎ ☞✍✌ ✆✞✝ ✁✄✂

  5. ✕ ✓ ✝ ☞ ✔ ✔ � ✂ ✔ ✕ � ☎ ✎ ☎ ☞ ✟ ✠ ✡☛ ✘ ✗ ✏ ✑ ✒ ✓ ✞ ✔ ☞ � ✁ ✂ ✑ ✝ ✞ ✟✠ ✡ ☛ ✌ ✏ ✍ ✎ ✞ ✏ ✑ ✟ ✒ ✒ ✟ ✑ ✓ I/O Model Aggarwal and Vitter 1988 ✄✆☎ = problem size = memory size = I/O block size One I/O moves consecutive records from/to disk Complexity measure = number of I/Os ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  6. ✠ ☞ � ✂ ✕ ✔ ✓ ☎ ☎ ✟ ✎ ✠ ✡☛ ✘ ✗ ✏ ✑ ✒ ✔ ☞ ✔ � � ✑ � ✝ � ✁ ✂ ✁ ✞ ✂ ✄ ☎ ☎ ✂ ☎ ✆ ✝ ✓ Ideal Cache Model — no parameters!? Frigo, Leiserson, Prokop, Ramachandran 1999 Program with only one memory Analyze in the I/O model for ✝ ✝✆ Optimal off-line cache replacement ✔ ✟✞ strategy arbitrary and ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  7. ✠ ✓ � � ✔ ☎ ✟ ✠ ✡☛ ✏ ✑ ✒ ✔ � ✗ ✘ ☞ ☎ ✓ ✕ ✂ ✔ ☞ ✝ ✑ � ✔ ✝ ✂ ✎ ☎ ✂ ☎ ☎ ✄ � ✁ ✞ � ✂ ✁ � � � ✔ ✆ Ideal Cache Model — no parameters!? Frigo, Leiserson, Prokop, Ramachandran 1999 Program with only one memory Analyze in the I/O model for ✝ ✝✆ Optimal off-line cache replacement ✔ ✟✞ strategy arbitrary and Advantages Optimal on arbitrary level optimal on all levels Portability, and not hard-wired into algorithm Dynamic changing (and ) ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  8. � ✒ ✓ ☎ ☞ ✘ ✗ ✔ ✔ ✓ ✑ ✕ ✏ ☞ ✝ ✡☛ ✠ ✟ ✑ ☎ ✂ Cache-Oblivious Preliminaries ☞✞✎ ☞✖✕ ☞✞✎ ☞✍✌ ✆✞✝ ✁✄✂

  9. ✄ ✟ ☎ ☞ ✘ ✗ ✂ ✔ ✓ ✒ ✑ ✏ ✔ ✓ ✡☛ ✠ ☞ ✕ ☛ ✔ � ✏ ✠ ☛ ✍ ✁ ☎ ✌ ✂ ✓ ✔ ✑ ✝ ✓ Cache-Oblivious Scanning I/Os ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  10. ✄ ✘ ✠ ✡☛ ✏ ✑ ✒ ✓ ✔ ✗ ☞ ✓ ☎ ✓ ✕ ✂ ✔ ☞ ✝ ✑ ✟ ☎ ✂ ✓ ✔ � ✏ ✠ ☛ ✍ ☛ ✁ ✌ ✂ ✔ � ✂ ✔ ✁ ✓ Cache-Oblivious Scanning I/Os Corollary Cache-oblivious selection requires I/Os Hoare 1961 / Blum et al. 1973 ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  11. ✓ ✗ ✟ ✠ ✡☛ ✏ ✑ ✒ ✓ ✔ ✘ ✁ ☞ ☎ ✓ ✕ ✂ ✔ ☞ ✝ ✑ � ☎ ✒ ✌✍ ✌ ✌ ✍ ☛ ✎✏ ✑ ✒ ☞ ☞ ✠✡ ✟ ☛ ✁ ✕ ✞ ✍ ✌ Cache-Aware B-trees ✁✂✁✄✁☎✁✂✁✄✁☎✁✂✁✄✁☎✁✂✁✄✁☎✁✂✁✄✁☎✁✂✁✄✁☎✁✂✁✄✁☎✁✂✁✄✆ ✁☎✁✄✁✂✁☎✁✄✁✂✁☎✁✄✁✂✁☎✁✄✁✂✁☎✁✄✁✂✁☎✁✄✁✂✁☎✁✄✁✂✁☎✁✄✝ ☞✞✎ ☞✖✕ ☞✞✎ ☞✍✌ ✆✞✝ ✁✄✂

  12. ✩ ✌ ✠ ☛ ✔ ☞ ✂ ☎ ✕ ✟ ✡☛ ✘ ✓ ☎ ✏ ✑ ✒ ✓ ✔ ☞ ✟ ✞ ✆ ✌ ✂ ✑ ✂ ✝ ☞ ✌ ✌ ✌ ✌ ✡ ✌ ✆ ✝ ✆ ✞ ✟ ✠ ✗ van Emde Boas layout Static Cache-Oblivious B-Tree � ✁� � ✁� Recursive layout of binary tree � ☎✄ � ☎✄ ☞✞✎ ☞✖✕ ☞✞✎ ☞✍✌ ✆✞✝ ✁✄✂

  13. ✩ ✓ ✔ ✓ ☎ ☞ ✘ ✗ ☞ ✔ ✒ ✂ ✑ ✏ ✝ ✑ ✡☛ ✠ ✟ ✩ ☎ ✕ Static Cache-Oblivious B-Tree ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  14. ✩ � ✩ ✑ ✝ ☞ ✔ ✂ ✕ ✓ ☎ ☞ ✘ ✗ ✔ ✓ ✟ � ✑ ✏ � ☎ ✡☛ ✒ ✠ Static Cache-Oblivious B-Tree ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  15. ✩ ✡☛ ✔ ✓ ☎ ☞ ✘ ✗ ☞ ✔ ✓ ✒ ✑ ✏ � ✝ ✠ ✂ � � � � � � � � ✟ � � � ✩ ☎ ✑ ✕ Static Cache-Oblivious B-Tree ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  16. ✩ ✒ � � � � � � ☎ ✟ ✠ ✡☛ ✏ ✑ ✓ � ✔ ✗ ✘ ☞ ☎ ✓ ✕ ✂ ✔ ☞ ✝ ✑ ✩ � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � Static Cache-Oblivious B-Tree ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  17. ✩ ✓ ✁ � ☎ ✓ � ✂ ✁ � ✄ � � ✂ ✁ � � ✔ ✟ � ✁ � ✂ ✓ ✁ ☞ ✩ ✑ ✝ ☞ ✔ ✂ ✕ ✓ ☎ ✘ ☎ ✗ ✔ ✓ ✒ ✑ ✏ ✡☛ ✠ ✟ ✄ ✂ ✂ � � ✔ � � � � � � � � � � � � � � � � � � � � � � � � � ✟ ✂ ✁ � � � � � � � � � � � � � � Static Cache-Oblivious B-Tree Each green tree has height between and Searches visit between and green trees, i.e. perform at most I/Os (misalignment) ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  18. ✙ ✓ ✁ ✂ ✄ ☎ ☎ ✟ ✠ ✡☛ ✏ ✑ ✒ ✔ ✔ ✗ ✘ ☞ ☎ ✓ ✕ ✂ ✔ ☞ ✝ ✑ ✩ � ✔ ✓ � ✂ � ✓ ✁ ✔ ✂ ✂ � � ✁ ✂ � ✓ ✂ � ✂ ✓ ✞ ✔ ✁ ✂ � ✁ Summary Cache-Oblivious Tools Scanning : B-tree searching : Sorting : requires a tall cache assumption Frigo, Leiserson, Prokop, Ramachandran 1999 Brodal and Fagerberg 2002, 2003 ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  19. � ✓ ✔ ✓ ☎ ☞ ✘ ✗ ☞ ✔ ✒ ✂ ✑ ✏ ✝ ✑ ✡☛ ✠ ✟ ✩ ☎ ✕ Cache-Oblivious String Algorithms ☞✞✎ ☞✖✕ ☞✞✎ ☞✍✌ ✆✞✝ ✁✄✂

  20. ✤ � � � ✂ ✄ ✁ � ✄ ✂ � ✟ ☛ � ✍ ☛ � ✍ ☛ � ☎ ✠ ☛ ✓ ✩ ✑ ✝ ☞ ✔ ✂ ✕ ☎ ✡☛ ☞ ✘ ✗ ✔ ✓ ✒ ✑ ✏ ✍ � � ☛ ✍ ✍ ✍ ✍ ☛ ☛ � ☛ ✍ ☛ � � � ✍ � ✍ ☛ ☛ � ✍ � ☛ ✍ � ✍ ☛ � ✂ ✁ � ☛ � � ✍ ☛ � ✍ ☛ Knuth-Morris-Pratt String Matching Knuth, Morris, Pratt 1977 Time Scans text left-to-right Accesses the pattern (and failure function) like a stack ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  21. ✤ ✂ ✁ ✄ ✁ � ✄ ✂ � � � ✄ ✂ ✁ � ✄ ✂ � � ☛ ✍ ☛ � ✔ ☎ � ☎ ✩ ✑ ✝ ☞ ✔ ✂ ✕ ✓ ☞ ✟ ✘ ✗ ✔ ✓ ✒ ✑ ✏ ✡☛ ✠ ✍ � ☛ ☛ ✍ ✁ ✍ � � ✍ ☛ ✍ ☛ ☛ ✍ � ☛ ☛ � � � ☛ � ✍ ✍ � ✍ ☛ � ✍ ✍ � ☛ � ✍ � ☛ � ✍ ✂ ☛ � ☛ ☛ ✍ � Knuth-Morris-Pratt String Matching Knuth, Morris, Pratt 1977 Time Scans text left-to-right Accesses the pattern (and failure function) like a stack KMP is cache-oblivious and uses I/Os ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  22. ✕ ✔ � ✂ ☎ ✟ ✠ ✡☛ ✏ ✑ ✒ ✓ ✗ ✁ ✘ ☞ ☎ ✓ ✕ ✂ ✔ ☞ ✝ ✑ ✩ ✂ ✓ ✁ � � Suffix Tree/Suffix Array Construction Farach et al. 2000 a b c dacabab$ $ abacdacabab$ b c a $ abab$ dacabab$ a $ abab$ dacabab$ b$ cdacabab$ b$ cdacabab$ aabacdacabab$ Reduces to sorting, i.e. I/Os ✁✄✂ ✆✞✝ ☞✍✌ ☞✞✎ ☞✖✕ ☞✞✎

  23. ✠ ☎ ✩ ✑ ✝ ☞ ✔ ✂ ✕ ✓ ☎ ☞ ✘ ✗ ✔ ✓ ✒ ✑ ✏ ✡☛ ✠ ✟ ☞✞✎ ☞✖✕ ☞✞✎ ☞✍✌ ✆✞✝ ✁✄✂

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend