Cache-oblivious algorithm

Cache-oblivious algorithm

In computing, a cache-oblivious algorithm (or cache-transcendent algorithm) is an algorithm designed to take advantage of a processor cache without having the size of the cache (or the length of the cache lines, etc.) as an explicit parameter. An optimal cache-oblivious algorithm is a cache-oblivious algorithm that uses the cache optimally (in an asymptotic sense, ignoring constant factors). Thus, a cache-oblivious algorithm is designed to perform well, without modification, on multiple machines with different cache sizes, or for a memory hierarchy with different levels of cache having different sizes. Cache-oblivious algorithms are contrasted with explicit loop tiling, which explicitly breaks a problem into blocks that are optimally sized for a given cache.

Comment
enIn computing, a cache-oblivious algorithm (or cache-transcendent algorithm) is an algorithm designed to take advantage of a processor cache without having the size of the cache (or the length of the cache lines, etc.) as an explicit parameter. An optimal cache-oblivious algorithm is a cache-oblivious algorithm that uses the cache optimally (in an asymptotic sense, ignoring constant factors). Thus, a cache-oblivious algorithm is designed to perform well, without modification, on multiple machines with different cache sizes, or for a memory hierarchy with different levels of cache having different sizes. Cache-oblivious algorithms are contrasted with explicit loop tiling, which explicitly breaks a problem into blocks that are optimally sized for a given cache.
Depiction
External memory.svg
Matrix transpose dc.svg
Row and column major order.svg
Has abstract
enIn computing, a cache-oblivious algorithm (or cache-transcendent algorithm) is an algorithm designed to take advantage of a processor cache without having the size of the cache (or the length of the cache lines, etc.) as an explicit parameter. An optimal cache-oblivious algorithm is a cache-oblivious algorithm that uses the cache optimally (in an asymptotic sense, ignoring constant factors). Thus, a cache-oblivious algorithm is designed to perform well, without modification, on multiple machines with different cache sizes, or for a memory hierarchy with different levels of cache having different sizes. Cache-oblivious algorithms are contrasted with explicit loop tiling, which explicitly breaks a problem into blocks that are optimally sized for a given cache. Optimal cache-oblivious algorithms are known for matrix multiplication, matrix transposition, sorting, and several other problems. Some more general algorithms, such as Cooley–Tukey FFT, are optimally cache-oblivious under certain choices of parameters. As these algorithms are only optimal in an asymptotic sense (ignoring constant factors), further machine-specific tuning may be required to obtain nearly optimal performance in an absolute sense. The goal of cache-oblivious algorithms is to reduce the amount of such tuning that is required. Typically, a cache-oblivious algorithm works by a recursive divide-and-conquer algorithm, where the problem is divided into smaller and smaller subproblems. Eventually, one reaches a subproblem size that fits into the cache, regardless of the cache size. For example, an optimal cache-oblivious matrix multiplication is obtained by recursively dividing each matrix into four sub-matrices to be multiplied, multiplying the submatrices in a depth-first fashion. In tuning for a specific machine, one may use a hybrid algorithm which uses loop tiling tuned for the specific cache sizes at the bottom level but otherwise uses the cache-oblivious algorithm.
Hypernym
Algorithm
Is primary topic of
Cache-oblivious algorithm
Label
enCache-oblivious algorithm
Link from a Wikipage to another Wikipage
Abstract machine
Algorithm
Amortized analysis
Asymptotically optimal
Asymptotic notation
Blitz++
Block (data storage)
B-tree
Cache (computing)
Cache line
Cache miss
Cache-oblivious distribution sort
Cache-oblivious matrix multiplication
Category:Analysis of algorithms
Category:Cache (computing)
Category:Models of computation
Charles E. Leiserson
Computer program
Computing
Cooley–Tukey FFT algorithm
CPU cache
Depth-first
Divide-and-conquer algorithm
External memory algorithm
External memory model
External sorting
File:External memory.svg
File:Matrix transpose dc.svg
File:Row and column major order.svg
Funnelsort
Harald Prokop
Hash table
Hybrid algorithm
In-place matrix transposition
Least Recently Used
Locality of reference
Loop tiling
Lower bound
Main memory
Massachusetts Institute of Technology
Matrix transpose
Matrix transposition
Memory address
Memory hierarchy
Mergesort
Model of computation
Performance tuning
Priority queue
Quicksort
RAM model
Random-access memory
Recursion
Running time
Todd Veldhuizen
Turing machine
SameAs
4edMQ
Algoritmo de caché ajeno
Cache-oblivious algorithm
Cache-Oblivious Algorithmus
Cache-oblivious algoritmus
m.05vsz2
Q5015938
Subject
Category:Analysis of algorithms
Category:Cache (computing)
Category:Models of computation
Thumbnail
External memory.svg?width=300
WasDerivedFrom
Cache-oblivious algorithm?oldid=1120865123&ns=0
WikiPageLength
13650
Wikipage page ID
1773377
Wikipage revision ID
1120865123
WikiPageUsesTemplate
Template:Cn
Template:Mvar
Template:Not a typo
Template:Reflist
Template:Short description