On 29 September 2013 17:46, Øyvind Evju <[email protected]> wrote:
> From a quad core @ 2.20ghz, calling the mesh.hash() function.
>

Please post test code.

Garth

> One process:
>      Cells ---   Time (s)
>        750 --- 0.0001020432
>      93750 --- 0.0019581318
>     546750 --- 0.0110230446
>    1647750 --- 0.0335328579
>    3684750 --- 0.0734529495
>    6945750 --- 0.1374619007
>   11718750 --- 0.2321729660
>   18291750 --- 0.3683109283
>   26952750 --- 0.5321540833
>   37989750 --- 0.7479040623
>   51690750 --- 1.0299670696
>   68343750 --- 1.3440520763
>   88236750 --- 1.7490680218
>
> Two processes:
>      Cells ---   Time (s)
>        750 --- 0.0002639294
>      93750 --- 0.0011038780
>     546750 --- 0.0128669739
>    1647750 --- 0.0124230385
>    3684750 --- 0.0274820328
>    6945750 --- 0.0780282021
>   11718750 --- 0.1386530399
> (Out of memory)
>
>
> -Øyvind
>
>
>
>
> 2013/9/29 Garth N. Wells <[email protected]>
>
>> On 29 September 2013 17:12, Øyvind Evju <[email protected]> wrote:
>> > Wouldn't it be quite messy to suddenly have several vectors associated
>> > with
>> > a Function?
>> >
>>
>> No. It's very natural for a time-dependent Function.
>>
>> > Creating a hash of the mesh and finite element and storing cells,
>> > cell_dofs
>> > and x_cell_dofs there, we could keep the same structure for Functions as
>> > today with links (instead of actual data sets) within each Function to
>> > cells, cell_dofs and x_cell_dofs.
>> >
>> > When writing a Function a check is done to see if the cells, cell_dofs
>> > and
>> > x_cell_dofs exist under the relevant hash. If the hash (mesh,
>> > distribution
>> > or function space) changes, we need to write these data sets under the
>> > new
>> > hash.
>> >
>> > Have I misunderstood this hashing? It does seem to be very efficient,
>> > more
>> > efficient than rewriting those three datasets.
>> >
>>
>> Can you post a benchmark for testing the speed of hashing?
>>
>> Garth
>>
>> >
>> > -Øyvind
>> >
>> >
>> >
>> > 2013/9/28 Chris Richardson <[email protected]>
>> >>
>> >> On 28/09/2013 13:29, Garth N. Wells wrote:
>> >>>
>> >>> On 28 September 2013 12:56, Chris Richardson <[email protected]>
>> >>> wrote:
>> >>>>
>> >>>> On 28/09/2013 11:31, Garth N. Wells wrote:
>> >>>>>
>> >>>>>
>> >>>>> On 28 September 2013 10:42, Chris Richardson <[email protected]>
>> >>>>> wrote:
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> This is a continuation of the discussion at:
>> >>>>>>
>> >>>>>> https://bitbucket.org/fenics-project/dolfin/pull-request/52
>> >>>>>>
>> >>>>>> The question is how best to save a time-series of Function in HDF5,
>> >>>>>> when
>> >>>>>> the
>> >>>>>> cell and dof layout remains constant.
>> >>>>>>
>> >>>>>> It has been suggested to use:
>> >>>>>>
>> >>>>>> u = Function(V)
>> >>>>>> h0 = HDF5File('Timeseries_of_Function.h5', 'w')
>> >>>>>> h0.write(u, '/Function')
>> >>>>>> # Then later
>> >>>>>> h0.write(u.vector(), "/Vector/0")
>> >>>>>> h0.write(u.vector(), "/Vector/1")
>> >>>>>>
>> >>>>>
>> >>>>> Shouldn't this be
>> >>>>>
>> >>>>>     h0.write(u.vector(), "/Function/Vector/0")
>> >>>>>     h0.write(u.vector(), "/Function/Vector/1")
>> >>>>>
>> >>>>
>> >>>> In the HDF5File model, the user is free to put vectors etc wherever
>> >>>> they
>> >>>> want. There is no explicit meaning
>> >>>> to dumping extra vectors inside the "group" of a Function.
>> >>>>
>> >>>>
>> >>>>>
>> >>>>>> and to read back:
>> >>>>>>
>> >>>>>> u = Function(V)
>> >>>>>> h0 = HDF5File('Timeseries_of_Function.h5', 'r')
>> >>>>>> h0.read(u, "/Function")
>> >>>>>> h0.read(u.vector(), "/Function/vector")
>> >>>>>>
>> >>>>
>> >>>> OK, this probably should have been
>> >>>>
>> >>>> h0.read(u.vector(), "/Vector/1")
>> >>>>
>> >>>> When reading in a vector, it is just read directly, and
>> >>>> not reordered in any way. If the vector was saved from a different
>> >>>> set
>> >>>> of
>> >>>> processors, with different partitioning, the order could be quite
>> >>>> different.
>> >>>>
>> >>>> When reading a Function, the vector is reordered to take this into
>> >>>> account.
>> >>>>
>> >>>> If the vector is already associated with a Function (not all vectors
>> >>>> are)
>> >>>> then it should be possible to reorder it when reading... maybe that
>> >>>> should
>> >>>> be an option.
>> >>>>
>> >>>
>> >>> A solution seems very simple - use the HDF5 hierarchal structure to
>> >>> associate Vectors with a Function. This is the advantage of using a
>> >>> hierarchal storage format.
>> >>>
>> >>> If a user reads a Vector that is not already associated with a
>> >>>
>> >>> Function, then it should be the user's responsibility to take care of
>> >>> things.
>> >>>
>> >>
>> >> It could work like this:
>> >>
>> >> At present, when writing a Function, it creates a group and populates
>> >> it
>> >> with
>> >> dofmap, cells, and vector. Writing again with the same name will cause
>> >> an
>> >> error.
>> >> We could allow writes to the same name, but create more vectors (maybe
>> >> checking that the cells/dofs are still compatible) in the same HDF5
>> >> group.
>> >> Or, a user could just manually dump more vectors in the group (as
>> >> described
>> >> above by Garth).
>> >>
>> >> For read, reading a Function will still behave the same, but we could
>> >> have
>> >> the additional option of reading a Function by just giving the vector
>> >> dataset name - and assuming that cell/dof information exists in the
>> >> same
>> >> HDF5 group. This should be fairly easy to implement.
>> >>
>> >>
>> >> Chris
>> >>
>> >> _______________________________________________
>> >> fenics mailing list
>> >> [email protected]
>> >> http://fenicsproject.org/mailman/listinfo/fenics
>> >
>> >
>> >
>> > _______________________________________________
>> > fenics mailing list
>> > [email protected]
>> > http://fenicsproject.org/mailman/listinfo/fenics
>> >
>
>
>
> _______________________________________________
> fenics mailing list
> [email protected]
> http://fenicsproject.org/mailman/listinfo/fenics
>
_______________________________________________
fenics mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics

Reply via email to