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 ==