Loop unswitching

Loop unswitching

Loop unswitching is a compiler optimization. It moves a conditional inside a loop outside of it by duplicating the loop's body, and placing a version of it inside each of the if and else clauses of the conditional. This can improve the parallelization of the loop. Since modern processors can operate fast on vectors this increases the speed.

Here is a simple example. Suppose we want to add the two arrays x and y(vectors) and also do something depending on the variable w. We have thefollowing pseudo code:

for i to 1000 do x [i] = x [i] + y [i] ; if (w) then y [i] = 0; end_for;

The conditional inside this loop makes it hard to safely parallelize thisloop. After unswitching this becomes:

if (w) then for i to 1000 do x [i] = x [i] + y [i] ; y [i] = 0; end_for; else for i to 1000 do x [i] = x [i] + y [i] ; end_for end_if;

Each of these new loops can be separately optimized.Note that loop unswitching will double the amount of code generated.

Loop unswitching was introduced in gcc in version 3.4.


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Look at other dictionaries:

  • Loop unswitching — (размыкание цикла) состоит в вынесении условия за пределы цикла и дублирования тела цикла с помещением соответствующих вариантов в соответствующие ветви условия. Это позволяет улучшить производительность за счёт того, что современные процессоры… …   Википедия

  • 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-switch sequence — A loop switch sequence is a specific derivative of the spaghetti code programming antipattern where a clear set of steps is implemented as a byzantine switch within a loop. Also known as The FOR CASE paradigm… …   Wikipedia

  • Compiler optimization — is the process of tuning the output of a compiler to minimize or maximize some attributes of an executable computer program. The most common requirement is to minimize the time taken to execute a program; a less common one is to minimize the… …   Wikipedia

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

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

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

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

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

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

Share the article and excerpts

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