#18529: Topological manifolds: basics
-------------------------------------+-------------------------------------
Reporter: egourgoulhon | Owner: egourgoulhon
Type: enhancement | Status: needs_info
Priority: major | Milestone: sage-6.10
Component: geometry | Resolution:
Keywords: topological | Merged in:
manifolds | Reviewers: Travis Scrimshaw
Authors: Eric Gourgoulhon, | Work issues:
Travis Scrimshaw | Commit:
Report Upstream: N/A | 0fb39df7fafe7f0a765bf73b3f34a6cb41e65c40
Branch: | Stopgaps:
u/tscrim/top_manifolds_refactor |
Dependencies: #18175 |
-------------------------------------+-------------------------------------
Changes (by egourgoulhon):
* cc: mmancini (added)
Comment:
Replying to [comment:75 tscrim]:
> I think what we will have to do is one (or more) of the following:
>
> - implement custom multiprocessing,
> - move the parallelization code into the scalar fields algebra,
> - implement a custom coercion scheme by overriding `__add__`, etc., or
> - improve coercion support for non-`UniqueRepresentation` objects.
>
> I think the first or second option will be the best possibility for this
to work.
The first looks to me much better than the second one: the nice feature of
the parallelization framework as implemented in #18100 is that it is
implemented at the `Components` level, i.e. for any indexed set of ring
elements, whatever the ring. It sounds bad to redefine this for the
special case where the ring is an algebra of scalar fields. I shall
discuss with Marco about implementing some multiprocessing that does not
rely on pickling.
Another solution would be to revert to `UniqueRepresentation` for
manifolds (once again!). Since now the user creates manifolds via the
front-end function `Manifold` and not by a direct call to the manifold
class constructor, the main issue raised at the end of comment:31 could be
overcome by the handling of the cache in `Manifold`. In this way
{{{
sage: M1 = Manifold(2, 'M')
sage: M2 = Manifold(2, 'M')
}}}
would result in two different objects, as desired, but
{{{
sage: M1 == loads(dumps(M1))
}}}
would still work, because the unpickling does not go through the function
`Manifold`.
There remains the issue with `UniqueRepresentation` raised by Nils Bruin
in the [https://groups.google.com/d/msg/sage-
devel/Vzfj1haZHho/sLfOJ3ujBQAJ sage-devel thread]: ''Avoid
!UniqueRepresentation if you can. It requires expensive processing of
construction parameters and hence introduces bad overhead and it
introduces "global variables" in a way that is much worse than global
variables.''
However, in a typical work session, one should not create so many
manifolds, so the "expensive processing of construction parameters" is not
a too severe issue.
--
Ticket URL: <http://trac.sagemath.org/ticket/18529#comment:76>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.