Hi all,

as the title suggest I am involved in a project which may involve  
parallelising the code of Giza++ so that it will run on supercomputers  
scalably on n number of processors. This would have obvious benefits  
to any researchers making regular use of Giza++ who would like it to  
finish in minutes rather than hours.

The first step of such a project was profiling Giza++ to see where the  
executable spends most of its time on a typical run. Such profiling  
indicated a number of candidate functions. One of which was  
model1::em_loop found in the model1.cpp file.

In order to parallelise such a function (using OpenMPI) it is  
necessary to first come up with some kind of data decomposition  
strategy which minimizes the latency of interprocessor communication  
but ensures that the parallelisation has no side effects other than  
running faster on a number of processors up to some optimal number of  
processors where the latency of communication begins to outweigh the  
benefits of throwing more processors at the job.

In order to do this I am trying to gain an understanding of the logic  
in the model1::em_loop function. However, intuitive comments are  
lacking in the code. Does anyone on this list have a good internal  
knowledge of this function? Enough to give a rough outline of the  
logic it contains in some kind of readable pseudocode?

Thanks

P.S. Apologies to anybody to whom this email was not of interest.

-- 
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.



_______________________________________________
Moses-support mailing list
[email protected]
http://mailman.mit.edu/mailman/listinfo/moses-support

Reply via email to