Loop tiling

Loop tiling

Loop tiling, also known as loop blocking, strip mine and interchange, unroll and jam, or supernode partitioning, is a loop optimization used by compilers to make the execution of certain types of loops more efficient.

Loop tiling partitions a loop's iteration space into smaller chunks or blocks, so as to help ensure data used in a loop stays in the cache until it is reused. The partitioning of loop iteration space leads to partitioning of large array into smaller blocks, thus fitting accessed array elements into cache size, enhancing cache reuse and eliminating cache size requirements.

Original: matrix vector multiplication for (i=0; iAfter loop tiling 2*2: for (i=0; iThe original loop iteration space is N by N. The accessed chunk of array a [i,j] is also N by N. When N is too large and the cache size of the machine is too small, the accessed array elements in one loop iteration (for example, i=1, j=1 to N) may cross cache lines, causing cache misses.

Another example using an algorithm for matrix multiplication:

Original matrix multiplication: DO I = 1, M DO K = 1, M DO J = 1, M Z(J,I) = Z(J,I) + X(K,I) * Y(J,K)

After loop tiling B*B: DO K2 = 1, M, B DO J2 = 1, M, B DO I = 1, M DO K1 = K2, MIN(K2+B-1,M) DO J1 = J2, MIN(J2+B-1,M) Z(J1,I) = Z(J1,I) + X(K1,I) * Y(J1,K1)

It is not always easy to decide what value of tiling size is optimal for one loop because it demands an accurate estimate of accessed array regions in the loop and the cache size of the target machine. The order of loop nests (loop interchange) also plays an important role in achieving better cache performance.

Further reading

# Wolfe, M. More Iteration Space Tiling. Supercomputing'89, pages 655 -- 664, 1989.
# Wolf, M. E. and Lam, M. A Data Locality Optimizing Algorithm. PLDI'91, pages 30 -- 44, 1991.
# Irigoin, F. and Triolet, R. Supernode Partitioning. POPL'88, pages 319 -- 329, 1988.
# Xue, J. Loop Tiling for Parallelism. Kluwer Academic Publishers. 2000.


Wikimedia Foundation. 2010.

Look at other dictionaries:

  • Loop tiling — (разбиение цикла на блоки) оптимизирующее преобразование, призванное сделать исполнение некоторых типов циклов более эффективным. Данный метод оптимизации состоит в разбиении пространства итерирования исходного цикла (которое может проводиться по …   Википедия

  • Tiling — may refer to:* The physical act of laying tiles * The mathematics of tessellations * The compiler optimization of loop tiling * People with the surname Tiling ** Reinhold Tiling, German rocket pioneer * In computing a tiling window manager is one …   Wikipedia

  • Loop optimization — In compiler theory, loop optimization plays an important role in improving cache performance, making effective use of parallel processing capabilities, and reducing overheads associated with executing loops. Most execution time of a scientific… …   Wikipedia

  • Loop-erased random walk — In mathematics, loop erased random walk is a model for a random simple path with important applications in combinatorics and, in physics, quantum field theory. It is intimately connected to the uniform spanning tree, a model for a random tree.… …   Wikipedia

  • ThreadSpotter — est un outil qui diagnostique les problèmes de performances liés à la localité des données, à l utilisation du cache et à l interaction des threads. De manière générale, la bande passante du bus mémoire n a pas connu les mêmes améliorations que… …   Wikipédia en Français

  • Цикл (программирование) — У этого термина существуют и другие значения, см. цикл. В данной статье или разделе имеется список источников или внешних …   Википедия

  • Polytope model — The polyhedral model (also called the polytope method) is a mathematical framework for loop nest optimization in compiler theory. The polytope method models operations within nested manifest loops as mathematical objects called polytopes,… …   Wikipedia

  • Цикл просмотра — Цикл  разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций. Также циклом может называться любая многократно исполняемая последовательность… …   Википедия

  • Цикл Дейкстры — Цикл  разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций. Также циклом может называться любая многократно исполняемая последовательность… …   Википедия

  • Цикл foreach — Цикл  разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций. Также циклом может называться любая многократно исполняемая последовательность… …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”