Changes between Version 4 and Version 5 of DataParallel/VectPragma


Ignore:
Timestamp:
Jun 21, 2011 1:35:48 PM (4 years ago)
Author:
chak
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DataParallel/VectPragma

    v4 v5  
    1212{-# VECTORISE f = e #-} 
    1313}}} 
    14 then the vectoriser defines `f_v = e` and refrains from rebinding `f`.  This implies that for `f :: t`, `e`'s type is the `t` vectorised (in particular), `e`'s type uses the array closure type `(:->)` instead of the vanilla function space `(->)`. 
     14then the vectoriser defines `f_v = e` and refrains from rebinding `f`.  This implies that for `f :: t`, `e`'s type is the `t` vectorised (in particular), `e`'s type uses the array closure type `(:->)` instead of the vanilla function space `(->)`.  The vectoriser checks that `e` has the appropriate type. 
    1515 
     16'''Caveat:''' Currently, the type is indeed checked by the vectoriser by comparing Core types.  It would be better to perform that check in the type checker to instantiate the type of `f_v` appropriately if it is overly general.  At the moment, the vectorised version of `t` and the inferred type of `e` need to exactly match up (including all dictionaries ''and their order''). 
    1617 
    1718== The NOVECTORISE pragma == 
     
    2425 
    2526'''Caveat:''' If `f`'s definition contains bindings that are being floated to the toplevel, those bindings will still be vectorised. 
     27 
    2628 
    2729== VECTORISE SCALAR ==