[patch] Optimizations for distributed expressions and parallel assignment

Jules Bergmann jules at codesourcery.com
Wed Jul 19 14:08:21 UTC 2006


This patch has two optimizations for distributed/parallel operation:

  - Optimizes the handling distributed expressions (such as A = B + C,
    where A, B, and C have non-local maps).

    When all views have the same map, these expressions are reduced
    to local expressions on each processor.  The performance difference
    between the global and a corresponding local expression is due to
    the overhead of checking the maps for equivalence. Previously, this
    equivalence check was inefficient, creating a large amount of
    overhead.

    This patch optimizes the equivalence check in several ways.
    First, map data has been moved into a separate reference counted
    Map_data class.  In the common case that two map's share the same
    Map_data reference, they are equivalent.   Second, if the maps
    do not share the same Map_data, the comparison now takes into
    account the applied dimension of the maps so that only their
    relevant dimensions are actually compared.

    The patch also optimizes the dispatch-assign handling of
    distributed expressions to avoid creating temporary views, which
    creates reference counting overhead.

  - Optimizes the handling of distributed assignments by reducing
    overhead when replaying the send, recv, and copy command lists.

It also has a number of misc fixes and new functionality:
  - Adds several SAL wrappers for scalar-vector multiply and add.
  - Fix wrong libray tags in simd/eval-generic (Thanks Stefan)
  - Check that operation lengths are greater than zero before calling
    some IPP routines.
  - Avoids using GCC vector intrinsics, which aren't portable to ICC.
  - several others

				-- Jules

-- 
Jules Bergmann
CodeSourcery
jules at codesourcery.com
(650) 331-3385 x705
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: assign.diff
URL: <http://sourcerytools.com/pipermail/vsipl++/attachments/20060719/bfe25234/attachment.ksh>


More information about the vsipl++ mailing list