[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