Vectorization (parallel Computing) - General Framework

General Framework

The general framework for loop vectorization is split into four stages:

  • Prelude: Where the loop-independent variables are prepared to be used inside the loop. This normally involves moving them to vector registers with specific patterns that will be used in vector instructions. This is also the place to insert the run-time dependence check. If the check decides vectorization is not possible, branch to Cleanup.
  • Loop(s): All vectorizes (or not) loops, separated by SCCs clusters in order of appearance in the original code.
  • Postlude: Return all loop-independent variables, inductions and reductions.
  • Cleanup: Implement plain (non-vectorized) loops for iterations at the end of a loop that are not a multiple of the vector size) or for when run-time checks prohibit vector processing.

Read more about this topic:  Vectorization (parallel Computing)

Famous quotes containing the words general and/or framework:

    “‘A thing is called by a certain name because it instantiates a certain universal’ is obviously circular when particularized, but it looks imposing when left in this general form. And it looks imposing in this general form largely because of the inveterate philosophical habit of treating the shadows cast by words and sentences as if they were separately identifiable. Universals, like facts and propositions, are such shadows.”
    —David Pears (b. 1921)

    “Seeing our common-sense conceptual framework for mental phenomena as a theory brings a simple and unifying organization to most of the major topics in the philosophy of mind.”
    —Paul M. Churchland (b. 1942)