Re: Time taken to push. Adjusting MPI parameter for processor affinity. No effect.
mark starnes <m.starnes05 <at> imperial.ac.uk>
2008-11-09 09:24:13 GMT
Hi Brian,
I see. I changed from a push, to a, 'save to /tmp/filename, all engines
read from /tmp/filename', arrangement, and got a factor of 1000 speed up.
Thanks!
I would be interested in knowing how to call MPI from within IPython,
could you point me to a simple example? Is there an Mpi4Py
manual? (I noticed the Mpi4Py site appears to be a regular
target for vandalism - how annoying).
The algorithm builds a list of finite element objects (a few 10's of
thousands, each containing shape functions etc). The elements
then update themselves for the required analysis frequency, a system
stiffness matrix and vector is built, boundary conditions applied, then
the matrix and vector are solved. I wanted to build the list on one processor,
push the list to all the others, followed by different frequencies
to each processor. The solutions would be pulled back on completion,
and new frequencies sent out, as required. It's not fine grained
parallelisation but it used the multi-processor machine I have access to.
Optimally, I would have liked to have used a more finely grained approach;
chopping the list into different segments over all the processors, performing
the frequency update, build, applied the b/c, and solved (keeping the system
matrix spread around the processors) but haven't got as far as finding a
matrix solver that would deal with the system matrix being spread around
this way. This approach would result in the shared memory of each node
being used more efficiently, allowing for larger jobs. If you know of a
solver that can do this, that would be very good news!
(Continue reading)