freepooma-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [pooma-dev] Sparse Engine


From: Richard Guenther
Subject: Re: [pooma-dev] Sparse Engine
Date: Fri, 26 Sep 2003 10:07:37 +0200 (CEST)

Ok, still trying to understand - this is something like (statically)
specifying which cells participate in computation? Like you would
have a usual brick engine in conjunction with a bitfield specifying
a mask and using this in the evaluator loop (of course this would be
less memory efficient)? So this would be a cheap way to do this
compared to using the sparse tile layout?

Thanks,

Richard.

On Fri, 26 Sep 2003, John H.Hall wrote:

> Richard:
> OK. Here goes. The basic idea is that we have a hierarchical field
> structure (built using hierarchical engines similar to the current
> multi-material field abstraction) which has a collection of 1-D
> dynamicFields (for the sparse unstructured storage), a shared Index
> (n-D) integer Array (or Field), and a single (n-D) scalar, vector or
> tensor field which has either the data for a pure cell, or a cell
> average value for mixed-material cell's data. As the problem evolves
> the material interfaces migrate and so the actual position of the
> unstructured cells changes. However, all the indirect indexing is still
> local to the processor (except for normal guard cell communications).
> So this is much simpler than a real unstructured problem with
> all-to-all communications. In the general case, the sparse dynamic
> fields are only used to compute the cell-average quantities before a
> data-parallel computation across the single multi-material or
> cell-average field is performed. We would also like to take some views
> of the field in which all of the data for a particular material is
> gathered/scattered to/from a single spare dynamic work Array that is
> shared in this hierarchical structure.
>
> Field<Mesh_t, Real, MixedCellEngine> would look like this:
> ___________________
> |__________________| Single material Gather/Scatter 1-D Dynamic Work
> Array (both mixed and pure cells)
> ______
> |_____| mat A (1-D Dynamic Array/Field)
> _______
> |______| mat B (1-D Dynamic Array/Field)
> ______
> |_____| mat C (1-D Dynamic Array/Field)
> _______________________________________________________________________
> |______________________________________________________________________|
>   Cell Average Quantities (n-D)
> _______________________________________________________________________
> |______________________________________________________________________|
>   Integer Index Array (n-D)
> Single Index Array is shared by all Sparse Fields (e.g. Density,
> Pressure, etc.). This shares duty between
> providing the material index for a pure cell and an offset into a
> collection tracking the unstructured
> mixed cell data for a mixed cell.
>
> Multi-Patch should still work although the guard cell communications
> might be slightly more complicated.
>
> The number of cells which are indirectly addressed is very small (< 5%
> of the total) so even using compressible brick we are wasting a lot of
> memory bandwidth and performing numerous extraneous computations. A
> comparison code using this structure is running 20 times faster than
> the equivalent data parallel POOMA R1 computation for the single
> processor serial case. We believe we can match that performance by
> building an engine that encapsulates the sparse nature reflected in the
> problem and by making more use of the new engines POOMA R2 provides
> (stencil, etc.).
>
> Again, most of the computations are performed on the Cell-Average
> Quantities, so we just take a view, operator[]?, that returns that
> single field.
> John and Jean

--
Richard Guenther <richard dot guenther at uni-tuebingen dot de>
WWW: http://www.tat.physik.uni-tuebingen.de/~rguenth/

reply via email to

[Prev in Thread] Current Thread [Next in Thread]