Am 25.04.2014 18:13, schrieb Alan Bromborsky:
Has anyone had any experience in using parallel python with sympy. It
seems to me that there are probably a lot of loops that have independent
operations.
I'm unsure whether it's possible.
Multithreading becomes problematic as soon as you have shared updatable
data structures.
Parallelizing stuff within a SymPy computation would require explicitly
forking off threads in the various algorithms; I do not think SymPy does
that.
I'm not sure whether SymPy's expression transformation algorithms do
in-place updates or construct new trees. If it's the former, any attempt
at parallelization will crash horribly.
A potentially huge, potentially nonexistent problem are SymPy's value
caches. SymPy creates considerable amounts of precalculated constants -
Pi, a prime sieve, known integrals, that kind of stuff. Creation happens
on-demand; I do not know what happens if two threads try to create the
same constant at the same time. Possible outcomes:
- Just duplicate effort, everything works.
- Duplicate effort and constant is stored twice (some constants are
large, so that's not so good but workable - this MIGHT break code that
compares against these constants using == though).
- Things crash horribly (but at least you know that it failed).
- Silent errors, wrong results.
Since SymPy is CPU-bound, Python implementations that use the global
interpreter lock might see a minimal speedup (thread A continues while
thread B waits for a file operation) -> not worth it.
Other Python implementations might work better. Still, the common caches
are going to create lock contention between threads, at least initially
while SymPy is still creating constants; later on, when the constants
are read-only, this should become a nonissue, so use large-ish problems
when benchmarking.
(Sorry for jumping in so late, I missed the original question.)
--
You received this message because you are subscribed to the Google Groups
"sympy" 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/sympy.
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/535F512B.8040607%40durchholz.org.
For more options, visit https://groups.google.com/d/optout.