Closed sf-issues closed 10 years ago
Submitted by jbednar Date: 2008-11-03 09:53 GMT
Oops; cut and paste error --
| Due to their weakly interconnected graph structure, Topographica | models lend themselves naturally to coarse-grained parallelization. | Each event processor (e.g. a Projection, or in some cases a Sheet) | can run on a different physical processor,
Projections are not currently event processors; this should have said 'each time-consuming component'. Making Projections be EventProcessors is something we have considered, as noted in the initial message, but they are not currently implemented that way.
Submitted by jbednar Date: 2011-10-03 15:59 GMT
Assigned to dobromir, as he'll make sure that it's all integrated properly, but of course Konstantin and Marco have done the actual implementation.
Submitted by ceball Date: 2011-10-25 10:51 GMT
-- OpenMP
"openmp does not work with gcal" https://sourceforge.net/tracker/?func=detail&aid=3427986&group_id=53602&atid=470929
"openmp: support optimized learning and output functions" https://sourceforge.net/tracker/?func=detail&aid=3427990&group_id=53602&atid=470932
-- MPI
Need to integrate Konstantin's changes. I'm working with Konstantin at the moment to clean up Konstantin's changes. Once the changes are small enough to be able to understand what to do with them, I'll post back here.
Submitted by ceball Date: 2011-10-25 23:00 GMT
Task missed for OpenMP: documentation in the user manual! Currently, the only documentation of openmp is in the comments of topo/misc/inlinec.py.
(For MPI, I hope to get documentation from Konstantin...)
Submitted by ceball Date: 2012-04-02 23:35 GMT
I'm dealing with MPI support.
Any news about the MPI version?
Converted from SourceForge issue 2218586, submitted by jbednar Submit Date: 2008-11-03 09:43 GMT
Due to their weakly interconnected graph structure, Topographica models lend themselves naturally to coarse-grained parallelization. Each event processor (e.g. a Projection, or in some cases a Sheet) can run on a different physical processor, exchanging information with other event processors using either shared memory or message passing protocols such as MPI.
Implementing this type of parallelization is not likely to require significant changes to the simulator, though it does require some thought to avoid some tricky issues. Our current plan is to do it using proxies for each Projection, so that the actual computation is done on a remote processor but the same interface is maintained at a master node. At first this would only be able to use as many processors as there are Projections in the simulation, but it could then be generalized to handle more fine-grained parallelism without much additional work. We would probably want to have a parallel Simulator class that would set up the Projection proxies automatically, perhaps chosen at startup using a command-line option.
For a shorter-term payoff, we could consider using some automatic parallel libraries, such as a BLAS implementation (like ATLAS or MKL or GOTO) that parallelizes numpy.dot. For more info on this and other numpy-specific ideas, see http://www.scipy.org/ParallelProgramming .
Below is an email discussion that might be useful when getting started, though some of it may be out of date.
Jim