Changes between Version 54 and Version 55 of DataParallel/VectPragma


Ignore:
Timestamp:
Dec 7, 2012 4:40:17 AM (3 years ago)
Author:
chak
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DataParallel/VectPragma

    v54 v55  
    11= The VECTORISE pragma = 
    22 
    3 The vectoriser needs to know about all types and functions whose vectorised variants are directly implemented by the DPH library (instead of generated by the vectoriser), and it needs to know what the vectorised versions are. That is the purpose of the `VECTORISE` pragma (which comes in in number of flavours). 
     3The vectoriser needs to know about all types and functions whose vectorised variants are directly implemented in the DPH library (instead of generated by the vectoriser), and it needs to know what the vectorised versions are. That is the purpose of the `VECTORISE` pragma (which comes in in number of flavours). 
    44 
     5== Scalar versus parallel types and values == 
     6 
     7In addition to tracking the vectorised versions of types and values, the vectoriser needs to keep track of whether the computation of values and functions involves data parallelism, and also, whether types embed parallel arrays. Whether or not a type or value is associated with a vectorised version is ''not'' sufficient to decide on the presence of embedded parallelism. In particular, every higher-order function must be vectorised as its execution may involve parallel computations if any of its functional arguments involve parallel computation. Nevertheless, the higher-order function itself may be purely scalar. An example is function application itself: 
     8{{{ 
     9($) :: (a -> b) -> a -> b 
     10f $ a = f a 
     11}}} 
     12It clearly, does not directly include any data parallelism, but `mapP f $ arr` invariably does. 
    513 
    614== The basic VECTORISE pragma for values ==